mcpkit-server 0.2.0

Server implementation for mcpkit
Documentation

Server implementation for the MCP SDK.

This crate provides the server-side implementation for the Model Context Protocol. It includes composable handler traits, a fluent builder API, and request routing.

Overview

Building an MCP server involves:

  1. Implementing the [ServerHandler] trait (required)
  2. Implementing optional capability traits ([ToolHandler], [ResourceHandler], etc.)
  3. Using [ServerBuilder] to create a configured server
  4. Running the server with a transport

Example

use mcpkit_server::{ServerBuilder, ServerHandler};
use mcpkit_core::capability::{ServerInfo, ServerCapabilities};

struct MyServer;

impl ServerHandler for MyServer {
    fn server_info(&self) -> ServerInfo {
        ServerInfo::new("my-server", "1.0.0")
    }

    fn capabilities(&self) -> ServerCapabilities {
        ServerCapabilities::new().with_tools()
    }
}

let server = ServerBuilder::new(MyServer).build();
assert!(server.capabilities().has_tools());

Handler Traits

The server uses composable handler traits:

  • [ServerHandler]: Core trait required for all servers
  • [ToolHandler]: Handle tool discovery and execution
  • [ResourceHandler]: Handle resource discovery and reading
  • [PromptHandler]: Handle prompt discovery and rendering
  • [TaskHandler]: Handle long-running task operations
  • [SamplingHandler]: Handle server-initiated LLM requests
  • [ElicitationHandler]: Handle structured user input requests

Context

Handlers receive a [Context] that provides:

  • Request metadata (ID, progress token)
  • Client and server capabilities
  • Cancellation checking
  • Progress reporting
  • Notification sending