Server Architecture
rust-mcp-sdk provides two levels of server handler abstraction.
Handler Traitsโ
| Trait | Use Case |
|---|---|
ServerHandler | Recommended - override only the methods you need |
ServerHandlerCore | Advanced - three raw methods for full control |
McpServer Traitโ
The McpServer trait is injected into every handler method via Arc<dyn McpServer>, providing:
server_info()- server identity and capabilitiesclient_info()- connected client detailssession_id()- session identifier (HTTP backends)auth_info()- current authentication datatask_store()/client_task_store()- MCP Tasks supportrequest_message_creation()- LLM sampling requestsrequest_elicitation()- user input elicitationnotify_*()methods - send notifications to the client
Server Runtimesโ
| Transport | Function |
|---|---|
| Stdio | server_runtime::create_server() or server_runtime_core::create_server() |
| Streamable HTTP (Axum) | create_axum_server() |
| Streamable HTTP (Actix) | create_actix_server() |