AgentHubAgentHub
Back to Blog

深度拆解 Model Context Protocol 规范:JSON-RPC 2.0 传输与全生命周期状态机

AgentHub 核心团队··2 min read·93 views
深度拆解 Model Context Protocol 规范:JSON-RPC 2.0 传输与全生命周期状态机

为什么需要协议级的标准化?

在 MCP 诞生之前,每个大模型框架和应用都在发明自己的工具调用格式:OpenAI Assistants API、LangChain Tools、LlamaIndex Tools 等等。这导致生态碎片化严重,开发者为一个平台写的工具无法移植到另一个平台。

Anthropic 提出的 Model Context Protocol (MCP) 彻底改变了这一局面。它将客户端(Host/Client)与服务端(Server)解耦,使用中立且被广泛验证的 JSON-RPC 2.0 作为基座协议。


1. 全双工通信与生命周期状态机

MCP 协议定义了严格的初始化握手流程:

Client                                             Server
  |                                                  |
  | -------- 1. initialize request ----------------> |
  |          (clientInfo, capabilities, protocolVer) |
  |                                                  |
  | <------- 2. initialize response --------------- |
  |          (serverInfo, capabilities, protocolVer) |
  |                                                  |
  | -------- 3. initialized notification ----------> |
  |                                                  |
  | <================ Operational Phase ===========> |
  |          (tools/list, tools/call, resources)     |

在客户端发送 initialized 通知之前,任何业务请求都不会被处理。这确保了双端协议版本与特性协商完成。


2. 核心 Capabilities 协商

双方在初始化请求中声明各自支持的能力:

  • Server Capabilities: tools(是否支持动态更新通知)、resources(是否支持订阅)、prompts、logging。
  • Client Capabilities: roots(客户端支持提供的根目录列表)、sampling(服务端向客户端请求大模型生成能力)。

3. 错误处理与规范码

MCP 继承了 JSON-RPC 2.0 的标准错误码定义,并扩展了专属业务错误,例如入参校验失败 (-32602)、工具未找到 (-32601) 等,保证了跨语言实现的统一异常语义。

Model Context Protocol 底层规范与协议架构深度解析 - AgentHub