Skip to main content

agent_sdk/
mcp.rs

1//! Model Context Protocol (MCP) client support.
2//!
3//! This module provides a client for connecting to MCP servers,
4//! allowing agents to use tools provided by external services.
5//!
6//! # Overview
7//!
8//! MCP (Model Context Protocol) is a protocol for connecting LLM applications
9//! to external tools and services. This module provides:
10//!
11//! - [`McpClient`] - Client for communicating with MCP servers
12//! - [`McpTransport`] - Trait for transport implementations
13//! - [`StdioTransport`] - Stdio-based transport (subprocess communication)
14//! - [`McpToolBridge`] - Wrapper to use MCP tools as SDK tools
15//!
16//! # Example
17//!
18//! ```ignore
19//! use agent_sdk::mcp::{McpClient, StdioTransport, register_mcp_tools};
20//! use agent_sdk::ToolRegistry;
21//! use std::sync::Arc;
22//!
23//! // Spawn an MCP server process
24//! let transport = StdioTransport::spawn("npx", &["-y", "@modelcontextprotocol/server-filesystem"]).await?;
25//!
26//! // Create client and initialize
27//! let client = Arc::new(McpClient::new(transport, "filesystem".to_string()).await?);
28//!
29//! // Register all MCP tools with the agent
30//! let mut registry = ToolRegistry::new();
31//! register_mcp_tools(&mut registry, client).await?;
32//! ```
33//!
34//! # MCP Protocol
35//!
36//! This implementation supports MCP protocol version 2024-11-05 and includes:
37//!
38//! - JSON-RPC 2.0 communication
39//! - Tool discovery via `tools/list`
40//! - Tool execution via `tools/call`
41//! - Automatic initialization handshake
42
43pub mod client;
44pub mod protocol;
45pub mod tool_bridge;
46pub mod transport;
47
48pub use client::McpClient;
49pub use protocol::{
50    JsonRpcError, JsonRpcRequest, JsonRpcResponse, McpContent, McpServerCapabilities,
51    McpToolCallResult, McpToolDefinition,
52};
53pub use tool_bridge::{McpToolBridge, register_mcp_tools, register_mcp_tools_with_tiers};
54pub use transport::{McpTransport, StdioTransport};