MCP 协议集成
Model Context Protocol (MCP) 是 Anthropic 推出的开放协议,定义了 AI 模型与外部工具和数据源之间的标准化通信方式。Claude Code 内置了完整的 MCP 客户端实现。
MCP 概述
┌─────────────┐ MCP 协议 ┌─────────────┐
│ Claude Code │ ←──────────────→ │ MCP Server │
│ (客户端) │ │ (工具提供者) │
└─────────────┘ └─────────────┘
│
┌─────┴─────┐
│ │
工具 资源
(Tools) (Resources)
MCP 的三大能力
1. 工具 (Tools)
MCP 服务器可以暴露可执行的工具:
{
"name": "take_screenshot",
"description": "截取当前页面的截图",
"inputSchema": {
"type": "object",
"properties": {
"selector": { "type": "string" }
}
}
}
2. 资源 (Resources)
MCP 服务器可以暴露可读取的资源:
{
"uri": "notion://page/abc123",
"name": "设计文档",
"mimeType": "text/markdown"
}
3. 提示 (Prompts)
MCP 服务器可以提供预定义的提示模板。
Claude Code 的 MCP 实现
服务管理 (services/mcp/)
MCP 服务管理
├── 服务器发现 # 读取配置,发现可用服务器
├── 连接管理 # 建立和维护连接
├── 工具注册 # 将 MCP 工具注册到工具表
├── 资源管理 # 管理可用资源
├── 心跳检测 # 检测服务器健康状态
└── 生命周期 # 启动、重连、关闭
配置方式
在项目的 .mcp.json 或全局配置中:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-chrome-devtools"],
"env": {}
},
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server"]
},
"custom-server": {
"command": "node",
"args": ["./my-mcp-server.js"],
"cwd": "/path/to/project"
}
}
}
工具命名
MCP 工具在 Claude Code 中的命名规则:
mcp__{server_name}__{tool_name}
示例:
mcp__chrome-devtools__take_screenshot
mcp__context7__query-docs
mcp__plugin_playwright_playwright__browser_navigate
并发多服务器
Claude Code 支持同时连接多个 MCP 服务器:
Claude Code
├── chrome-devtools (浏览器调试)
├── context7 (文档查询)
├── Vercel (部署管理)
├── Notion (知识管理)
├── Gmail (邮件)
└── Telegram (消息通信)
每个服务器独立管理,工具和资源统一注册到 Claude Code 的工具表中。
MCP 认证
部分 MCP 服务器需要认证(如 Notion、Gmail):
1. 首次连接时触发 OAuth 流程
2. 用户在浏览器中授权
3. Token 存储在本地
4. 后续连接自动使用存储的 Token
5. Token 过期时自动刷新
需要认证的服务器状态缓存在 mcp-needs-auth-cache.json 中。
最佳实践
- 只连接需要的服务器 — 每个 MCP 服务器都会占用工具注册槽位
- 使用
context7查文档 — 比 WebSearch 更精确 - 组合使用 — 如 Playwright + Chrome DevTools 覆盖完整的浏览器测试
- 注意权限 — MCP 工具同样受权限系统管控