Expand description
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:
- Implementing the
ServerHandlertrait (required) - Implementing optional capability traits (
ToolHandler,ResourceHandler, etc.) - Using
ServerBuilderto create a configured server - 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 serversToolHandler: Handle tool discovery and executionResourceHandler: Handle resource discovery and readingPromptHandler: Handle prompt discovery and renderingTaskHandler: Handle long-running task operationsSamplingHandler: Handle server-initiated LLM requestsElicitationHandler: 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
Re-exports§
pub use builder::FullServer;pub use builder::MinimalServer;pub use builder::NotRegistered;pub use builder::Registered;pub use builder::Server;pub use builder::ServerBuilder;pub use context::CancellationToken;pub use context::CancelledFuture;pub use context::Context;pub use context::ContextData;pub use context::NoOpPeer;pub use context::Peer;pub use handler::CompletionHandler;pub use handler::ElicitationHandler;pub use handler::LogLevel;pub use handler::LoggingHandler;pub use handler::PromptHandler;pub use handler::ResourceHandler;pub use handler::SamplingHandler;pub use handler::ServerHandler;pub use handler::TaskHandler;pub use handler::ToolHandler;pub use metrics::MethodStats;pub use metrics::MetricsSnapshot;pub use metrics::ServerMetrics;pub use router::route_prompts;pub use router::route_resources;pub use router::route_tools;pub use server::RequestRouter;pub use server::RuntimeConfig;pub use server::ServerRuntime;pub use server::ServerState;pub use server::TransportPeer;
Modules§
- builder
- Fluent server builder for MCP servers.
- capability
- Capability handlers for MCP servers.
- context
- Request context for MCP handlers.
- handler
- Composable handler traits for MCP servers.
- metrics
- Server-level metrics for MCP servers.
- prelude
- Prelude module for convenient imports.
- router
- Request routing for MCP servers.
- server
- Server runtime for MCP servers.
- state
- Typestate connection management for MCP servers.