Expand description
§MCP - Model Context Protocol
A Rust implementation of the Model Context Protocol (MCP) for AI tool integration.
This crate provides the infrastructure for communicating with MCP servers via stdio/HTTP transports.
§Features
- McpHub: Central hub for managing multiple MCP server connections
- Multiple Transports: Support for stdio and HTTP-based MCP servers
- Tool Routing: Automatic routing of tool calls to the correct server
- Macros:
#[mcp_tool]for easy tool definitions from functions
§Quick Start - Creating a Server
ⓘ
use mcp::macros::mcp_tool;
use mcp::{McpServerConfig, McpServer};
// Define tools as simple functions
#[mcp_tool(description = "Add two numbers")]
fn add(a: f64, b: f64) -> f64 { a + b }
#[mcp_tool(description = "Subtract two numbers")]
fn subtract(a: f64, b: f64) -> f64 { a - b }
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = McpServerConfig::builder()
.name("calculator")
.version("1.0.0")
.with_stdio_transport()
.with_tools(tools![AddTool, SubtractTool])
.build();
McpServer::run(config).await?;
Ok(())
}§Connecting to Servers
ⓘ
use mcp::{McpHub, McpServerConnectionConfig};
let hub = McpHub::new();
// Connect to an external server
let config = McpServerConnectionConfig::stdio("my-server", "node", vec!["server.js".into()]);
hub.connect(config).await?;
// List available tools
let tools = hub.list_all_tools().await?;§Feature Flags
default- Enables stdio, http, and macros featuresstdio- Stdio transport for spawning server processeshttp- HTTP transport for connecting to HTTP servershttp-server- HTTP server with actix-web (for hosting MCP servers)macros- Procedural macros for defining tools
Re-exports§
pub use protocol::CallToolParams;pub use protocol::CallToolResult;pub use protocol::JsonRpcError;pub use protocol::JsonRpcId;pub use protocol::JsonRpcPayload;pub use protocol::JsonRpcRequest;pub use protocol::JsonRpcResponse;pub use protocol::ListToolsParams;pub use protocol::ListToolsResult;pub use protocol::McpCapabilities;pub use protocol::McpServerInfo;pub use protocol::McpToolDef;pub use protocol::ToolContent;pub use protocol::ToolDefinition;pub use protocol::ToolInputSchema;pub use protocol::MCP_PROTOCOL_VERSION;pub use transport::ClientInfo;pub use transport::InitializeCapabilities;pub use transport::InitializeParams;pub use transport::InitializeResult;pub use transport::McpServerConnectionConfig;pub use transport::McpTransport;pub use transport::McpTransportError;pub use transport::ServerCapabilities;pub use transport::ServerInfo;pub use transport::TransportTypeId;pub use result::error_result;pub use result::success_result;pub use result::tool_err;pub use result::tool_ok;pub use result::IntoCallToolResult;pub use result::ToolResult;pub use tool::all_tools;pub use tool::tools_in_group;pub use tool::BoxFuture;pub use tool::DynTool;pub use tool::FnTool;pub use tool::McpTool;pub use tool::ToolCallResult;pub use tool::ToolEntry;pub use tool::ToolFactory;pub use tool::ToolProvider;pub use tool::ToolRegistry;pub use server::McpServer;pub use server::McpServerConfig;pub use server::McpServerConfigBuilder;pub use server::ServerError;pub use server::ServerTransport;pub use hub::McpHub;pub use stdio::AsyncStdioTransport;stdiopub use stdio::StdioTransport;stdiopub use stdio::StdioTransportAdapter;stdiopub use http::HttpTransport;httppub use http::HttpTransportAdapter;httppub use macro_adapter::MacroServer;macrospub use macro_adapter::MacroServerAdapter;macros
Modules§
- http
http - HTTP Transport for MCP Servers
- hub
- McpHub - Central hub for MCP tool routing across multiple servers.
- macro_
adapter macros - Adapter for macro-generated MCP servers.
- macros
macros - Procedural macros for defining MCP servers and tools.
- protocol
- MCP JSON-RPC Protocol Types
- result
- Result types for MCP tool implementations.
- server
- MCP Server configuration and runtime.
- stdio
stdio - Stdio Transport for MCP Servers
- tool
- Tool traits and types for MCP servers.
- transport
- McpTransport - Abstract transport interface for MCP servers.
Macros§
- fn_tool
- Helper macro for creating tools from async functions.
- tools
- Creates a vector of tools from tool types.
Constants§
- PROTOCOL_
VERSION - Current MCP protocol version supported by this crate.
- VERSION
- Crate version.