MCP 协议:AI 工具的"USB-C"统一标准
MCP(Model Context Protocol)是 Anthropic 推出的 AI 工具统一协议,被誉为 AI 时代的 USB-C。本文详解其原理、价值与上手指南。
MCP 协议:AI 工具的"USB-C"统一标准
2024 年 11 月,Anthropic 发布了 Model Context Protocol(MCP)。半年内,OpenAI、Google、Microsoft、Cursor 等纷纷采纳。它被誉为 AI 工具的 USB-C 标准。
一、为什么需要 MCP
1.1 之前的混乱:M×N 集成问题
没有 MCP 时:
- Cursor 要连 GitHub → 写一套集成
- Claude 要连 GitHub → 写一套集成
- ChatGPT 要连 GitHub → 又写一套集成
每多一个 AI 工具 × 每个 SaaS = 新的集成工作
N 个 AI × M 个 SaaS = N×M 集成噩梦
1.2 MCP 的解决方案
有了 MCP 后:
- GitHub 实现一次 MCP Server
- 所有支持 MCP 的 AI 都能用
N 个 AI × M 个 SaaS = N + M 个实现
这就是 USB-C 的故事:以前每台设备一个接口,现在一根线通用。
二、MCP 是什么
2.1 核心概念
MCP = Model Context Protocol
模型上下文协议
连接 AI 模型 与 工具/数据 的标准协议
让 AI 能访问本地文件、数据库、API、Git 等
2.2 三个核心角色
1. Host(主机)
- Claude Desktop、Cursor、Cline 等
- AI 应用本身
2. Client(客户端)
- Host 内置的 MCP 客户端
- 负责与 Server 通信
3. Server(服务器)
- 提供具体能力的工具
- 例如:文件系统、GitHub、Postgres
- 每个 Server 是一组 tools + resources + prompts
2.3 三大原语
MCP Server 暴露三类能力: Tools:可调用的函数(类似 OpenAPI)
@mcp.tool()
def search_github(query: str) -> list[dict]:
"""搜索 GitHub 仓库"""
return github.search(query)
Resources:可读取的资源(文件、数据库行)
@mcp.resource("file:///{path}")
def read_file(path: str) -> str:
"""读取文件内容"""
return open(path).read()
Prompts:可复用的提示词模板
@mcp.prompt()
def code_review(code: str) -> str:
return f"请审查以下代码:\n\n{code}"
三、MCP 工作原理
3.1 协议基础
MCP 基于 JSON-RPC 2.0
传输:stdio(本地)/ HTTP + SSE(远程)
消息格式:JSON
3.2 一次工具调用流程
1. 用户:"帮我看看 ~/Documents/report.pdf 的最新修改"
2. AI 思考 → 决定调用 read_file 工具
3. Client 通过 MCP 协议发送请求给 Server:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "read_file",
"arguments": {"path": "report.pdf"}
}
}
4. Server 执行:open("report.pdf").read()
5. Server 返回结果
6. AI 收到结果,整理成回答
7. 用户看到:"最新修改是第 3 页... "
3.3 资源读取
类似但更轻量:直接读取数据,不需要执行
3.4 提示词模板
Client 请求 Server 返回预设的 prompt
用户填入参数
提交给 AI
四、MCP vs Function Calling
4.1 Function Calling(OpenAI 2023)
- 每个 AI 厂商有自己的格式
- 不通用
- 需要为每个 AI 重新适配
4.2 MCP(2024)
- 统一协议
- 一次开发,所有 AI 可用
- 类似 LSP(Language Server Protocol)
| 维度 | Function Calling | MCP |
|---|---|---|
| 标准 | 各家私有 | 开放标准 |
| 集成 | N×M | N+M |
| 调试 | 各家工具 | 统一调试器 |
| 生态 | 各自封闭 | 共享 |
五、上手指 MCP
5.1 用现成的 MCP Server
社区已有 100+ MCP Server:
# 官方服务器列表
- @modelcontextprotocol/server-filesystem
- @modelcontextprotocol/server-github
- @modelcontextprotocol/server-postgres
- @modelcontextprotocol/server-puppeteer
- @modelcontextprotocol/server-slack
# 社区服务器
- mcp-server-notion
- mcp-server-linear
- mcp-server-jira
5.2 在 Claude Desktop 配置
// claude_desktop_config.json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/Documents"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {"GITHUB_TOKEN": "xxx"}
},
"postgres": {
"command": "python",
"args": ["-m", "mcp_server_postgres", "--connection-string=postgres://..."]
}
}
}
5.3 在 Cursor 配置
// ~/.cursor/mcp.json
{
"mcpServers": {
"github": {
"url": "https://mcp.github.com/sse",
"headers": {"Authorization": "Bearer xxx"}
}
}
}
六、构建第一个 MCP Server
6.1 Python 实现
# 安装
pip install mcp
# my_server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("my-server")
@mcp.tool()
def get_weather(city: str) -> str:
"""获取城市天气"""
# 调用天气 API
return f"{city} 的天气是..."
@mcp.resource("file:///{path}")
def read_file(path: str) -> str:
"""读取文件"""
with open(path) as f:
return f.read()
if __name__ == "__main__":
mcp.run()
6.2 TypeScript 实现
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
const server = new McpServer({
name: "my-server",
version: "1.0.0",
});
server.tool(
"get_weather",
{ city: z.string() },
async ({ city }) => ({
content: [{ type: "text", text: `${city} 天气是...` }],
})
);
server.run();
6.3 调试 MCP Server
# 用 MCP Inspector
npx @modelcontextprotocol/inspector
# 它会启动一个 Web UI
# 可以测试每个 tool、resource、prompt
七、真实应用场景
7.1 个人效率
MCP 服务器组合:
- filesystem:访问本地文件
- github:管理代码仓库
- notion:管理笔记
- calendar:管理日程
AI 助手能:
- "帮我写一份 [主题] 的报告,参考 ~/Documents/notes/"
- "把今天的工作总结到 Notion"
- "查找所有关于 [主题] 的 GitHub Issue"
7.2 团队协作
MCP 服务器:
- jira:项目管理
- slack:团队沟通
- github:代码
- figma:设计
AI 助手能:
- "这个 bug 的相关讨论在哪?"
- "把设计稿转成前端代码"
- "分析团队效率"
7.3 企业级
私有 MCP 服务器:
- 数据库查询
- 内部 API
- ERP/CRM
AI 助手能:
- 回答业务问题
- 自动生成报告
- 辅助决策
八、未来展望
8.1 短期(2025-2026)
- MCP Server 数量爆发:100 → 10,000+
- AI 工具全面支持:所有主流 AI 都内置 MCP 客户端
- MCP 调试工具成熟:类似 Postman
8.2 中期(2027-2028)
- MCP 市场:买卖 MCP Server
- MCP 安全标准:防止恶意 Server
- 远程 MCP:跨网络调用(已部分支持)
8.3 长期
- AI 操作系统:MCP 是"系统调用"
- AI 应用商店:MCP Server 是"应用"
- AI 互联网:MCP 协议是"HTTP"
九、上手指南
9.1 第一天
- 安装 Claude Desktop
- 配置一个 filesystem MCP Server
- 让 AI 总结你的文件夹
9.2 第一周
- 添加 github、notion 等 Server
- 尝试复杂任务:跨多个工具的工作流
- 找到你最常用的 3 个 MCP Server
9.3 第一月
- 自己写一个简单的 MCP Server
- 分享给团队或社区
- 探索更复杂的应用
十、给开发者的启示
10.1 立即行动
- 试试 MCP:Claude Desktop + filesystem server
- 找痛点:哪些重复工作可以让 AI 做?
- 写 MCP Server:把内部工具变成 MCP
10.2 长期价值
MCP 是 AI 时代的 HTTP。- HTTP 让 web 互联 → MCP 让 AI 工具互联
- 早期 web 公司靠 HTTP 赚钱 → 早期 MCP 公司靠 AI 工具赚钱
MCP 不会取代任何现有技术,它让 AI 真正变得"有用"。
当 AI 能访问你的所有数据 + 所有工具 + 所有服务时, 它就从"聊天机器人"变成"真正的助手"。
💬 评论 0 条
暂无评论 — 来做第一个发声的人 ✨