#model-context-protocol #mcp #llm

pmcp

High-quality Rust SDK for Model Context Protocol (MCP) with full TypeScript SDK compatibility

44 releases (stable)

new 1.10.2 Feb 6, 2026
1.9.4 Jan 7, 2026
1.9.1 Dec 30, 2025
1.8.6 Nov 29, 2025
0.3.1 Jul 26, 2025

#81 in Network programming

Download history 2047/week @ 2025-10-23 2327/week @ 2025-10-30 1729/week @ 2025-11-06 508/week @ 2025-11-13 2690/week @ 2025-11-20 363/week @ 2025-11-27 498/week @ 2025-12-04 497/week @ 2025-12-11 144/week @ 2025-12-18 341/week @ 2025-12-25 1085/week @ 2026-01-01 1523/week @ 2026-01-08 1919/week @ 2026-01-15 2156/week @ 2026-01-22 572/week @ 2026-01-29 1909/week @ 2026-02-05

6,809 downloads per month
Used in 14 crates (8 directly)

MIT license

6.5MB
45K SLoC

PMCP - Pragmatic Model Context Protocol

Quality Gate TDG Score Complexity Technical Debt

CI Quality Gate TDG Score Coverage Crates.io Documentation License: MIT Rust 1.82+ MCP Compatible

Production-grade Rust implementation of the Model Context Protocol (MCP) - 16x faster than TypeScript, built with Toyota Way quality principles

Overview

PMCP is a complete MCP ecosystem for Rust, providing everything you need to build, test, and deploy production-grade MCP servers:

  • πŸ¦€ pmcp SDK - High-performance Rust crate with full MCP protocol support
  • ⚑ cargo-pmcp - CLI toolkit for scaffolding, testing, and development
  • πŸ“š pmcp-book - Comprehensive reference guide with 27 chapters
  • πŸŽ“ pmcp-course - Hands-on course with quizzes and exercises
  • πŸ€– AI Agents - Kiro and Claude Code configurations for AI-assisted development

Why PMCP?

  • Performance: 16x faster than TypeScript SDK, 50x lower memory
  • Safety: Rust's type system + zero unwrap() in production code
  • Quality: Toyota Way principles - zero technical debt tolerance
  • Complete: SDK, tooling, documentation, and AI assistance in one ecosystem

Quick Start

Choose your path based on experience and preference:

Build production-ready MCP servers with AI assistance in minutes:

Prerequisites:

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup update

# Install cargo-pmcp
cargo install cargo-pmcp

Install Claude Code AI Agent:

# Install the mcp-developer subagent (user-level - works across all projects)
curl -fsSL https://raw.githubusercontent.com/paiml/rust-mcp-sdk/main/ai-agents/claude-code/mcp-developer.md \
  -o ~/.claude/agents/mcp-developer.md

# Restart Claude Code

Build your server:

You: "Create a weather forecast MCP server with tools for getting current conditions and 5-day forecasts"

Claude Code: [Invokes mcp-developer subagent]

I'll create a production-ready weather MCP server using cargo-pmcp.

$ cargo pmcp new weather-mcp-workspace
$ cd weather-mcp-workspace
$ cargo pmcp add server weather --template minimal

[Implements type-safe tools with validation]
[Adds comprehensive tests and observability]
[Validates quality gates]

βœ… Production-ready server complete with 85% test coverage!

What you get: Production-ready code following Toyota Way principles, with comprehensive tests, structured logging, metrics collection, and zero clippy warnings.

Learn more: AI-Assisted Development Course | AI Agents README


Scaffold and build servers using the cargo-pmcp CLI:

Installation:

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup update

# Install cargo-pmcp
cargo install cargo-pmcp

Create a server:

# Create workspace
cargo pmcp new my-mcp-workspace
cd my-mcp-workspace

# Add a server using a template
cargo pmcp add server myserver --template minimal

# Start development server with hot-reload
cargo pmcp dev --server myserver

# Generate and run tests
cargo pmcp test --server myserver --generate-scenarios
cargo pmcp test --server myserver

# Build for production
cargo build --release

Available templates:

  • minimal - Empty structure for custom servers
  • calculator - Arithmetic operations (learning)
  • complete_calculator - Full-featured reference implementation
  • sqlite_explorer - Database browser pattern

Learn more: cargo-pmcp Guide


πŸ¦€ Path 3: pmcp SDK Directly (For Fine-Grained Control)

Use the pmcp crate directly for maximum control:

Installation:

[dependencies]
pmcp = "1.8"
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive"] }
schemars = "0.8"  # For type-safe tools

Type-safe server example:

use pmcp::{ServerBuilder, TypedTool, RequestHandlerExtra, Error};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};

#[derive(Debug, Deserialize, Serialize, JsonSchema)]
#[schemars(deny_unknown_fields)]
struct WeatherArgs {
    #[schemars(description = "City name")]
    city: String,

    #[schemars(description = "Number of days (1-5)")]
    days: Option<u8>,
}

#[derive(Debug, Serialize, JsonSchema)]
struct WeatherOutput {
    temperature: f64,
    conditions: String,
}

async fn get_weather(args: WeatherArgs, _extra: RequestHandlerExtra) -> pmcp::Result<WeatherOutput> {
    // Validate
    if args.city.is_empty() {
        return Err(Error::validation("City cannot be empty"));
    }

    let days = args.days.unwrap_or(1);
    if !(1..=5).contains(&days) {
        return Err(Error::validation("Days must be 1-5"));
    }

    // Call weather API...
    Ok(WeatherOutput {
        temperature: 72.0,
        conditions: "Sunny".to_string(),
    })
}

#[tokio::main]
async fn main() -> pmcp::Result<()> {
    let server = ServerBuilder::new()
        .name("weather-server")
        .version("1.0.0")
        .tool("get-weather", TypedTool::new("get-weather", |args, extra| {
            Box::pin(get_weather(args, extra))
        }).with_description("Get weather forecast for a city"))
        .build()?;

    server.run_stdio().await?;
    Ok(())
}

Learn more: pmcp-book | pmcp-course | API Documentation


PMCP Ecosystem Components

πŸ¦€ pmcp SDK (The Crate)

High-performance Rust implementation of the MCP protocol.

Key Features:

  • Type-Safe Tools: Automatic JSON schema generation from Rust types
  • Multiple Transports: stdio, HTTP/SSE, WebSocket, WASM
  • OAuth Support: Full auth context pass-through (v1.8.0+)
  • Workflows: Multi-step orchestration with array indexing support
  • Performance: 16x faster than TypeScript, SIMD-accelerated parsing
  • Quality: Zero unwrap(), comprehensive error handling

Latest Version: pmcp = "1.8.3"

Documentation:


⚑ cargo-pmcp (CLI Toolkit)

Scaffolding and development toolkit for MCP servers.

What it does:

  • Scaffold servers in seconds with proven patterns
  • Hot-reload dev server for rapid iteration
  • Generate test scenarios automatically
  • Validate quality gates (fmt, clippy, tests)
  • Deploy to production - AWS Lambda, Google Cloud Run, or Cloudflare Workers
  • Manage deployments - logs, metrics, secrets, rollback

Commands:

cargo pmcp new <workspace>              # Create workspace
cargo pmcp add server <name>            # Add server
cargo pmcp dev --server <name>          # Start dev server
cargo pmcp test --server <name>         # Run tests
cargo pmcp deploy --target <target>     # Deploy to production
cargo pmcp deploy logs --tail           # Stream logs
cargo pmcp deploy destroy --clean       # Remove deployment

Why use it?

  • Encodes best practices from 6 production servers
  • Saves 30-60 minutes vs manual setup
  • Ensures consistent structure across servers
  • Integrated testing and quality validation

Learn more: cargo-pmcp Guide


πŸ“š pmcp-book (Reference Guide)

27-chapter comprehensive reference guide to building MCP servers with pmcp.

πŸ“– Read Online

Coverage:

  • Getting Started: Installation, first server, quick start tutorial
  • Core Concepts: Tools, resources, prompts, error handling
  • Advanced Features: Auth, transports, middleware, progress tracking
  • Real-World: Production servers, testing, deployment, performance
  • Examples & Patterns: Complete examples and design patterns
  • TypeScript Migration: Complete compatibility guide
  • Advanced Topics: Custom transports, AI-assisted development

Local development:

make book-serve    # Serve at http://localhost:3000
make book-open     # Build and open in browser

πŸŽ“ pmcp-course (Hands-On Learning)

Interactive course with quizzes, exercises, and real-world projects for mastering MCP development.

πŸŽ“ Start the Course

Course Structure:

  • Part I: Foundations - MCP concepts, first server, typed tools
  • Part II: Core Concepts - Tools, resources, prompts, validation
  • Part III: Deployment - AWS Lambda, Cloudflare Workers, Google Cloud Run
  • Part IV: Testing - Local testing, CI/CD, regression testing
  • Part V: Security - OAuth 2.0, identity providers, multi-tenant
  • Part VI: AI-Assisted Dev - Claude Code, feedback loops, collaboration
  • Part VII: Observability - Middleware, logging, metrics
  • Part VIII: Advanced - Server composition, MCP Apps (experimental)

Features:

  • Interactive quizzes after each chapter
  • Hands-on exercises with solutions
  • Real-world project examples
  • Best practices from production servers

Local development:

cd pmcp-course && mdbook serve    # Serve at http://localhost:3000

πŸ€– ai-agents (AI-Assisted Development)

AI agent configurations that teach Kiro and Claude Code how to build MCP servers.

Supported AI Assistants:

Kiro (Steering Files) - 10,876 lines of persistent MCP expertise

  • Always-active knowledge in every conversation
  • Comprehensive testing and observability guidance
  • Installation Guide

Claude Code (Subagent) - ~750 lines of focused MCP knowledge

  • On-demand invocation for MCP tasks
  • Quick scaffolding and implementation
  • Installation Guide

What AI agents know:

  • MCP protocol concepts and patterns
  • cargo-pmcp workflow (never creates files manually)
  • Type-safe tool implementation
  • Testing strategies (unit, integration, property, fuzz)
  • Production observability (logging, metrics)
  • Toyota Way quality standards

Community implementations welcome:

Learn more: AI-Assisted Development Course | ai-agents/


Latest Release: v1.8.3

Highlights:

  • πŸ” OAuth Auth Context: Full token pass-through from transport β†’ middleware β†’ tools
  • πŸ“‹ Workflow Array Indexing: Access array elements in workflow templates
  • πŸ›‘οΈ Spec Compliance: Fixed ClientCapabilities schema for Cursor IDE compatibility
  • πŸ”§ Type-Safe Tools: Production-ready typed tools with schema generation
  • ⚑ Performance: SIMD-accelerated parsing (10.3x speedup)

Full changelog: CHANGELOG.md

Migration guides:


Core Features

πŸš€ Transport Layer

  • stdio: Standard input/output for CLI integration
  • HTTP/SSE: Streamable HTTP with Server-Sent Events
  • WebSocket: Full-duplex with auto-reconnection
  • WASM: Browser and Cloudflare Workers support

πŸ› οΈ Type-Safe Development

  • Automatic Schema Generation: From Rust types using schemars
  • Compile-Time Validation: Type-checked tool arguments
  • Runtime Validation: Against generated JSON schemas
  • Zero Unwraps: Explicit error handling throughout

πŸ” Security & Auth

  • OAuth 2.0: Full auth context pass-through
  • OIDC Discovery: Automatic provider configuration
  • Bearer Tokens: Standard authentication
  • Path Validation: Secure file system access

πŸ§ͺ Testing & Quality

  • mcp-tester: Comprehensive server testing tool
  • Scenario Generation: Auto-generate test cases
  • Property Testing: Invariant validation
  • Quality Gates: fmt, clippy, coverage enforcement

⚑ Performance

  • 16x faster than TypeScript SDK
  • 50x lower memory usage
  • SIMD Parsing: 10.3x SSE speedup with AVX2/SSE4.2
  • Connection Pooling: Smart load balancing

🏭 Toyota Way Quality

  • Zero Technical Debt: TDG score 0.76
  • Jidoka: Stop the line on defects
  • Genchi Genbutsu: Go and see (evidence-based)
  • Kaizen: Continuous improvement
  • No Unwraps: Explicit error handling only

Documentation

πŸ“– Primary Resources

πŸ“š Additional Resources


Examples

The SDK includes 60+ comprehensive examples covering all features:

# Basic examples
cargo run --example 01_client_initialize    # Client setup
cargo run --example 02_server_basic         # Basic server
cargo run --example 03_client_tools         # Tool usage

# Type-safe tools (v1.6.0+)
cargo run --example 32_typed_tools --features schema-generation
cargo run --example 33_advanced_typed_tools --features schema-generation

# Advanced features
cargo run --example 09_authentication       # OAuth/Bearer
cargo run --example 13_websocket_transport  # WebSocket
cargo run --example 15_middleware           # Middleware chain

# Testing
cargo run --example 26-server-tester -- test http://localhost:8080

# AI-assisted development
# See ai-agents/README.md for Kiro and Claude Code setup

See examples/README.md for complete list.


MCP Server Tester

Comprehensive testing tool for validating MCP server implementations.

Features:

  • Protocol compliance validation (JSON-RPC 2.0, MCP spec)
  • Multi-transport support (HTTP, HTTPS, WebSocket, stdio)
  • Tool discovery and testing
  • CI/CD ready with JSON output

Installation:

cargo install mcp-server-tester

# Or download pre-built binaries from releases

Usage:

# Test a server
mcp-tester test http://localhost:8080

# Protocol compliance check
mcp-tester compliance http://localhost:8080 --strict

# Connection diagnostics
mcp-tester diagnose http://localhost:8080

Learn more: examples/26-server-tester/README.md


Quality & Performance

Toyota Way Principles

PMCP is built following Toyota Production System principles:

  • Jidoka (θ‡ͺεƒεŒ–): Automation with human touch

    • Quality gates stop builds on defects
    • Zero tolerance for unwrap() in production
    • Comprehensive error handling with context
  • Genchi Genbutsu (ηΎεœ°ηΎη‰©): Go and see

    • Evidence-based decisions with metrics
    • PMAT quality analysis (TDG score 0.76)
    • Comprehensive testing (unit, property, fuzz)
  • Kaizen (ζ”Ήε–„): Continuous improvement

    • Regular benchmarking and optimization
    • Performance regression prevention
    • Community-driven enhancements

Quality Metrics

  • TDG Score: 0.76 (production-ready)
  • Technical Debt: Minimal (436h across entire codebase)
  • Complexity: All functions ≀25 complexity
  • Coverage: 52% line coverage, 100% function coverage
  • Linting: Zero clippy warnings in production code

Performance Benchmarks

Metric                  PMCP (Rust)     TypeScript SDK    Improvement
────────────────────────────────────────────────────────────────────
Overall Speed           16x             1x                16x faster
Memory Usage            <10 MB          ~500 MB           50x lower
SSE Parsing             336,921 ev/s    32,691 ev/s       10.3x faster
JSON-RPC Parsing        195,181 docs/s  N/A               SIMD-optimized
Round-trip Latency      <100 ΞΌs         ~1-2 ms           10-20x faster
Base64 Operations       252+ MB/s       N/A               Optimized

Run benchmarks:

make bench                           # General benchmarks
cargo run --example 32_simd_parsing  # SIMD-specific

WebAssembly Support

Full WASM support for browser and edge deployment:

Targets:

  • Cloudflare Workers (wasm32-unknown-unknown)
  • WASI Runtimes (wasm32-wasi)
  • Browser (wasm-bindgen)

Quick start:

# Build for Cloudflare Workers
cargo build --target wasm32-unknown-unknown --no-default-features --features wasm

# Deploy
make cloudflare-sdk-deploy

Learn more: WASM Guide | WASM Example


Development

Prerequisites

  • Rust 1.82.0 or later
  • Git

Setup

git clone https://github.com/paiml/rust-mcp-sdk
cd rust-mcp-sdk

# Install development tools
make setup

# Run quality checks
make quality-gate

Testing

make test-all           # All tests
make test-property      # Property tests
make coverage           # Coverage report
make mutants            # Mutation tests

Contributing

We welcome contributions! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Ensure quality gates pass (make quality-gate)
  4. Commit with conventional commits
  5. Push and open a Pull Request

See: CONTRIBUTING.md


Compatibility

Feature TypeScript SDK PMCP (Rust)
Protocol Version 2024-10-07+ 2024-10-07+
Transports stdio, SSE, WebSocket stdio, SSE, WebSocket, WASM
Authentication OAuth 2.0, Bearer OAuth 2.0, Bearer, OIDC
Tools βœ“ βœ“ (Type-safe)
Prompts βœ“ βœ“ (Workflows)
Resources βœ“ βœ“ (Subscriptions)
Sampling βœ“ βœ“
Performance 1x 16x faster
Memory Baseline 50x lower

License

This project is licensed under the MIT License - see the LICENSE file for details.


Acknowledgments



Built with πŸ¦€ Rust and ❀️ following Toyota Way principles

Dependencies

~16–39MB
~497K SLoC