MCP (Model Context Protocol)
Anthropic 推出的开放协议,让 AI 模型标准化地连接外部工具、数据源和 API,类似于 AI 的 USB-C 接口。
什么是 MCP
MCP(Model Context Protocol)是 Anthropic 于 2024 年 11 月发布的开放协议,用于标准化 AI 模型与外部工具、数据源、API 之间的连接方式。
打个比方:MCP 之于 AI 模型,就像 USB-C 之于电子设备——一个统一接口,连什么都行。
解决什么问题
在 MCP 出现之前,每个 AI 工具要连接外部系统都需要单独开发集成:
- Cursor 想连数据库 → 写一套数据库适配
- Claude Code 想连 GitHub → 写一套 GitHub 适配
- Copilot 想连 Jira → 写一套 Jira 适配
结果是 N 个工具 × M 个数据源 = N×M 套适配代码。
MCP 把这变成 N+M:每个工具实现一次 MCP 客户端,每个数据源实现一次 MCP Server,就可以互相连接。
这是「协议分层」的常见受益模式:HTTP 让任意浏览器能访问任意网站,LSP 让任意编辑器能支持任意语言。MCP 在做的是同一件事,只不过对象从「网页 / 语言」换成「工具 / 数据源」。
工作原理
MCP 采用 Client-Server 架构:
AI 工具(Cursor / Claude Code)
↕ MCP 协议(JSON-RPC 2.0)
MCP Server(文件系统 / 数据库 / API)
↕
实际数据源
三种能力
每个 MCP Server 可以暴露三种能力:
- Tools(工具) — 模型可以调用的函数(查数据库、发邮件、读文件)
- Resources(资源) — 模型可以读取的数据(文件内容、API 响应)
- Prompts(提示词模板) — 预定义的提示词模板(代码审查模板、文档生成模板)
传输方式
- stdio — 本地进程通信(Claude Code 连本地 MCP Server,最常见)
- SSE / HTTP — 远程网络通信(Cursor 连远程托管的 MCP Server)
消息格式
底层是 JSON-RPC 2.0,对调试很友好。一次「列出可用工具」的握手大致是这样:
// Client → Server
{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }
// Server → Client
{
"jsonrpc": "2.0", "id": 1,
"result": {
"tools": [
{
"name": "query_db",
"description": "Run a read-only SQL query",
"inputSchema": {
"type": "object",
"properties": { "sql": { "type": "string" } },
"required": ["sql"]
}
}
]
}
}
随后模型决定调用某个工具,Client 再发 tools/call,Server 返回执行结果。inputSchema 是 JSON Schema,模型据此知道参数怎么传——这套机制和 function calling 同源,但把「函数定义」从「应用内硬编码」搬到了「Server 自我描述」。
实际应用
Cursor + MCP
Cursor 支持 MCP 后,可以:
- 直接读取本地数据库 schema
- 调用外部 API 获取实时数据
- 读取项目文档和设计稿
配置示例(.cursor/mcp.json):
{
"servers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
}
}
}
Claude Code + MCP
Claude Code 原生支持 MCP,通过 claude mcp add 命令添加 Server:
# 添加文件系统 MCP Server
claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /path/to/project
# 添加 GitHub MCP Server
claude mcp add github -- npx -y @modelcontextprotocol/server-github
五分钟上手清单
第一次接入,建议按这个顺序,少踩坑:
- 挑一个无副作用的 Server 试水——
filesystem(只读模式)或sqlite(指向本地测试库)。不要拿github/postgres写库这种带破坏力的当 Hello World。 - 在客户端里确认握手成功——Cursor 设置页 / Claude Code
claude mcp list应能看到工具列表。看不到通常是command路径或args写错。 - 手动让模型调一次——例如「列出当前目录所有 .md 文件」,验证 stdio 通路工作。
- 加一个真实场景的 Server——比如你常用的笔记/数据库/Jira。
- 再考虑写自己的 Server——SDK 见 官方仓库,Python / TypeScript 都有,最小骨架不超过 50 行。
常见 MCP Server
| Server | 功能 |
|---|---|
| filesystem | 读写本地文件 |
| postgres | 查询 PostgreSQL 数据库 |
| sqlite | 查询 SQLite 数据库 |
| github | 操作 GitHub(PR/Issue/搜索) |
| gitlab | 操作 GitLab |
| slack | 发送 Slack 消息 |
| google-drive | 读取 Google Drive 文件 |
| puppeteer | 浏览器自动化 |
| memory | 知识图谱持久记忆 |
| sequential-thinking | 结构化推理 |
完整列表见 modelcontextprotocol.io/servers;社区聚合也可看 Smithery。
与 function calling 的区别
| 维度 | function calling | MCP |
|---|---|---|
| 定义方式 | 每个工具硬编码 | 标准化协议 |
| 跨工具复用 | ❌ | ✅ 一次开发,处处可用 |
| 运行时发现 | ❌ 预定义 | ✅ 动态发现 Server 能力 |
| 生态 | 各自为政 | 统一社区 |
| 底层机制 | 模型 API 直传 schema | 仍是 function calling,但 schema 来自 Server |
简而言之:MCP 没有取代 function calling,而是给「函数定义从哪儿来」加了一层标准化。模型那一端的协议(拿到 schema → 决定调哪个 → 传参 → 收结果)没变。
常见踩坑
- stdio Server 进程没退干净——客户端崩溃时子进程会变孤儿,下次启动连不上端口。Linux/macOS 用
ps aux | grep mcp清掉;Windows 任务管理器搜npx/node。 npx -y首次拉包慢,握手超时——预先在终端跑一次npx -y @modelcontextprotocol/server-foo --help把缓存暖好。- 路径含空格 / 中文——
server-filesystem早期版本对 Windows 路径处理粗糙,建议用全英文路径或链接。 - 凭据明文写在 mcp.json——
mcp.json经常被提交到 git,里面别直接写 DB 密码 / API Key。用环境变量或 Composio 这类托管 Auth 的中间层。 - 生产环境装社区 Server——MCP Server 拿到的是模型可调用权限,恶意 Server 可以让模型「自愿」泄漏数据。社区 Server 上生产前必须审代码,参考 MCP 1.0 发布日的观点。
什么场景不该用 MCP
MCP 不是万能胶水,下面这些场景上 MCP 是给自己加复杂度:
- 只在一个应用内调用,永不复用——直接 function calling 更轻。
- 延迟敏感的同步调用——MCP 多了一层 stdio/HTTP 跳转,纳秒级场景别套。
- 大流量数据搬运——MCP 通信适合「指令 + 元数据」,搬几百 MB 文件应该走旁路(让模型拿到下载链接,而不是把字节流塞进 MCP 消息)。
- 多 Agent 互相协作——这是 A2A 的目标,不是 MCP。一句话区分:MCP 是 Agent ↔ 工具,A2A 是 Agent ↔ Agent。
生态现状
截至 2026 年中,MCP 已被以下工具支持:
- Claude Code / Claude Desktop(Anthropic)— 原生
- Cursor(AI IDE)— 原生
- Windsurf(AI IDE)— 原生
- Cline / Roo Code(CLI)— 原生
- Coze / Dify(Agent 平台)— 部分支持
- VS Code Copilot — 已支持
社区已有 200+ 个开源 MCP Server,覆盖数据库、云服务、开发工具、办公软件等场景。聚合与一键安装可看 Smithery 和 MCP Toolbox,权限/Auth 托管可看 Composio。
延伸阅读
- 协议层面对比:A2A(Agent-to-Agent Protocol)——Agent ↔ Agent 通信
- 基础概念:Function Calling——模型如何决定调用哪个工具
- 行业事件:Anthropic 推出 MCP 协议 1.0