第 10 章
MCP 集成
标准化连接外部世界
🎯
像 USB 接口
还记得以前每个品牌的手机都有不同的充电线吗?后来 USB-C 统一了接口标准,任何设备都能用同一条线连接。MCP(Model Context Protocol)就是 AI Agent 世界的「USB-C」—— 一个统一的协议标准,让 Agent 可以用相同的方式连接各种外部服务。
什么是 MCP?
MCP 是 Model Context Protocol(模型上下文协议)的缩写,由 Anthropic 提出。
它解决的问题是:如何让不同的 Agent 和不同的外部服务之间实现标准化通信?
在 MCP 出现之前,每个 Agent 要接入外部服务(比如 GitHub、Slack、数据库)都需要写定制代码。有了 MCP,只要外部服务提供一个 MCP Server,任何支持 MCP 的 Agent 都能立即使用它。
| 对比项 | 没有 MCP | 有 MCP |
|---|---|---|
| 接入新服务 | 每个 Agent 写定制代码 | 服务提供 MCP Server,所有 Agent 直接用 |
| 接口格式 | 每个服务格式不同 | 统一的 JSON-RPC 协议 |
| 工具发现 | 硬编码 | 动态发现,运行时注册 |
| 生态复用 | 各自开发,重复劳动 | 社区共建,一次开发处处使用 |
MCP 的三个核心概念
1. MCP Server(服务端)
提供工具和资源的外部服务。比如一个 GitHub MCP Server 可以提供「创建 PR」「查看 Issue」等工具。
2. MCP Client(客户端)
Agent 侧的连接器,负责与 MCP Server 通信。OpenHarness 内置了 MCP Client。
3. MCP Tool(工具)
MCP Server 暴露的工具。这些工具会被动态注册到 Agent 的工具列表中,LLM 可以像使用内置工具一样使用它们。
配置 MCP Server
settings.json
1{2 "mcp_servers": {3 "github": {4 "command": "npx",5 "args": ["-y", "@modelcontextprotocol/server-github"],6 "env": {7 "GITHUB_TOKEN": "your-token"8 }9 },10 "filesystem": {11 "command": "npx",12 "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"]13 }14 }15}
在 settings.json 中配置要连接的 MCP Server:
MCP 在 OpenHarness 中的工作流程
1. 启动时,OpenHarness 读取配置中的 MCP Server 列表
2. 为每个 Server 启动连接(通过 MCPClientManager)
3. 查询每个 Server 提供了哪些工具
4. 将这些工具动态注册到工具注册表中
5. LLM 在工具列表中看到这些 MCP 工具,可以正常调用
6. 调用时,请求通过 MCP Client 转发到对应的 Server
整个过程对 LLM 是透明的 —— 它不区分内置工具和 MCP 工具。
📌 关键要点
MCP = 标准化的扩展接口
MCP 让 Agent 的能力不再局限于内置工具。通过这个标准协议,Agent 可以连接任意外部服务。这是 Agent 生态发展的关键 —— 社区可以共建 MCP Server,所有支持 MCP 的 Agent 都能受益。
🧠 检验理解
MCP 解决的核心问题是什么?