Module messages

Source
Expand description

MCP (Model Context Protocol) message types and JSON-RPC structures.

This module provides complete type definitions for all MCP messages according to the MCP specification. All message types are designed to be:

  • Spec-compliant: Exact adherence to MCP JSON-RPC 2.0 protocol
  • Type-safe: Leverage Rust’s type system to prevent protocol violations
  • Serializable: Full serde support for JSON serialization/deserialization
  • Extensible: Support for custom extensions and future protocol versions
  • Debuggable: Rich Debug implementations for development and debugging

§Message Categories

  • Core Messages: Basic JSON-RPC request/response/notification structures
  • Initialization: Protocol version negotiation and capability discovery
  • Tools: Tool discovery, schema definition, and execution
  • Resources: Resource listing, reading, and subscription
  • Prompts: Prompt templates and completion requests
  • Sampling: LLM completion requests from server to client
  • Logging: Server-to-client logging messages

§Examples

use mcp_probe_core::messages::{JsonRpcRequest, InitializeRequest, ProtocolVersion, Implementation};
use serde_json::json;

// Create an initialization request
let init_request = InitializeRequest {
    protocol_version: ProtocolVersion::V2024_11_05,
    capabilities: Default::default(),
    client_info: Implementation {
        name: "mcp-probe".to_string(),
        version: "0.1.0".to_string(),
        metadata: std::collections::HashMap::new(),
    },
};

// Wrap in JSON-RPC request
let request = JsonRpcRequest::new(
    "1".to_string(),
    "initialize".to_string(),
    serde_json::to_value(init_request).unwrap(),
);

Re-exports§

pub use logging::LogLevel;
pub use logging::LoggingNotification;
pub use logging::ProgressNotification;
pub use logging::PromptListChangedNotification as LoggingPromptListChangedNotification;
pub use logging::ResourceListChangedNotification as LoggingResourceListChangedNotification;
pub use logging::ResourceUpdatedNotification as LoggingResourceUpdatedNotification;
pub use logging::SetLevelRequest;
pub use logging::ToolListChangedNotification as LoggingToolListChangedNotification;
pub use prompts::GetPromptRequest;
pub use prompts::GetPromptResponse;
pub use prompts::ListPromptsRequest;
pub use prompts::ListPromptsResponse;
pub use prompts::MessageRole as PromptMessageRole;
pub use prompts::Prompt;
pub use prompts::PromptContent;
pub use prompts::PromptListChangedNotification;
pub use prompts::PromptMessage;
pub use prompts::ResourceReference as PromptResourceReference;
pub use resources::ListResourcesRequest;
pub use resources::ListResourcesResponse;
pub use resources::ReadResourceRequest;
pub use resources::ReadResourceResponse;
pub use resources::Resource;
pub use resources::ResourceContent;
pub use resources::ResourceListChangedNotification;
pub use resources::ResourceUpdatedNotification;
pub use resources::SubscribeRequest;
pub use resources::UnsubscribeRequest;
pub use sampling::CompleteRequest;
pub use sampling::CompleteResponse;
pub use sampling::CompletionArgument;
pub use sampling::CompletionResult;
pub use sampling::CostPriority;
pub use sampling::IntelligencePriority;
pub use sampling::MessageRole;
pub use sampling::ModelPreferences;
pub use sampling::SamplingContent;
pub use sampling::SamplingMessage;
pub use sampling::SpeedPriority;
pub use sampling::StopReason;
pub use tools::CallToolRequest;
pub use tools::CallToolResponse;
pub use tools::ListToolsRequest;
pub use tools::ListToolsResponse;
pub use tools::ResourceReference as ToolResourceReference;
pub use tools::Tool;
pub use tools::ToolListChangedNotification;
pub use tools::ToolResult;
pub use core::*;
pub use initialization::*;

Modules§

core
Core JSON-RPC 2.0 message structures for MCP communication.
initialization
MCP initialization and protocol negotiation message types.
logging
Logging-related message types for MCP server-to-client logging and progress.
prompts
Prompt-related message types for MCP prompt templates and completion.
resources
Resource-related message types for MCP resource discovery and access.
sampling
Sampling-related message types for MCP LLM completion requests.
tools
Tool-related message types for MCP tool discovery and execution.

Structs§

Capabilities
Generic capability structure for extensible capability negotiation.
Implementation
Implementation information for client or server.
LoggingCapabilities
Logging-related capabilities.
PaginationCursor
Pagination cursor for list operations.
PromptCapabilities
Prompt-related capabilities.
ResourceCapabilities
Resource-related capabilities.
RootsCapabilities
Roots-related capabilities (client-side).
SamplingCapabilities
Sampling-related capabilities (client-side).
StandardCapabilities
Standard MCP capabilities as defined in the specification.
ToolCapabilities
Tool-related capabilities.

Enums§

ProgressToken
Progress token for long-running operations.
ProtocolVersion
MCP protocol version identifier.