Expand description
MCP (Model Context Protocol) Support
Provides integration with MCP servers for extending A3S Code with external tools.
§Overview
MCP is an open protocol for connecting AI assistants to external tools and data sources. This module implements:
- Protocol types: JSON-RPC messages, tool definitions, resources
- Transport layer: stdio (local processes), HTTP+SSE (remote servers)
- Client: High-level API for MCP server communication
- Manager: Lifecycle management for multiple MCP servers
- Tools integration: Automatic registration of MCP tools to ToolRegistry
§Usage
ⓘ
use a3s_code::mcp::{McpManager, McpServerConfig, McpTransportConfig};
// Create manager
let manager = McpManager::new();
// Register server
let config = McpServerConfig {
name: "github".to_string(),
transport: McpTransportConfig::Stdio {
command: "npx".to_string(),
args: vec!["-y".to_string(), "@modelcontextprotocol/server-github".to_string()],
},
enabled: true,
env: [("GITHUB_TOKEN".to_string(), "...".to_string())].into(),
oauth: None,
};
manager.register_server(config).await;
// Connect
manager.connect("github").await?;
// Get tools
let tools = manager.get_all_tools().await;
// tools: [("mcp__github__create_issue", McpTool { ... }), ...]
// Call tool
let result = manager.call_tool("mcp__github__create_issue", Some(json!({
"title": "Bug report",
"body": "Description..."
}))).await?;§Tool Naming Convention
MCP tools are registered with the prefix mcp__<server>__<tool>:
| Full Name | Server | Tool |
|---|---|---|
mcp__github__create_issue | github | create_issue |
mcp__postgres__query | postgres | query |
Re-exports§
pub use client::McpClient;pub use manager::tool_result_to_string;pub use manager::McpManager;pub use manager::McpServerStatus;pub use protocol::CallToolResult;pub use protocol::McpNotification;pub use protocol::McpResource;pub use protocol::McpServerConfig;pub use protocol::McpTool;pub use protocol::McpTransportConfig;pub use protocol::OAuthConfig;pub use protocol::ServerCapabilities;pub use protocol::ToolContent;pub use tools::create_mcp_tools;pub use tools::McpToolWrapper;