Expand description
MCP (Model Context Protocol) Integration
提供完整的 MCP 协议支持,允许连接任意 MCP 服务器并将其工具映射为内置工具。
§架构概览
┌─────────────────────────────────────────────────────────────┐
│ MatrixCode Agent │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Tool System │ │
│ │ ┌─────────┐ ┌─────────┐ ┌───────────────────────┐ │ │
│ │ │ Built-in│ │ CodeGraph│ │ MCP Tool Wrapper │ │ │
│ │ │ Tools │ │ Tools │ │ (Transparent Proxy) │ │ │
│ │ └─────────┘ └─────────┘ └───────────┬───────────┘ │ │
│ └─────────────────────────────────────│───────────────┘ │
└────────────────────────────────────────│───────────────────┘
│
┌─────────────────────────────────────────│───────────────────┐
│ MCP Module │ │
│ ┌──────────────┐ ┌──────────────┐ ┌───┴───────┐ │
│ │ Config │ │ Transport │ │ McpClient │ │
│ │ (config.rs) │ │ (transport.rs)│ │ (client.rs)│ │
│ └──────────────┘ └──────────────┘ └─────┬─────┘ │
└───────────────────────────────────────────│─────────────────┘
│ MCP Protocol
┌───────────────────────────────────────────│─────────────────┐
│ External MCP Servers │ │
│ ┌─────────────┐ ┌─────────────┐ ┌───────┴───┐ │
│ │ Playwright │ │ Filesystem │ │ Other │ │
│ │ MCP Server │ │ MCP Server │ │ MCP │ │
│ └─────────────┘ └─────────────┘ └───────────┘ │
└─────────────────────────────────────────────────────────────┘§快速开始
§1. 配置 MCP 服务器
创建 mcp.toml 文件:
[servers.playwright]
command = "npx"
args = ["-y", "@playwright/mcp@latest"]
[servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/files"]§2. 连接并使用工具
ⓘ
use matrixcode_core::mcp::{McpConfig, McpToolManager};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// 加载配置
let config = McpConfig::from_file("mcp.toml")?;
// 创建工具管理器
let manager = McpToolManager::new();
// 连接所有服务器
for (key, server_config) in config.enabled_servers() {
let transport = server_config.to_transport_config()?;
let tools = manager.connect_server(&server_config.get_name(&key), transport).await?;
println!("Connected: {} tools", tools.len());
}
// 获取所有工具
let tools = manager.get_tools().await;
// 使用工具...
// 关闭
manager.shutdown().await;
Ok(())
}§支持的传输方式
- Stdio: 通过子进程 stdin/stdout 通信(推荐)
- SSE: 通过 HTTP Server-Sent Events 通信(远程服务器)
§内置 MCP 配置
模块提供常用 MCP 服务器的预设配置:
playwright_config(): Playwright 浏览器自动化default_mcp_config(): 常用配置组合
Re-exports§
pub use client::McpClient;pub use client::McpClientBuilder;pub use config::McpConfig;pub use config::McpServerConfig;pub use config::McpSettings;pub use config::find_mcp_config;pub use config::load_mcp_config;pub use lazy::McpToolPlaceholder;pub use lazy::McpToolRegistry;pub use lazy::ServerStatus;pub use proxy::McpToolManager;pub use proxy::McpToolWrapper;pub use proxy::connect_mcp_server;pub use proxy::connect_mcp_servers_from_config;pub use transport::SseTransport;pub use transport::StdioTransport;pub use transport::Transport;pub use transport::TransportConfig;pub use types::*;
Modules§
- client
- MCP Client
- config
- MCP Configuration
- lazy
- MCP Lazy Loader
- proxy
- MCP Tool Proxy
- transport
- MCP Transport Layer
- types
- MCP (Model Context Protocol) Protocol Types
Functions§
- connect_
all_ from_ config - 连接配置文件中的所有 MCP 服务器
- connect_
playwright - 连接 Playwright MCP 服务器