第 19 期 | 什么是 MCP?它为什么是 AI Agent 的"USB 接口"
🎯 学习目标
学完本期你将理解:
- Model Context Protocol (MCP) 的核心概念和设计理念
- MCP 与传统 REST API、SDK 的根本区别
- 为什么说 MCP 是 AI Agent 生态的"USB 标准"
- Anthropic 的开放生态布局和商业逻辑
📖 核心概念讲解
19.1 为什么需要 MCP?
AI Agent 面对的工具连接困境:
没有 MCP 的世界:
Claude ──┬──► GitHub API (需要 Token + REST)
├──► Jira API (需要 OAuth + GraphQL)
├──► Slack API (需要 WebSocket + Bot Token)
├──► Database (需要 Connection String + SQL)
└──► ... N 个工具,N 种协议
每个工具都要:
❌ 单独的认证方式
❌ 单独的数据格式
❌ 单独的调用协议
❌ 单独的错误处理
这就像 2000 年以前每个设备都有不同的接口:
打印机用 LPT 口,鼠标用 PS/2,
相机用 FireWire,手机用各种奇怪的接口...
19.2 MCP = AI 世界的 USB
有了 MCP 的世界:
Claude ──► MCP (统一协议) ──┬──► GitHub
├──► Jira
├──► Slack
├──► Database
└──► 任何工具
MCP 提供:
✅ 统一的工具描述格式 (Tool Schema)
✅ 统一的调用协议 (JSON-RPC)
✅ 统一的认证机制
✅ 统一的错误处理
✅ 即插即用 (Plug & Play)
USB 类比:
┌────────────────────────────────────────────────┐
│ USB 标准: │
│ 定义了电气规范、传输协议、设备类型, │
│ 任何设备只要符合 USB 规范就能即插即用 │
│ │
│ MCP 标准: │
│ 定义了工具描述、调用协议、资源类型, │
│ 任何服务只要实现 MCP Server 就能被 Agent 调用 │
└────────────────────────────────────────────────┘
19.3 MCP 的三层架构
╭──────────────────────────────────────────────╮
│ MCP 三层架构 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ MCP Host │ │ MCP Host │ │ MCP Host │ │
│ │(Claude │ │(Cursor │ │(自建App) │ │
│ │ Code) │ │ IDE) │ │ │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────┐ │
│ │ MCP Client (SDK) │ │
│ │ 统一的工具发现、调用、结果解析 │ │
│ └─────────────┬────────────────────────┘ │
│ │ │
│ ┌────────┼────────┐ │
│ ▼ ▼ ▼ │
│ ┌────────┐┌────────┐┌────────┐ │
│ │MCP ││MCP ││MCP │ │
│ │Server ││Server ││Server │ │
│ │(GitHub)││(Slack) ││(DB) │ │
│ └────────┘└────────┘└────────┘ │
│ │
╰──────────────────────────────────────────────╯
Host: 运行 AI 模型的应用 (Claude Code, Cursor...)
Client: MCP SDK,处理协议通信
Server: 具体工具的 MCP 适配器
19.4 MCP 的四种核心能力
1. Tools (工具)
让 Agent 执行操作: 创建文件、发送消息、查询数据
类似: USB 设备的"写入"能力
2. Resources (资源)
让 Agent 读取数据: 文件内容、数据库记录、API 响应
类似: USB 设备的"读取"能力
3. Prompts (提示模板)
预定义的交互模式: "代码审查模板"、"Bug 报告模板"
类似: USB 设备的"驱动程序"
4. Sampling (采样请求)
MCP Server 主动请求 AI 进行推理
类似: USB 设备的"中断请求"
💻 模拟 Claude TUI 交互
场景:查看已安装的 MCP 服务
> 我想知道 Claude Code 已经连接了哪些 MCP 服务
╭─ Claude ─────────────────────────────────────────────╮
│ │
│ 🔍 Tool: Read → ~/.claude/settings.json │
│ │
│ 当前已配置的 MCP Servers: │
│ │
│ ╭──────────────────────────────────────────╮ │
│ │ MCP Server │ 状态 │ 工具数量 │ │
│ │─────────────────│───────│────────────│ │
│ │ @anthropic/mcp │ ✅ 在线│ 12 个工具 │ │
│ │ github-mcp │ ✅ 在线│ 8 个工具 │ │
│ │ postgres-mcp │ ❌ 离线│ - │ │
│ │ slack-mcp │ ✅ 在线│ 5 个工具 │ │
│ ╰──────────────────────────────────────────╯ │
│ │
│ 📋 GitHub MCP 可用工具: │
│ - github_create_issue (创建 Issue) │
│ - github_create_pr (创建 Pull Request) │
│ - github_list_repos (列出仓库) │
│ - github_search_code (搜索代码) │
│ - github_read_file (读取文件) │
│ - github_add_comment (添加评论) │
│ - github_merge_pr (合并 PR) │
│ - github_list_issues (列出 Issues) │
│ │
│ 要使用这些工具,直接在对话中描述你想做的事, │
│ 我会自动选择合适的 MCP 工具来执行。 │
│ │
╰──────────────────────────────────────────────────────╯
场景:理解 MCP 与直接 API 调用的区别
> MCP 和直接用 curl 调用 API 有什么区别?
╭─ Claude ─────────────────────────────────────────────╮
│ │
│ 对比一下同样的操作: │
│ │
│ ❌ 直接 API 调用: │
│ curl -X POST https://api.github.com/repos/... │
│ -H "Authorization: Bearer ghp_xxxx" │
│ -H "Content-Type: application/json" │
│ -d '{"title":"Bug fix","body":"..."}' │
│ → 需要你管理 Token、URL、格式 │
│ → 每个 API 的格式都不同 │
│ │
│ ✅ MCP 调用: │
│ "在 my-repo 创建一个 Issue, │
│ 标题是 Bug fix" │
│ → 我自动调用 github_create_issue 工具 │
│ → Token 和格式由 MCP Server 处理 │
│ → 你只需说人话 │
│ │
│ 核心区别: │
│ API: 你适应机器的协议 │
│ MCP: 机器适应你的语言 │
│ │
╰──────────────────────────────────────────────────────╯
💻 代码演示
# ✅ 查看 Claude Code 的 MCP 设置
cat ~/.claude/settings.json
# ✅ 在 settings.json 中配置 MCP Server
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-server-github"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}
# ✅ 项目级 MCP 配置 (.mcp.json)
# 放在项目根目录,仅在该项目中生效
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-server-postgres",
"postgresql://localhost:5432/mydb"]
}
}
}
🔧 MCP 生态一览
| MCP Server | 提供方 | 核心功能 |
|---|---|---|
| GitHub | Anthropic | PR/Issue/代码搜索 |
| Postgres | Anthropic | SQL 查询与管理 |
| Slack | 社区 | 消息读写、频道管理 |
| Jira/Linear | 社区 | 工单创建与状态管理 |
| Google Drive | 社区 | 文档读写 |
| Notion | 社区 | 页面管理 |
| Playwright | 社区 | 浏览器自动化 |
| Excalidraw | 社区 | 绘图 |
📝 本期要点回顾
- MCP 是 AI Agent 的 "USB 标准" — 统一工具连接协议
- Host / Client / Server 三层架构实现即插即用
- 四种核心能力: Tools、Resources、Prompts、Sampling
- MCP 配置分为 全局 (~/.claude/settings.json) 和 项目级 (.mcp.json)
- Anthropic 的目标是建立 开放生态,让所有 AI Agent 共享工具