Skip to main content

Module mcp

Module mcp 

Source
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 transport::Transport;
pub use transport::TransportConfig;
pub use transport::StdioTransport;
pub use transport::SseTransport;
pub use client::McpClient;
pub use client::McpClientBuilder;
pub use proxy::McpToolWrapper;
pub use proxy::McpToolManager;
pub use proxy::connect_mcp_server;
pub use proxy::connect_mcp_servers_from_config;
pub use config::McpConfig;
pub use config::McpServerConfig;
pub use config::McpSettings;
pub use config::load_mcp_config;
pub use config::find_mcp_config;
pub use lazy::McpToolPlaceholder;
pub use lazy::McpToolRegistry;
pub use lazy::ServerStatus;
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 服务器