Skip to content

MCP 协议集成

概述

Model Context Protocol (MCP) 是 Anthropic 推出的开放协议,允许 LLM 应用连接外部数据源和工具服务器。Claude Code 作为 MCP 客户端,可以动态加载 MCP 服务器提供的工具。

Source: src/services/mcp/

MCP 架构

配置方式

命令行参数

bash
claude --mcp-config server.json

项目配置

json
// .claude/settings.json
{
  "mcpServers": {
    "my-server": {
      "command": "npx",
      "args": ["-y", "@my/mcp-server"]
    }
  }
}

全局配置

json
// ~/.claude/settings.json
{
  "mcpServers": {
    "global-server": {
      "command": "node",
      "args": ["path/to/server.js"]
    }
  }
}

MCP 工具集成

MCP 服务器提供的工具会被转换为标准 Tool 接口并加入工具池:

工具命名

MCP 工具使用 mcp__serverName__toolName 格式命名:

mcp__chrome-devtools__take_screenshot
mcp__cloudflare__deploy_worker
mcp__notion__create_page

权限控制

MCP 工具与内置工具共享权限系统:

json
// settings.json 中配置 MCP 工具权限
{
  "permissions": {
    "allow": ["mcp__my-server__safe_tool"],
    "deny": ["mcp__my-server__dangerous_tool"]
  }
}

MCP 资源

除了工具,MCP 服务器还可以提供资源(数据源):

typescript
// 列出 MCP 资源
ListMcpResourcesTool  // → 列出所有可用资源

// 读取 MCP 资源
ReadMcpResourceTool   // → 读取特定资源内容

AppState 中的 MCP 状态

typescript
// Source: src/state/AppStateStore.ts
mcp: {
  clients: MCPServerConnection[]   // 服务器连接
  tools: Tool[]                    // 发现的工具
  commands: Command[]              // 发现的命令
  resources: MCPResource[]         // 发现的资源
  pluginReconnectKey: number       // 重连触发键
}

连接生命周期

下一步