MCP协议为何选择 JSON-RPC 2.0?一文看懂底层通信标准
一、MCP 协议概述MCP(Model Context Protocol)是一项为大型语言模型(LLM)量身定制的开放标准,旨在统一“模型 ↔ 外部工具/数据源”交互接口,让 AI 智能体能够安全、高效地调用功能、读取资源、复用提示。
二、底层消息格式——JSON-RPC 2.0MCP 所有客户端-服务器消息均封装在 JSON-RPC 2.0 之上。JSON-RPC 是轻量级、无状态的远程过程调用协议,以 {"jsonrpc":"2.0","method":"...","params":{...},"id":1}
的统一结构描述请求与响应,天然适配多种传输层(Stdio、HTTP、SSE 等)。
三、为何选用 JSON-RPC 2.0
- 跨语言可移植:JSON 表示简单,主流语言均有成熟实现;开发者几乎零门槛集成。
- 双向对等模式:同一连接内既可发请求也可收响应,满足 MCP 的双向调用与事件推送需求。
- 与传输层解耦:消息独立于 TCP、HTTP 或本地管道,支持灵活切换和扩展。
- 扩展空间充足:在原生字段外可安全添加会话 ID、能力协商等自定义元素,保持前向兼容。
四、JSON-RPC 在 MCP 中的三类消息
- Request:LLM 或工具端主动调用方法,例如
mcp.runTool
。 - Response:服务器返回
result
或error
,供客户端解析。 - Notification:无需响应的单向事件,如进度更新或资源变更提示。
五、开发与运维实践
- 统一错误码:在
error.code
中使用枚举,方便模型根据类型选择重试或降级策略。 - 幂等 ID:为高风险操作加上去重标识,防止网络抖动导致重复执行。
- 长连接与批量:合理利用持久连接与批量请求,降低握手开销、提升吞吐。
- 监控与审计:对 JSON-RPC 消息链路埋点,追踪延迟、成功率与成本。
六、总结JSON-RPC 2.0 为 MCP 提供了统一、轻量且可扩展的通信骨架。凭借其跨语言易实现、双向流式友好以及与传输层解耦的优势,MCP 得以快速成为 AI 智能体调用外部工具的“USB-C”标准接口。