Crate turbomcp_protocol

Crate turbomcp_protocol 

Source
Expand description

§MCP Protocol Implementation

This crate provides a complete implementation of the Model Context Protocol (MCP) specification version 2025-06-18. It includes all protocol types, JSON-RPC integration, and capability negotiation.

§Features

§Core Protocol Support

  • Complete MCP 2025-06-18 protocol implementation
  • JSON-RPC 2.0 support with batching and notifications
  • Type-safe capability negotiation and compatibility checking
  • Protocol versioning with backward compatibility
  • Fast serialization with SIMD acceleration

§Advanced Protocol Features (New in 1.0.3)

  • Elicitation Protocol - Server-initiated user input requests with rich schema validation
  • Sampling Support - Bidirectional LLM sampling message types
  • Roots Protocol - Filesystem boundaries with roots/list support
  • Comprehensive Schema Builders - Type-safe builders for all schema types

§Validation & Security

  • Comprehensive validation constraints (min/max, patterns, required fields)
  • Type-safe schema builders with fluent API
  • Protocol method validation and error handling
  • Security-focused design with proper boundary checking

§Usage Examples

§Basic Protocol Types

use turbomcp_protocol::types::{Tool, ToolInputSchema, CallToolRequest, CallToolResult};
use std::collections::HashMap;

// Define a tool schema
let tool = Tool {
    name: "calculate".to_string(),
    title: Some("Calculator".to_string()),
    description: Some("Perform mathematical calculations".to_string()),
    input_schema: ToolInputSchema {
        schema_type: "object".to_string(),
        properties: Some({
            let mut props = HashMap::new();
            props.insert("operation".to_string(), serde_json::json!({
                "type": "string",
                "enum": ["add", "subtract", "multiply", "divide"]
            }));
            props
        }),
        required: Some(vec!["operation".to_string()]),
        additional_properties: Some(false),
    },
    output_schema: None,
    annotations: None,
    meta: None,
};

§Elicitation Schema Building

use turbomcp_protocol::elicitation::{ElicitationSchema, EnumSchema, BooleanSchema, PrimitiveSchemaDefinition};

// Build an elicitation schema with validation
let schema = ElicitationSchema::new()
    .add_property("theme".to_string(), PrimitiveSchemaDefinition::Enum(EnumSchema {
        schema_type: "string".to_string(),
        title: Some("Theme".to_string()),
        description: Some("UI color theme".to_string()),
        enum_values: vec!["light".to_string(), "dark".to_string(), "auto".to_string()],
        enum_names: None,
    }))
    .add_property("notifications".to_string(), PrimitiveSchemaDefinition::Boolean(BooleanSchema {
        schema_type: "boolean".to_string(),
        title: Some("Notifications".to_string()),
        description: Some("Enable push notifications".to_string()),
        default: Some(true),
    }))
    .require(vec!["theme".to_string()]);

Re-exports§

pub use types::ArgumentInfo;
pub use types::CallToolRequest;
pub use types::CallToolResult;
pub use types::ClientCapabilities;
pub use types::ClientNotification;
pub use types::ClientRequest;
pub use types::CompleteRequestParams;
pub use types::CompletionReference;
pub use types::CompletionResponse;
pub use types::Content;
pub use types::CreateMessageRequest;
pub use types::CreateMessageResult;
pub use types::ElicitRequest;
pub use types::ElicitRequestParams;
pub use types::ElicitResult;
pub use types::ElicitationAction;
pub use types::ElicitationSchema;
pub use types::EmbeddedResource;
pub use types::GetPromptRequest;
pub use types::GetPromptResult;
pub use types::ImageContent;
pub use types::Implementation;
pub use types::InitializeRequest;
pub use types::InitializeResult;
pub use types::InitializedNotification;
pub use types::ListPromptsRequest;
pub use types::ListPromptsResult;
pub use types::ListResourceTemplatesRequest;
pub use types::ListResourceTemplatesResult;
pub use types::ListResourcesRequest;
pub use types::ListResourcesResult;
pub use types::ListRootsRequest;
pub use types::ListRootsResult;
pub use types::ListToolsRequest;
pub use types::ListToolsResult;
pub use types::LogLevel;
pub use types::LoggingNotification;
pub use types::PingParams;
pub use types::PingRequest;
pub use types::PingResult;
pub use types::ProgressNotification;
pub use types::ProgressToken;
pub use types::Prompt;
pub use types::PromptInput;
pub use types::ProtocolVersion;
pub use types::ReadResourceRequest;
pub use types::ReadResourceResult;
pub use types::RequestId;
pub use types::Resource;
pub use types::ResourceContents;
pub use types::ResourceTemplate;
pub use types::ResourceUpdatedNotification;
pub use types::Root;
pub use types::RootsListChangedNotification;
pub use types::SamplingMessage;
pub use types::ServerCapabilities;
pub use types::ServerNotification;
pub use types::ServerRequest;
pub use types::SetLevelRequest;
pub use types::SetLevelResult;
pub use types::SubscribeRequest;
pub use types::TextContent;
pub use types::Tool;
pub use types::ToolInputSchema;
pub use types::ToolOutputSchema;
pub use types::UnsubscribeRequest;
pub use jsonrpc::JsonRpcBatch;
pub use jsonrpc::JsonRpcError;
pub use jsonrpc::JsonRpcErrorCode;
pub use jsonrpc::JsonRpcNotification;
pub use jsonrpc::JsonRpcRequest;
pub use jsonrpc::JsonRpcResponse;
pub use jsonrpc::JsonRpcVersion;
pub use capabilities::CapabilityMatcher;
pub use capabilities::CapabilityNegotiator;
pub use capabilities::CapabilitySet;
pub use versioning::VersionCompatibility;
pub use versioning::VersionManager;
pub use versioning::VersionRequirement;

Modules§

capabilities
Capability Negotiation
elicitation
MCP Protocol Elicitation Types (Spec-Compliant)
error_codes
Protocol error codes (JSON-RPC standard + MCP extensions)
features
Protocol feature flags
jsonrpc
JSON-RPC 2.0 Implementation
methods
Protocol method names
types
MCP Protocol Types
validation
Protocol Validation
versioning
Protocol Versioning and Compatibility

Structs§

Error
Comprehensive error type with rich context information

Constants§

PROTOCOL_VERSION
Current MCP protocol version
SUPPORTED_VERSIONS
Supported MCP protocol versions

Type Aliases§

Result
Result type alias for MCP operations