第08期 · MCP 协议:AI 工具集成的 USB 标准
系列 :每日 AI 知识点
期数 :第 08 期
主题 :MCP 协议(Model Context Protocol)
难度 :⭐⭐⭐(进阶)
一句话:MCP 是 Anthropic 提出的 AI 工具集成统一标准,让任何 AI 都能以标准化方式调用任何工具,正在成为行业规范。
一、MCP 诞生的背景
工具集成的"碎片化"困境
在 MCP 出现之前,AI 工具集成是一片混乱:
问题一:每个 AI 都有自己的接口格式
bash
# OpenAI 的工具调用格式
{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {...}
}
}
# Anthropic Claude 的工具调用格式
{
"type": "tool_use",
"name": "get_weather",
"input": {...}
}
# 自定义 AI 的格式
{
"action": "get_weather",
"args": {...}
}
同一个工具,要为不同的 AI 写三套不同的集成代码。
问题二:工具换 AI 就要重写
你为 Claude 开发了一个数据库查询工具,换成 GPT-4 就要重写接口适配代码。
问题三:生态无法共享
A 公司开发了一个优秀的 TAPD 工具,B 公司想用,但因为接口不兼容,还是要自己重写。
MCP 的解决方案
MCP(Model Context Protocol,模型上下文协议) 是 Anthropic 在 2024 年 11 月发布的开放标准,目标是:
让任何 AI 都能以标准化方式调用任何工具,就像 USB 接口一样即插即用。
二、MCP 的核心概念

类比理解:USB 接口
没有 USB 标准的世界:
鼠标有鼠标接口
键盘有键盘接口
U盘有U盘接口
→ 每台电脑需要无数种接口,每个设备只能用特定电脑
有了 USB 标准:
所有设备统一使用 USB 接口
→ 任何设备可以接任何电脑,生态爆发
MCP 对 AI 工具集成的意义完全相同:
所有工具统一使用 MCP 接口
→ 任何工具可以被任何支持 MCP 的 AI 使用
MCP 的数学优势
arduino
没有 MCP:
N 个 AI × M 个工具 = N×M 个集成代码
有了 MCP:
N 个 AI + M 个工具 = N+M 个集成代码
(每个 AI 只需实现一次 MCP Client,
每个工具只需实现一次 MCP Server)
三、MCP 的三层架构

第一层:Host(宿主应用)
Host 是用户直接交互的 AI 应用:
| Host 类型 | 示例 |
|---|---|
| 桌面 AI 应用 | Claude Desktop、ChatGPT Desktop |
| IDE 插件 | Cursor、GitHub Copilot |
| 自定义 AI 应用 | 企业内部 AI 助手(如 Knot) |
| 命令行工具 | Claude CLI |
Host 的职责:
- 管理用户对话流程
- 内置 MCP Client
- 决定加载哪些 MCP Server
第二层:Client(连接器)
MCP Client 通常内置在 Host 中,负责:
arduino
1. 发现:扫描配置,找到可用的 MCP Server
2. 连接:建立与 MCP Server 的通信连接
3. 协商:获取 Server 提供的工具列表
4. 转发:将 AI 的工具调用请求转发给 Server
5. 返回:将 Server 的执行结果返回给 AI
第三层:Server(工具提供者)
MCP Server 封装具体的工具能力,提供三类资源:
Tools(工具):AI 可以调用的函数
python
# 一个 GitHub MCP Server 的工具定义示例
@mcp.tool()
def list_pull_requests(repo: str, state: str = "open") -> list:
"""列出指定仓库的 Pull Request"""
return github_api.get_pulls(repo, state=state)
@mcp.tool()
def create_issue(repo: str, title: str, body: str) -> dict:
"""在仓库中创建 Issue"""
return github_api.create_issue(repo, title=title, body=body)
Resources(资源):AI 可以读取的数据
python
# 文件系统 MCP Server 的资源定义
@mcp.resource("file://{path}")
def read_file(path: str) -> str:
"""读取指定路径的文件内容"""
with open(path, 'r') as f:
return f.read()
Prompts(提示词):预定义的提示模板
python
# 预定义的代码审查提示词
@mcp.prompt()
def code_review_prompt(language: str, code: str) -> str:
return f"""请对以下 {language} 代码进行专业审查:
代码:
{code}
请从以下维度分析:
1. 代码质量和可读性
2. 潜在的 Bug 和安全风险
3. 性能优化建议
4. 符合最佳实践的程度"""
四、MCP 工具调用完整流程

详细流程解析
步骤一:初始化阶段(一次性)
markdown
Host 启动时:
1. 读取 MCP 配置文件,找到所有配置的 MCP Server
2. 建立连接,获取每个 Server 提供的工具列表
3. 将所有工具信息注入到 AI 的系统提示词中
系统提示词示例:
「你有以下工具可以使用:
- github.list_pull_requests(repo, state): 列出PR
- github.create_issue(repo, title, body): 创建Issue
- filesystem.read_file(path): 读取文件
...」
步骤二:工具调用阶段(每次对话)
arduino
1. 用户:「帮我查一下 palm_lpos_app 仓库最近的 PR」
2. AI 思考:
「用户想查 PR,我有 github.list_pull_requests 工具
参数:repo="palm_lpos_app", state="open"」
3. AI 生成工具调用:
{
"tool": "github.list_pull_requests",
"arguments": {
"repo": "palm_lpos_app",
"state": "open"
}
}
4. MCP Client 接收调用请求,转发给 GitHub MCP Server
5. GitHub MCP Server 执行:
调用 GitHub API → 获取 PR 列表 → 返回结果
6. 结果返回给 AI:
[
{"id": 123, "title": "修复支付回调超时问题", "author": "zhangsan"},
{"id": 124, "title": "优化掌纹识别算法", "author": "lisi"}
]
7. AI 整合结果,生成自然语言回答:
「palm_lpos_app 仓库目前有 2 个待合并的 PR:
1. #123 修复支付回调超时问题(zhangsan)
2. #124 优化掌纹识别算法(lisi)」
五、主流 MCP Server 生态
截至 2025 年,MCP 生态已经相当丰富:
官方 MCP Server
| MCP Server | 功能 | 适用场景 |
|---|---|---|
| Filesystem | 读写本地文件 | 文档处理、代码操作 |
| GitHub | 仓库、PR、Issue 管理 | 代码协作 |
| Google Drive | 云端文件操作 | 文档共享 |
| Slack | 消息发送、频道管理 | 团队通信 |
| PostgreSQL | 数据库查询 | 数据分析 |
| Brave Search | 网页搜索 | 实时信息获取 |
社区 MCP Server
| MCP Server | 功能 |
|---|---|
| TAPD MCP | 腾讯 TAPD 需求管理 |
| 工蜂 MCP | 腾讯工蜂代码仓库 |
| Jira MCP | Atlassian Jira 项目管理 |
| Linear MCP | Linear 任务管理 |
| Notion MCP | Notion 文档操作 |
自定义 MCP Server(企业内部)
python
# 用 Python 快速实现一个自定义 MCP Server
from mcp.server import FastMCP
mcp = FastMCP("刷掌设备管理 MCP")
@mcp.tool()
def query_device_status(device_sn: str) -> dict:
"""查询刷掌设备的实时状态"""
return device_api.get_status(device_sn)
@mcp.tool()
def list_active_alarms(severity: str = "P0") -> list:
"""列出当前活跃的告警"""
return alarm_system.get_alarms(severity=severity)
@mcp.tool()
def trigger_device_restart(device_sn: str) -> bool:
"""触发设备重启(需要权限验证)"""
return device_api.restart(device_sn)
if __name__ == "__main__":
mcp.run()
六、MCP 配置实践
Claude Desktop 配置示例
json
// ~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your_token_here"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem",
"/home/user/workspace"]
},
"tapd": {
"command": "mcporter",
"args": ["--server", "tapd"]
},
"palm-device": {
"command": "python3",
"args": ["/path/to/palm_device_mcp.py"]
}
}
}
配置完成后,Claude Desktop 就能自动发现和使用这些工具。
Knot 平台的 MCP 集成
Knot 平台内置了 MCP 支持,可以通过配置直接使用企业内部的 MCP Server:
arduino
可用的 MCP Server(Knot 平台):
✅ TAPD MCP - 需求和缺陷管理
✅ 工蜂 MCP - 代码仓库操作
✅ iWiki MCP - 企业知识库
✅ 刷掌设备 MCP - 设备状态和告警
✅ 蓝盾 MCP - CI/CD 流水线
七、MCP 的安全考虑
权限控制
python
# MCP Server 中的权限验证示例
@mcp.tool()
def delete_device_data(device_sn: str) -> bool:
"""删除设备数据(危险操作)"""
# 验证调用者权限
if not auth.has_permission("device:delete"):
raise PermissionError("无权执行此操作")
# 记录操作日志
audit_log.record("delete_device_data", device_sn)
# 执行操作
return device_api.delete_data(device_sn)
敏感信息保护
python
# 避免在工具描述中暴露敏感信息
@mcp.tool()
def query_user_info(user_id: str) -> dict:
"""查询用户信息"""
data = db.query(user_id)
# 脱敏处理,不返回敏感字段
return {
"name": data["name"],
"device_count": data["device_count"],
# 不返回:phone、id_card、bank_account
}
操作审计
diff
所有通过 MCP 执行的操作都应该记录审计日志:
- 操作时间
- 操作者(哪个 AI 应用)
- 操作内容(调用了哪个工具,传入什么参数)
- 操作结果
八、MCP vs 传统 API 集成
| 对比维度 | 传统 API 集成 | MCP |
|---|---|---|
| 集成成本 | 每个 AI 单独开发 | 一次开发,多处使用 |
| 标准化程度 | 各自为战 | 统一协议 |
| 生态共享 | 无法共享 | 社区共享 |
| AI 感知 | AI 不知道有哪些工具 | AI 自动发现工具 |
| 工具描述 | 需要手动注入提示词 | 自动注入 |
| 适用场景 | 固定集成 | 动态扩展 |
九、一句话总结
MCP = AI 工具集成的 USB 标准。它定义了 AI(Host/Client)和工具(Server)之间通信的统一协议,让工具开发者只需实现一次 MCP Server,就能被所有支持 MCP 的 AI 使用,正在成为 AI 工具集成领域的行业规范。
延伸阅读
- 官方文档 :Model Context Protocol Specification
- 官方 GitHub :github.com/modelcontex...
- MCP Server 市场 :mcp.so --- 社区 MCP Server 汇总
下一期预告:第09期 · Skills 技能体系 --- MCP 让 AI 能调用工具,Skills 则让 AI 拥有"专业能力模块"。了解如何通过 Skills 让 AI 从通才变专才。