1. 简介

JSON-RPC 2.0 是一个轻量级的远程过程调用(RPC)协议,使用JSON作为数据格式。

2. 请求体格式

{
  "jsonrpc": "2.0",
  "method": "方法名",
  "params": {},
  "id": "数字或字符串"
}

3. 响应格式

{
  "jsonrpc": "2.0",
  "result": "结果数据",
  "id": "数字或字符串"
}

4. 错误响应格式

{
  "jsonrpc": "2.0",
  "error": {
    "code": "错误代码",
    "message": "错误描述"
  },
  "id": "数字或字符串"
}

5. MCP的JSON-RPC实现

MCP(Model Context Protocol)服务基于JSON-RPC 2.0实现,并扩展支持Server-Sent Events进行流式通信。

采用JSON-RPC服务调用MCP服务的时候,请求头中的Accept一般包含 application/json, text/event-stream 其中application/json表示一次性传输整个响应,text/event-stream 是为了支持流式传输,实际的JSON-RPC数据在SSE的data字段中。

5.1. 初始化连接示例

背景:已经在本地服务部署MCP服务

请求如下

curl -L -X POST http://localhost:8000/mcp/ \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{"experimental":{},"sampling":{}},"clientInfo":{"name":"curl-test","version":"1.0"}},"id":1}'

响应如下

event: message
data: {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"experimental":{},"prompts":{"listChanged":false},"resources":{"subscribe":false,"listChanged":false},"tools":{"listChanged":false}},"serverInfo":{"name":"calculator","version":"1.13.0"}}}

从响应中可以得到

  1. jsonrpc版本为2.0
  2. id为1
  3. protocolVersion支持2024-11-05
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐