知识库
知识wiki
MCP 协议详解:定义、协议规范与应用
概述
MCP(Model Context Protocol)是 Anthropic 于 2024 年 11 月推出的开放协议标准,定义了 AI Agent(客户端)与外部工具(服务端)之间的通信规范。协议基于 JSON-RPC 2.0 请求-响应模型,支持 stdio 和 SSE 两种传输方式。
MCP 的核心目标是为 AI Agent 提供统一的工具接入接口,使不同 LLM 和工具之间能够互操作,解决此前各框架独立定义工具接口的碎片化问题。
核心术语
| MCP Host | 运行 Agent 的主程序,如 Claude Desktop、OpenClaw Gateway |
| MCP Client | Host 内部与 MCP Server 通信的协议客户端 |
| MCP Server | 提供工具和资源的独立服务进程,每个 Server 运行在独立进程中 |
| Tool | Server 对外暴露的可调用函数,包含 name、description、inputSchema |
| Resource | Server 提供的可访问数据,通过 URI 标识 |
| JSON-RPC 2.0 | MCP 使用的远程过程调用协议,无状态、轻量级 |
协议特征
| 特性 | 说明 |
|---|---|
| 传输层 | stdio(本地进程间通信)或 SSE(Server-Sent Events,远程连接) |
| 数据格式 | JSON-RPC 2.0 请求-响应模型 |
| 服务发现 | Server 启动时自动广播可用工具列表 |
| 进程隔离 | 每个 MCP Server 运行在独立进程中,天然沙箱 |
| 双向通信 | Server 可以通过 Notification 向 Client 推送事件 |
| 传输安全 | stdio 模式无网络暴露;SSE 模式依赖传输层安全 |
协议架构
MCP 的通信流程:
┌─────────────┐ JSON-RPC 2.0 ┌─────────────┐
│ MCP Client │ ──────────────────→ │ MCP Server │
│ (Agent运行) │ ←────────────────── │ (工具服务) │
└─────────────┘ └─────────────┘
│ │
│ 发现: list_tools() │ 注册: 提供Tool列表
│ 调用: call_tool(name, args) │ 执行: 运行工具逻辑
│ 资源: read_resource(uri) │ 响应: 返回执行结果
启动流程:
- MCP Server 启动,通过 stdin/stdout 或 SSE 连接
- Server 在 initialize 阶段广播自身能力(可用工具、资源列表)
- Client 请求工具列表(list_tools),获取每个工具的 name、description、inputSchema
- Agent 根据任务需要,调用对应工具(call_tool)
- Server 执行工具逻辑,返回结构化结果
相关协议对比
| 维度 | MCP | OpenAI Function Calling | 传统 Plugin |
|---|---|---|---|
| 标准化 | 开放标准 | 厂商绑定 | 平台绑定 |
| 跨模型 | 是 | 仅 OpenAI | 仅本平台 |
| 资源模型 | 完整 URI 体系 | 无 | 有限 |
| 工具发现 | 自动(启动时广播) | 需注册 | 需审批 |
| 进程隔离 | 是(独立进程) | 否 | 否 |
工具定义格式
MCP Server 暴露的每个 Tool 包含三个核心字段:
- name — 工具名称,Agent 通过该名称调用工具
- description — 工具描述,Agent 判断何时使用该工具的参考
- inputSchema — JSON Schema 格式的参数定义,描述工具所需的输入参数
{
"name": "get_weather",
"description": "查询指定城市的实时天气",
"inputSchema": {
"type": "object",
"properties": {
"city": { "type": "string", "description": "城市名称" }
},
"required": ["city"]
}
}
应用场景
- 文件操作 — 读写文件、管理目录(MCP Server 通过 stdio 运行,访问本地文件系统)
- 数据库查询 — Agent 通过 MCP 调用 SQL 查询接口,获取数据
- Web API 集成 — 封装 REST API 为 MCP Tool,让 Agent 调用第三方服务
- 搜索/检索 — 搜索本地文档、网页或知识库
- 代码执行 — 在安全沙箱中运行代码并返回结果
主要限制
- 工具粒度 — Tool 定义粒度过粗或过细都会影响 Agent 的工具选择能力
- 描述质量 — Agent 依赖工具描述来判断何时使用,描述不清晰会导致调用错误
- 性能开销 — 每个 MCP Server 占用独立进程,大量工具会消耗系统资源
- 协议成熟度 — MCP 仍处于快速演进阶段,规范可能发生变化

黑公网安备 23010302001359号