Crate pmcp

Crate pmcp 

Source
Expand description

§MCP SDK for Rust

A high-quality Rust implementation of the Model Context Protocol (MCP) SDK.

This crate provides both client and server implementations of MCP with:

  • Full protocol compatibility with the TypeScript SDK
  • Zero-copy parsing where possible
  • Comprehensive type safety
  • Multiple transport options (stdio, HTTP/SSE, WebSocket)
  • Built-in authentication support

§Quick Start

§Client Example

use pmcp::{Client, StdioTransport, ClientCapabilities};

// Create a client with stdio transport
let transport = StdioTransport::new();
let mut client = Client::new(transport);

// Initialize the connection
let server_info = client.initialize(ClientCapabilities::default()).await?;

// List available tools
let tools = client.list_tools(None).await?;

§Server Example

use pmcp::{Server, ServerCapabilities, ToolHandler};
use async_trait::async_trait;
use serde_json::Value;

struct MyTool;

#[async_trait]
impl ToolHandler for MyTool {
    async fn handle(&self, args: Value, _extra: pmcp::RequestHandlerExtra) -> Result<Value, pmcp::Error> {
        Ok(serde_json::json!({"result": "success"}))
    }
}

let server = Server::builder()
    .name("my-server")
    .version("1.0.0")
    .capabilities(ServerCapabilities::default())
    .tool("my-tool", MyTool)
    .build()?;

// Run with stdio transport
server.run_stdio().await?;

Re-exports§

pub use client::Client;
pub use client::ClientBuilder;
pub use error::Error;
pub use error::ErrorCode;
pub use error::Result;
pub use server::cancellation::RequestHandlerExtra;
pub use server::PromptHandler;
pub use server::ResourceHandler;
pub use server::SamplingHandler;
pub use server::Server;
pub use server::ServerBuilder;
pub use server::ToolHandler;
pub use shared::StdioTransport;
pub use shared::batch::BatchRequest;
pub use shared::batch::BatchResponse;
pub use shared::uri_template::UriTemplate;
pub use shared::AuthMiddleware;
pub use shared::LoggingMiddleware;
pub use shared::Middleware;
pub use shared::MiddlewareChain;
pub use shared::RetryMiddleware;
pub use shared::Transport;
pub use shared::WebSocketConfig;
pub use shared::WebSocketTransport;
pub use shared::HttpConfig;
pub use shared::HttpTransport;
pub use types::AuthInfo;
pub use types::AuthScheme;
pub use types::CallToolRequest;
pub use types::CallToolResult;
pub use types::ClientCapabilities;
pub use types::ClientNotification;
pub use types::ClientRequest;
pub use types::CompleteRequest;
pub use types::CompleteResult;
pub use types::CompletionArgument;
pub use types::CompletionReference;
pub use types::Content;
pub use types::CreateMessageParams;
pub use types::CreateMessageRequest;
pub use types::CreateMessageResult;
pub use types::GetPromptResult;
pub use types::Implementation;
pub use types::IncludeContext;
pub use types::ListResourcesResult;
pub use types::ListToolsResult;
pub use types::LoggingLevel;
pub use types::MessageContent;
pub use types::ModelPreferences;
pub use types::ProgressNotification;
pub use types::ProgressToken;
pub use types::PromptMessage;
pub use types::ProtocolVersion;
pub use types::ReadResourceResult;
pub use types::RequestId;
pub use types::ResourceInfo;
pub use types::Role;
pub use types::RootsCapabilities;
pub use types::SamplingCapabilities;
pub use types::SamplingMessage;
pub use types::ServerCapabilities;
pub use types::ServerNotification;
pub use types::ServerRequest;
pub use types::TokenUsage;
pub use types::ToolCapabilities;
pub use types::ToolInfo;
pub use utils::BatchingConfig;
pub use utils::DebouncingConfig;
pub use utils::MessageBatcher;
pub use utils::MessageDebouncer;

Modules§

client
MCP client implementation.
error
Error types for the MCP SDK.
server
MCP server implementation.
shared
Shared components used by both client and server.
simd
SIMD optimizations for PMCP performance-critical operations Provides vectorized implementations of JSON parsing and string operations
types
Core protocol types for MCP.
utils
Utility modules for the MCP SDK.

Macros§

context_or_new
Macro to get current context or create new one.
debug_correlated
Log debug with correlation.
error_correlated
Log error with correlation.
info_correlated
Log info with correlation.
log_correlated
Helper macros for correlated logging.
warn_correlated
Log warning with correlation.
with_context
Macro to run code with request context.

Constants§

DEFAULT_PROTOCOL_VERSION
Default protocol version to use for negotiation
DEFAULT_REQUEST_TIMEOUT_MS
Default request timeout in milliseconds
LATEST_PROTOCOL_VERSION
Protocol version constants
SUPPORTED_PROTOCOL_VERSIONS
List of all protocol versions supported by this SDK

Functions§

log
Server-side logging function (placeholder for examples).

Attribute Macros§

async_trait