MCP 协议解析:为什么它是 Agent 的 USB-C
什么是 MCP
MCP(Model Context Protocol)是 Anthropic 提出的开放协议,旨在为 LLM 应用提供一套统一的工具/数据源接入标准。类比 USB-C——MCP 的目标是让任何 LLM 都能以相同的方式连接任何工具和数据源,不再需要为每个集成写自定义胶水代码。
为什么需要 MCP
在 MCP 之前,LLM 应用集成工具的方式是混乱的:
- 每个框架(LangChain、CrewAI、AutoGen)都有自己的工具定义方式
- 每个数据源需要写单独的连接代码
- 工具的多租户、安全、认证逻辑分散在各处
MCP 统一了这场混乱:定义了Host → Client → Server的三层架构和标准通信协议。
架构:Host - Client - Server
┌──────────────────────────────────────────────┐
│ Host(宿主应用) │
│ • 管理用户交互和 LLM 编排 │
│ • 如:Claude Desktop、IDE 插件、自定义 Agent │
│ • 每个 Host 可以连接多个 MCP Server │
├──────────────────────────────────────────────┤
│ Client(MCP 客户端) │
│ • 每个 Server 对应一个 Client 连接 │
│ • 管理连接生命周期和请求路由 │
├──────────────────────────────────────────────┤
│ Server(MCP 服务器) │
│ • 暴露工具、资源、提示模板 │
│ • 如:文件系统 Server、数据库 Server、API Server │
│ • 每个 Server 是一个独立进程 │
└──────────────────────────────────────────────┘
核心能力
| 能力 | 说明 | 示例 |
|---|---|---|
| Tools | 可被 LLM 调用的函数(同步/异步) | SQL 查询、发送邮件、GitHub API |
| Resources | LLM 可以读取的数据源 | 文件内容、API 响应、数据库记录 |
| Prompts | 预定义的提示模板 | 调试模板、总结模板、代码审查模板 |
| Sampling | Server 主动请求 LLM 生成 | Agent 间的交叉验证 |