mcp-protocol-sdk 0.2.4

Production-ready Rust SDK for the Model Context Protocol (MCP) with multiple transport support
Documentation
# MCP Protocol SDK

[![Crates.io](https://img.shields.io/crates/v/mcp-protocol-sdk.svg)](https://crates.io/crates/mcp-protocol-sdk)
[![Documentation](https://docs.rs/mcp-protocol-sdk/badge.svg)](https://docs.rs/mcp-protocol-sdk)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![CI](https://github.com/mcp-rust/mcp-protocol-sdk/workflows/CI/badge.svg)](https://github.com/mcp-rust/mcp-protocol-sdk/actions)
[![Security Audit](https://github.com/mcp-rust/mcp-protocol-sdk/workflows/Security%20Audit/badge.svg)](https://github.com/mcp-rust/mcp-protocol-sdk/actions)
[![codecov](https://codecov.io/gh/mcp-rust/mcp-protocol-sdk/branch/main/graph/badge.svg)](https://codecov.io/gh/mcp-rust/mcp-protocol-sdk)
[![Schema Compliance](https://img.shields.io/badge/MCP%20Schema%20Compliance-100%25-brightgreen.svg)](#๏ธ-mcp-protocol-schema-compliance)

**A production-ready, feature-complete Rust implementation of the Model Context Protocol**

The MCP Protocol SDK enables seamless integration between AI models and external systems through a standardized protocol. Build powerful tools, resources, and capabilities that AI can discover and use dynamically.

---

## ๐Ÿ“š [Complete Documentation & Guides]./docs/README.md | ๐Ÿ“– [API Reference]https://docs.rs/mcp-protocol-sdk | ๐Ÿš€ [Getting Started]./docs/getting-started.md

---

## โœจ Features

- ๐Ÿฆ€ **Pure Rust** - Zero-cost abstractions, memory safety, and blazing performance
- ๐Ÿ”Œ **Multiple Transports** - STDIO, HTTP, WebSocket support with optional features
- โšก **Advanced HTTP Transport** - Connection pooling, retry logic, 45% faster performance
- ๐Ÿ› ๏ธ **Complete MCP Support** - Tools, resources, prompts, logging, and sampling
- ๐ŸŽฏ **Type-Safe** - Comprehensive type system with compile-time guarantees  
- ๐Ÿš€ **Async/Await** - Built on Tokio for high-performance concurrent operations
- ๐Ÿ“ฆ **Modular Design** - Optional features for minimal binary size
- ๐Ÿ”’ **Production Ready** - Comprehensive error handling, validation, and testing
- ๐Ÿ“Š **Built-in Metrics** - Performance monitoring and health checks
- ๐Ÿ“– **Excellent Docs** - Complete guides for servers, clients, and integrations

## ๐Ÿš€ Quick Start

### Add to Your Project

```toml
[dependencies]
mcp-protocol-sdk = "0.2.3"

# Or with specific features only:
mcp-protocol-sdk = { version = "0.2.3", features = ["stdio", "validation"] }
```

### Build an MCP Server (5 minutes)

```rust
use mcp_protocol_sdk::prelude::*;
use serde_json::json;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create server
    let mut server = McpServer::new("my-calculator", "1.0.0");
    
    // Add a tool
    let calc_tool = Tool::new("add", "Add two numbers")
        .with_parameter("a", "First number", true)
        .with_parameter("b", "Second number", true);
    
    server.add_tool(calc_tool);
    
    // Handle tool calls
    server.set_tool_handler("add", |params| async move {
        let a = params["a"].as_f64().unwrap_or(0.0);
        let b = params["b"].as_f64().unwrap_or(0.0);
        Ok(json!({ "result": a + b }))
    });
    
    // Start server (compatible with Claude Desktop)
    let transport = StdioServerTransport::new();
    server.run(transport).await?;
    
    Ok(())
}
```

### Build an MCP Client

```rust
use mcp_protocol_sdk::prelude::*;
use mcp_protocol_sdk::transport::http_advanced::{
    AdvancedHttpClientTransport, AdvancedHttpConfig
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Connect with advanced HTTP transport (45% faster!)
    let config = AdvancedHttpConfig::conservative(); // or ::aggressive()
    let transport = AdvancedHttpClientTransport::with_config(
        "http://localhost:3000",
        None,
        config,
    ).await?;
    
    let client = McpClient::new()
        .with_name("my-client")
        .build();
    
    client.connect(transport).await?;
    client.initialize().await?;
    
    // Use server capabilities
    let tools = client.list_tools().await?;
    let result = client.call_tool("add", json!({"a": 5, "b": 3})).await?;
    
    // Monitor performance
    let metrics = transport.get_metrics().await;
    println!("Requests/sec: {:.0}", metrics.timing.requests_per_second);
    
    Ok(())
}
```

## ๐ŸŽฏ Use Cases

| **Scenario** | **Description** | **Guide** |
|--------------|-----------------|-----------|
| ๐Ÿ–ฅ๏ธ **Claude Desktop Integration** | Add custom tools to Claude Desktop | [๐Ÿ“ Guide]./docs/integrations/claude-desktop.md |
| โšก **Cursor IDE Enhancement** | AI-powered development tools | [๐Ÿ“ Guide]./docs/integrations/cursor.md |
| ๐Ÿ“ **VS Code Extensions** | Smart code assistance and automation | [๐Ÿ“ Guide]./docs/integrations/vscode.md |
| ๐Ÿ—„๏ธ **Database Access** | SQL queries and data analysis | [๐Ÿ“ Example]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/database_server.rs |
| ๐ŸŒ **API Integration** | External service connectivity | [๐Ÿ“ Example]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/http_server.rs |
| ๐Ÿ“ **File Operations** | Filesystem tools and utilities | [๐Ÿ“ Example]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/simple_server.rs |
| ๐Ÿ’ฌ **Chat Applications** | Real-time AI conversations | [๐Ÿ“ Example]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/websocket_server.rs |

## ๐Ÿ—๏ธ Architecture

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   AI Client     โ”‚    โ”‚  MCP Protocol   โ”‚    โ”‚   MCP Server    โ”‚
โ”‚  (Claude, etc.) โ”‚โ—„โ”€โ”€โ–บโ”‚      SDK        โ”‚โ—„โ”€โ”€โ–บโ”‚  (Your Tools)   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚         โ”‚         โ”‚
              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”
              โ”‚  STDIO  โ”‚ โ”‚  HTTP  โ”‚ โ”‚WebSocketโ”‚
              โ”‚Transportโ”‚ โ”‚Transportโ”‚ โ”‚Transportโ”‚
              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

## ๐Ÿ”ง Feature Flags

Optimize your binary size by selecting only needed features:

| Feature | Description | Default | Size Impact |
|---------|-------------|---------|-------------|
| `stdio` | STDIO transport for Claude Desktop | โœ… | Minimal |
| `http` | HTTP transport for web integration | โœ… | +2MB |
| `websocket` | WebSocket transport for real-time | โœ… | +1.5MB |
| `validation` | Enhanced input validation | โœ… | +500KB |
| `tracing-subscriber` | Built-in logging setup | โŒ | +300KB |

**Minimal Example** (STDIO only):
```toml
mcp-protocol-sdk = { version = "0.2.3", default-features = false, features = ["stdio"] }
```

## ๐Ÿš€ Performance

The advanced HTTP transport provides significant performance improvements:

| Transport | Requests/Second | Average Latency | Success Rate | Key Features |
|-----------|-----------------|-----------------|--------------|--------------|
| **Advanced HTTP** | **802 req/sec** | **0.02ms** | **100%** | Connection pooling, retry logic |
| Standard HTTP | 551 req/sec | 0.04ms | 100% | Basic HTTP client |

**45% Performance Improvement** with advanced features! ๐ŸŽฏ

### Quick Performance Test
```bash
# Run benchmark comparison
cargo run --example transport_benchmark --all-features

# Test conservative settings (recommended)
cargo run --example conservative_http_demo --all-features
```

**[๐Ÿ“– Full Advanced Transport Guide](./docs/transports.md)**

## ๐Ÿ“‹ Protocol Support

โœ… **Complete MCP 2024-11-05 Implementation**

- **Core Protocol** - JSON-RPC 2.0 with full error handling
- **Tools** - Function calling with parameters and validation  
- **Resources** - Static and dynamic content access
- **Prompts** - Reusable prompt templates with parameters
- **Logging** - Structured logging with multiple levels
- **Sampling** - LLM sampling integration and control
- **Roots** - Resource root discovery and management
- **Progress** - Long-running operation progress tracking

## ๐Ÿ›ก๏ธ MCP Protocol Schema Compliance

This SDK provides **100% verified compliance** with the official MCP Protocol Schema (2025-03-26), ensuring seamless interoperability with all MCP-compatible systems.

### โœ… Comprehensive Validation

Our comprehensive test suite validates every aspect of the MCP protocol:

```bash
# Run the full schema compliance test suite
cargo test --test comprehensive_schema_tests -- --nocapture
```

**Results**: `26/26 tests passing` with `100.0% compliance rate` ๐ŸŽ‰

### ๐Ÿ“Š Schema Compliance Report

| Component | Status | Features Validated |
|-----------|--------|-------------------|
| **Core Types** | โœ… 100% | Implementation, Capabilities, Content |
| **JSON-RPC** | โœ… 100% | Requests, Responses, Errors, Notifications, Batching |
| **Tools** | โœ… 100% | Definitions, Parameters, Annotations, Execution |
| **Resources** | โœ… 100% | Static/Dynamic, Templates, Subscriptions |
| **Prompts** | โœ… 100% | Templates, Arguments, Message Generation |
| **Sampling** | โœ… 100% | Message Creation, Model Preferences |
| **Logging** | โœ… 100% | All levels, Structured messages |
| **Progress** | โœ… 100% | Notifications, Cancellation |
| **Roots** | โœ… 100% | Discovery, List management |
| **Completions** | โœ… 100% | Auto-complete for prompts/resources |

### ๐Ÿš€ 2025-03-26 Features

Full support for all latest MCP protocol enhancements:

- **๐ŸŽต Audio Content** - Native audio message support
- **๐Ÿ“ Annotations** - Tool safety and usage metadata
- **๐ŸŒ Embedded Resources** - Direct resource embedding
- **๐Ÿ“Š Enhanced Progress** - Detailed progress tracking
- **๐Ÿ”„ JSON-RPC Batching** - Efficient bulk operations
- **๐Ÿ“ฆ Metadata Support** - Rich request/response metadata

### ๐Ÿงช Validation Architecture

```rust
// Example: Schema validation in action
use mcp_protocol_sdk::protocol::types::*;

// All types are schema-compliant by construction
let tool = Tool::new("calculator", "Performs mathematical operations")
    .with_annotations(
        Annotations::new()
            .for_audience(vec![AnnotationAudience::User])
            .with_danger_level(DangerLevel::Low)
            .read_only()
    );

// JSON serialization matches schema exactly
assert_eq!(tool.to_json()["annotations"]["readOnly"], true);
```

### ๐Ÿ” Manual Verification

You can verify schema compliance yourself:

```bash
# 1. Run comprehensive schema tests
cargo test comprehensive_schema_validation --features validation -- --nocapture

# 2. Check specific protocol components
cargo test test_protocol_version_compliance
cargo test test_tool_with_annotations_schema_compliance
cargo test test_jsonrpc_batch_schema_compliance

# 3. Validate against official schema (if available)
# The tests verify serialization matches expected JSON-RPC format
```

### ๐Ÿ“ˆ Continuous Compliance

- **Automated Testing** - Every commit runs full schema validation
- **Version Tracking** - Tests updated with each protocol version
- **Regression Prevention** - Breaking changes detected immediately
- **Documentation Sync** - Schema changes reflected in docs

### ๐Ÿค Interoperability Guarantee

With 100% schema compliance, this SDK guarantees compatibility with:

- **Claude Desktop** - Official Anthropic client
- **Third-party MCP Clients** - Any standards-compliant implementation
- **Custom Integrations** - Your own MCP-based tools
- **Future Protocol Versions** - Forward compatibility design

**[๐Ÿ“– View Full Schema Compliance Details](./docs/SCHEMA_COMPLIANCE.md)**

## ๐ŸŒ Integration Ecosystem

### AI Clients
- **Claude Desktop** - Ready-to-use STDIO integration
- **Cursor IDE** - Smart development assistance  
- **VS Code** - Extension development framework
- **Custom AI Apps** - HTTP/WebSocket APIs

### Development Tools  
- **Jupyter Notebooks** - Data science workflows
- **Streamlit Apps** - Interactive AI applications
- **Browser Extensions** - Web-based AI tools
- **Mobile Apps** - React Native integration

## ๐Ÿ“Š Examples

| Example | Description | Transport | Features |
|---------|-------------|-----------|----------|
| [Conservative HTTP Demo]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/conservative_http_demo.rs | **Production-ready HTTP client** | **Advanced HTTP** | **Connection pooling, metrics** |
| [Transport Benchmark]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/transport_benchmark.rs | **Performance comparison** | **Multiple** | **45% speed improvement** |
| [Advanced HTTP Client]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/advanced_http_client.rs | **Full-featured HTTP demo** | **Advanced HTTP** | **Retry logic, health checks** |
| [Echo Server]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/echo_server.rs | Simple tool demonstration | STDIO | Basic tools |
| [Database Server]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/database_server.rs | SQL query execution | STDIO | Database access |
| [HTTP Server]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/http_server.rs | RESTful API integration | HTTP | Web services |
| [WebSocket Server]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/websocket_server.rs | Real-time communication | WebSocket | Live updates |
| [File Server]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/simple_server.rs | File system operations | STDIO | File handling |
| [Client Example]https://github.com/mcp-rust/mcp-protocol-sdk/blob/main/examples/client_example.rs | Basic client usage | STDIO | Client patterns |

## ๐Ÿ› ๏ธ Development

### Prerequisites
- Rust 1.75+ 
- Cargo

### Build & Test
```bash
# Build with all features
cargo build --all-features

# Test with different feature combinations  
cargo test --no-default-features --features stdio
cargo test --all-features

# Run examples
cargo run --example echo_server --features stdio,tracing-subscriber
```

### Feature Development
```bash
# Test minimal build
cargo check --no-default-features --lib

# Test specific transports
cargo check --no-default-features --features http
cargo check --no-default-features --features websocket
```

## ๐Ÿค Contributing

We welcome contributions! Please see our [Contributing Guide](./CONTRIBUTING.md) for details.

### Areas for Contribution
- ๐Ÿ› **Bug Reports** - Help us improve reliability
- ๐Ÿ’ก **Feature Requests** - Suggest new capabilities  
- ๐Ÿ“– **Documentation** - Improve guides and examples
- ๐Ÿ”ง **Tool Integrations** - Build example servers
- ๐Ÿงช **Testing** - Expand test coverage
- ๐Ÿš€ **Performance** - Optimize critical paths

## ๐Ÿ“‹ Roadmap

- [ ] **Advanced Authentication** - OAuth2, JWT, mTLS support
- [ ] **Monitoring Integration** - Prometheus metrics, health checks
- [ ] **Plugin System** - Dynamic tool loading and registration
- [ ] **Schema Registry** - Tool and resource schema management  
- [ ] **Load Balancing** - Multiple server instance coordination
- [ ] **Caching Layer** - Response caching and invalidation
- [ ] **Rate Limiting** - Advanced traffic control
- [ ] **Admin Dashboard** - Web-based server management

## ๐Ÿ“„ License

Licensed under the [MIT License](./LICENSE).

## ๐Ÿ™ Acknowledgments

- **Anthropic** - For creating the MCP specification
- **Tokio Team** - For the excellent async runtime
- **Serde Team** - For JSON serialization/deserialization
- **Rust Community** - For the amazing ecosystem

---

<div align="center">

**[๐Ÿ“š Read the Full Documentation]./docs/README.md** | **[๐Ÿš€ Get Started Now]./docs/getting-started.md**

*Built with โค๏ธ in Rust*

</div>