什么是 MCP
Model Context Protocol(模型上下文协议)是一个开放标准,让 AI Agent 连接外部工具和数据源。就像 USB 让任何设备可以连接任何电脑一样,MCP 让任何支持 MCP 的 AI 客户端即插即用地使用外部工具。
类比:MCP 像是一套标准化的 API 接口规范。就像 REST API 和 GraphQL 都是让客户端与服务端通信的协议一样,MCP 定义了 AI 和外部工具之间的通信协议。
核心架构
你的 Claude Code 会话
├── 内置工具(Read, Edit, Bash...)
└── MCP 连接
├── GitHub Server → 创建 PR、查看 Issue
├── Slack Server → 发消息、读频道
├── DB Server → 查询数据库
└── 自定义 Server → 你的任何工具
MCP Server 提供三种东西:
- Tools:Agent 可以调用的函数(如
create_issue) - Resources:Agent 可以读取的数据(如
github:repos/owner/repo/issues) - Prompts:预定义的提示模板
添加 MCP Server
命令行方式
# stdio 类型(本地进程)
claude mcp add github -- npx -y @anthropic/mcp-github
# HTTP/SSE 类型(远程服务)
claude mcp add my-server --transport http --url https://example.com/mcp
配置文件方式(.mcp.json)
{
"mcpServers": {
"github": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@anthropic/mcp-github"]
},
"my-api": {
"type": "http",
"url": "https://example.com/mcp"
}
}
}
作用域与优先级
| 作用域 | 配置位置 | 优先级 |
|---|---|---|
| 本地(当前项目) | .mcp.json | 最高 |
| 项目(团队共享) | .mcp.json | 中 |
| 用户(所有项目) | ~/.claude/.mcp.json | 低 |
同名 Server:本地覆盖项目覆盖用户。
上下文成本警告
MCP 的一个重要陷阱:所有已连接 Server 的工具定义都会在每次请求中占用上下文。
- 一个 MCP Server 可能注册 10+ 个工具,每个工具有详细的 JSON Schema
- 连接 3-4 个 Server 可能轻松占掉上下文的 5-10%
/mcp命令可以查看每个 Server 的 token 开销
Tool Search 机制:默认启用,MCP 工具最多占用 10% 上下文,剩余的延迟加载。
使用 MCP Resources
用 @ 语法直接引用 MCP 资源:
Show me the data from @github:repos/owner/repo/issues
最佳实践
- 只连接当前需要的 Server:不用的断开(减少上下文开销)
- 用
/mcp监控开销:知道每个 Server 花了多少 token - 优先用 CLI 工具而非 MCP:如果
ghCLI 能完成,比 GitHub MCP Server 更省上下文 - SubAgent 限定 MCP:在 SubAgent 的
mcpServers字段中限定特定 Server
知识检测
概念理解题
-
MCP 被比作”AI 世界的 USB 接口”——这个类比的准确之处和不准确之处分别是什么?
-
为什么文档建议”优先用 CLI 工具而非 MCP”?这两种方式在上下文成本上有什么区别?
-
MCP Server 提供 Tools、Resources、Prompts 三种东西。它们各自的作用是什么?
应用题
-
你的团队用 Jira 管理需求,用 Figma 做设计。你会怎么配置 MCP 来让 Claude 能直接从 Jira 拉需求、从 Figma 拉设计稿?
-
你发现连接了 5 个 MCP Server 后,Claude 的响应变慢了。怎么排查和优化?
迁移思考题
- OpenClaw 也支持 MCP Server。两者在配置方式上有什么异同?OpenClaw 的 workspace 概念如何影响 MCP 的作用域?
参见
参考答案
1. USB 类比的准确与不准确
准确之处:标准化协议(任何 MCP Server 可以连接任何 MCP 客户端)、即插即用(配置好就能用)。不准确之处:USB 是物理连接几乎无成本,MCP 连接有 token 成本(工具定义占上下文);USB 设备被动响应,MCP Server 可以主动推送 Resources;USB 即插即拔,MCP 连接可能静默断开。
2. 优先 CLI 而非 MCP 的原因
当 Claude 用 gh CLI 创建 PR 时,只需一条 Bash 命令——上下文中只有 Bash 工具的定义(几十 token)。如果用 GitHub MCP Server,所有 GitHub API 工具的定义(可能几千 token)都要常驻上下文。CLI 是”按需使用”,MCP 是”始终占位”。如果你只偶尔用 GitHub 功能,CLI 更划算。
3. Tools / Resources / Prompts
Tools:Agent 可以调用的函数(如 create_issue、query_database),是 MCP 最核心的能力。Resources:Agent 可以读取的数据源(如 github:repos/owner/repo/issues),用 @ 语法引用,类似 RESTful API 的 GET 端点。Prompts:预定义的提示模板,MCP Server 提供的”推荐用法”,目前使用较少。
4. Jira + Figma 配置
安装 Jira MCP Server 和 Figma MCP Server(从 marketplace 或 npm),在 .mcp.json 中配置。然后创建一个 Skill 文档你的 Jira 项目结构和 Figma 设计规范,让 Claude 知道如何有效使用这些工具。这就是 “MCP 提供能力,Skill 提供知识” 的经典组合。
5. 连接 5 个 Server 后变慢
(1) /mcp 查看每个 Server 的 token 开销 (2) 断开当前不需要的 Server (3) 检查是否有 Server 注册了过多工具(一个 Server 注册 50 个工具是不合理的)(4) 启用 Tool Search(默认开启,限制 MCP 工具只占 10% 上下文)(5) 考虑把不常用的 Server 配置从 .mcp.json 移到只在需要时手动连接。
6. OpenClaw 的 MCP 异同
两者都支持 MCP 标准。OpenClaw 的配置在 openclaw.json 中(而非 .mcp.json),作用域跟随 Agent workspace。OpenClaw 还有更多内置工具(browser、exec、web-fetch 等),减少了对外部 MCP Server 的依赖。Claude Code 更依赖 MCP 来获取外部能力。