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 // 重连触发键
}