MCP 协议详解:AI 世界的 USB 接口
Anthropic 2024 提出的 MCP——让任何工具能接入任何 LLM。一年时间成为 AI Agent 生态的事实标准。
L4-04 我们讲过 Agent —— 让 LLM 调用工具。 但有个问题:每个工具都要为每个 LLM 单独写适配。
工具 A → 适配 GPT
工具 A → 适配 Claude
工具 A → 适配 Gemini
工具 B → 适配 GPT
工具 B → 适配 Claude
...
N 个工具 × M 个 LLM = N×M 个适配
Anthropic 2024 年提出 MCP(Model Context Protocol)解决这个—— 统一接口,任意工具 ↔ 任意 LLM。
MCP 是什么
类比:
USB 之于硬件 = MCP 之于 AI 工具
USB 接口出现前,每个设备都用独家接口—— 你想插键盘到电脑,得有专门的 IBM 接口。 USB 统一一切——所有设备都用同一种插口。
MCP 干同样的事—— 统一了”AI 工具的接口规范”。
任何工具 ────MCP────→ 任何 LLM
↓
(MCP Server)
↓
- Google Drive
- GitHub
- 数据库
- 自定义工具
MCP 的设计
三层架构
LLM Client
↑↓ MCP Protocol
MCP Host (管理连接)
↑↓ JSON-RPC over stdio / HTTP
MCP Server (实际工具)
↑↓
External Service (Google Drive, GitHub, etc.)
每一层职责明确:
- LLM Client:模型层(Claude / GPT 等)
- MCP Host:协调多个 server
- MCP Server:每个工具一个 server,负责具体功能
三种”原语”(Primitives)
MCP 定义了工具能做的 3 件事:
1. Tools(工具)
LLM 可以调用的”函数”:
{
"name": "search_files",
"description": "Search for files in a directory",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string"},
"path": {"type": "string"}
}
}
}
LLM 看到这个 schema——知道怎么调用。
2. Resources(资源)
LLM 可以”读”的内容:
{
"uri": "gdrive://documents/quarterly-report.pdf",
"name": "Q3 财报",
"mimeType": "application/pdf"
}
LLM 可以请求读取这个资源—— MCP server 返回内容。
3. Prompts(提示词)
预定义的工作流:
{
"name": "analyze_codebase",
"description": "Analyze a code repository",
"arguments": [
{"name": "repo_path", "required": true}
]
}
用户能触发预设流程—— LLM 知道怎么完成。
一个简单 MCP Server
用 Python 写一个最简 MCP server:
from mcp.server import Server
from mcp.types import Tool, TextContent
server = Server("my-tool")
@server.list_tools()
async def list_tools():
return [
Tool(
name="add_numbers",
description="Add two numbers",
inputSchema={
"type": "object",
"properties": {
"a": {"type": "number"},
"b": {"type": "number"}
},
"required": ["a", "b"]
}
)
]
@server.call_tool()
async def call_tool(name, arguments):
if name == "add_numbers":
result = arguments["a"] + arguments["b"]
return [TextContent(type="text", text=str(result))]
if __name__ == "__main__":
import asyncio
asyncio.run(server.run_stdio())
把这个 server 启动 → Claude Desktop / Cursor 等支持 MCP 的客户端能立刻使用它。
MCP 生态(2026 现状)
发布一年后,MCP 已经成为事实标准:
已支持 MCP 的客户端
- Claude Desktop(Anthropic 旗下,最早支持)
- Cursor(编程 IDE)
- Cline(自主 Agent)
- Continue(开源 Cursor 替代)
- Block Goose(Block 公司)
- Sourcegraph Cody
- Replit Agent
主流 MCP Server
| 类别 | 例子 |
|---|---|
| 文件 / 代码 | filesystem, git, github |
| 数据库 | postgres, mongodb, sqlite |
| 协作工具 | Slack, Discord, Linear |
| 云存储 | Google Drive, S3, Dropbox |
| API 平台 | Stripe, Notion, Airtable |
| 浏览器 | Playwright, Puppeteer |
| 开发工具 | docker, kubernetes |
| AI 工具 | image-gen, transcription |
社区贡献了 1000+ MCP server—— 任何流行工具几乎都有 MCP 接入。
用例:Claude Desktop + MCP
让 Claude 直接管理你的本地文件、Git、数据库:
# 1. 安装 Claude Desktop(支持 MCP)
# 2. 安装 MCP server
npm install -g @modelcontextprotocol/server-filesystem
npm install -g @modelcontextprotocol/server-github
# 3. 在 Claude Desktop 配置文件里加这些 servers
# 4. 重启 Claude Desktop
# 5. 在对话里使用!
"帮我看看 /Users/me/projects/myapp 目录下的所有 Python 文件,
找出 TODO 注释,并打开对应的 GitHub issue。"
Claude 会自动:
- 用 filesystem server 列出目录
- 读取每个 .py 文件
- 找 TODO
- 用 github server 创建 issue
Agent 工作流——一句话搞定。
MCP 解决了什么
之前
每个 AI 应用要:
- 写工具调用的 prompt
- 处理调用结果
- 维护工具的 schema
- 适配不同 LLM 的工具调用格式
每个工具开发者要:
- 为 OpenAI 写适配
- 为 Anthropic 写适配
- 为 Google 写适配
- 维护多个版本
重复工作爆炸。
MCP 之后
工具开发者:写一次 MCP server,所有 LLM 都能用。 LLM 厂商:支持 MCP 协议,所有工具都能用。 应用开发者:配置 MCP server,模型自动调用。
N+M 复杂度替代 N×M。
MCP 的安全考虑
让 LLM 能调本地工具—— 安全风险显著:
1. Prompt Injection 风险
用户输入或工具返回里藏的恶意指令—— 可能让 LLM 调用危险工具。
例:用户问”看下这个邮件”——邮件里藏着”删除所有文件”指令。
2. 权限控制
MCP 工具能做什么?要严格限制:
- 白名单:只允许特定目录 / 命令
- 沙箱:隔离环境运行
- 审批:危险操作需用户确认
3. 数据出口
MCP server 可能把数据发到外部—— 审计这些 server 的代码至关重要。
Anthropic 在 MCP 设计中强调了”权限模型”和”用户控制”—— 但实践中很多 MCP server 仍是社区写的,可能有问题。
与同期方案对比
OpenAI Function Calling(2023)
专为 OpenAI 模型设计—— 不是开放标准。
tools = [{
"type": "function",
"function": {...}
}]
response = openai.chat.completions.create(tools=tools, ...)
问题:只能用于 OpenAI。换 Claude 要重写。
LangChain Tools(2022+)
LangChain 提供了”工具抽象层”—— 适配多个 LLM。
问题:是个库(要写代码),不是协议(标准接口)。 工具开发者仍需为 LangChain 写适配。
MCP(2024)
真正的开放协议——
- 任何 LLM 都能用
- 任何工具都能用
- JSON-RPC 标准
- 跨语言(Python、TypeScript、Go、Rust)
MCP 类似 HTTP / SMTP——协议层的标准,不是某个库。
MCP 的未来
2026 现状
- 已是 AI Agent 生态的事实标准
- OpenAI、Google 等都在评估支持
- 微软 Copilot 已部分支持
可能的演化
- MCP 2.0:更完善的状态管理、并发支持
- MCP for Multimodal:支持图像、音频流
- MCP for Federated:跨组织调用
- MCP Auth:标准化权限模型
风险
- 碎片化:如果不同厂商加自家扩展——协议分裂
- 被替代:可能出现更好的协议
现在看 MCP 在 2024-2026 的发展势头—— 它会至少主导未来 3-5 年的 AI 工具生态。
实战:怎么开始
我是个用户
- 安装 Claude Desktop(最佳 MCP 体验)
- 配置 1-2 个 MCP server(filesystem, github 等)
- 玩起来——你会发现 “Agent” 真的能干活
我是个开发者
想做 AI Agent 应用?
- 写自己的 MCP server 暴露你的业务能力
- 让用户用任何 LLM 客户端调用你的工具
- 不需要锁定到某个 LLM 厂商
我是个SaaS 公司
强烈考虑——为你的产品发布 MCP server:
- Notion 有 MCP server
- Linear 有 MCP server
- 你的产品没有?用户用别人的了。
MCP 正在重塑”工具集成”的市场。
推荐配套阅读
- HelloAI: L4-04 Agent + L4-09 Tool Use(下一篇)
- MCP 官方文档(modelcontextprotocol.io)
- MCP GitHub —— SDKs in Python/TypeScript/Go
- Anthropic 的 MCP 介绍博客
2027 年 Claude Desktop / Cursor / Cline 等支持 MCP 的客户端用户数将达 1 亿+—— MCP 会成为 AI 时代的 “HTTP”。
如果你做 AI 工具——今天就支持 MCP。 不支持 = 错过未来 3-5 年的生态。
下一篇推荐:L4-08 LLM 评估 或 L4-09 Tool Use 实战。
读到这里说明你认真在学 🎯
订阅每周精选 —— 下一篇新文章 / 新可视化第一时间送到邮箱。
讨论区
· 用 GitHub 账号登录评论src/components/Comments.astro 顶部填入
仓库 ID 和分类 ID(见组件注释里的配置步骤)。