Skip to main content

Crate model_context_protocol

Crate model_context_protocol 

Source
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 features
  • stdio - Stdio transport for spawning server processes
  • http - HTTP transport for connecting to HTTP servers
  • http-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;stdio
pub use stdio::StdioTransport;stdio
pub use stdio::StdioTransportAdapter;stdio
pub use http::HttpTransport;http
pub use http::HttpTransportAdapter;http
pub use macro_adapter::MacroServer;macros
pub use macro_adapter::MacroServerAdapter;macros

Modules§

httphttp
HTTP Transport for MCP Servers
hub
McpHub - Central hub for MCP tool routing across multiple servers.
macro_adaptermacros
Adapter for macro-generated MCP servers.
macrosmacros
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.
stdiostdio
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.