JSON-RPC
JSON-RPC是一种轻量级的远程过程调用(RPC)协议,使用JSON作为数据交换格式。它允许客户端通过网络调用远程服务器上的方法,支持请求-响应及通知(单向消息)两种通信模式,具有结构简单、与传输层无关、跨语言兼容等特点,可运行于HTTP、WebSocket等多种传输协议之上。
核心事实
时间轴 (近 90 天)
JSON-RPC标准错误码中,-32700表示解析错误,-32601表示方法未找到,-32602表示参数无效。
JSON-RPC 等基于消息的协议在管道上不携带分帧信息,写入方需自行约定消息边界(如按行分隔或长度前缀),SDK 只负责字节转发。
与REST API不同,JSON-RPC不依赖HTTP动词和URL路径来表达语义,而是将操作意图封装在消息体中,更适合需要动态发现能力和双向通信的Agent场景。
Python服务器中未知工具的错误码从isError结果改为JSON-RPC -32602错误(Unknown tool: <name>),两个协议时代均如此。
在使用stdio传输时,服务器作为客户端的子进程运行,通过标准输入输出交换JSON-RPC消息,标准错误用于日志。
对任意地址调用 eth_getCode:返回空表示普通 EOA,返回以 0xef0100 开头表示已委托,接下来的 20 字节为委托地址;委托账户可以拥有完全干净、很短的交易历史。
JSON schema 在 MCP 中用于描述工具输入参数,宿主可以据此自动生成调用表单、校验参数或提前拒绝不合法参数,但不约束工具是否该被调用或调用是否被授权。
JSON-RPC在每次交互中都有序列化、网络传输、反序列化三个不可省略的环节
把数据库驱动包进JSON-RPC里会增加关键路径上的延迟
即使通过SSE复用连接,每次工具调用依然需要完成JSON-RPC层的握手与协商,与直接复用数据库驱动连接池存在本质差异
还有 12 条时间轴事件
全部知识事实 (20)
MCP采用客户端-服务器架构,基于标准化的JSON-RPC通信协议
90%已验证Anthropic于2024年底正式发布MCP规范,采用JSON-RPC 2.0作为底层通信协议
80%已验证MCP基于JSON-RPC 2.0协议构建,支持请求-响应和通知两种消息模式
80%已验证MCP协议通过定义统一的JSON-RPC 2.0通信协议,将M×N的适配问题简化为M+N
80%已验证JSON-RPC 2.0规范最早由JSON-RPC工作组于2010年发布
80%已验证Language Server Protocol(LSP)将语言智能提示逻辑与编辑器解耦,使任意编程语言只需实现一次协议即可在所有支持LSP的编辑器中获得自动补全和错误检测
75%已验证JSON schema 在 MCP 中用于描述工具输入参数,宿主可以据此自动生成调用表单、校验参数或提前拒绝不合法参数,但不约束工具是否该被调用或调用是否被授权。
65%已验证在 stdio 传输中,MCP 服务器日志必须写入标准错误(stderr),因为多余的标准输出会污染协议流
65%已验证LSP将编辑器与语言集成的M×N关系压缩为M+N,通过标准化的JSON-RPC协议通信
65%待验证MCP协议中AI模型通过标准化的JSON-RPC调用来触发硬件操作
85%待验证MCP通过标准化的JSON-RPC通信格式让模型调用外部能力,采用全量加载的设计哲学
85%待验证MCP选择JSON-RPC而非REST或GraphQL,是因为JSON-RPC天然支持双向通信和异步调用,更适合模型与工具之间需要实时响应的交互场景
80%待验证LSP基于JSON-RPC 2.0协议通信,语言服务器通常作为独立进程运行,通过stdin/stdout或TCP与编辑器通信
60%待验证ACP协议本质上是一个基于JSON-RPC的协议,通常通过标准输入/输出(stdio)与子进程通信
60%待验证JSON-RPC标准错误码中,-32700表示解析错误,-32601表示方法未找到,-32602表示参数无效。
50%待验证JSON-RPC 等基于消息的协议在管道上不携带分帧信息,写入方需自行约定消息边界(如按行分隔或长度前缀),SDK 只负责字节转发。
50%待验证与REST API不同,JSON-RPC不依赖HTTP动词和URL路径来表达语义,而是将操作意图封装在消息体中,更适合需要动态发现能力和双向通信的Agent场景。
50%待验证Python服务器中未知工具的错误码从isError结果改为JSON-RPC -32602错误(Unknown tool: <name>),两个协议时代均如此。
50%待验证在使用stdio传输时,服务器作为客户端的子进程运行,通过标准输入输出交换JSON-RPC消息,标准错误用于日志。
50%待验证对任意地址调用 eth_getCode:返回空表示普通 EOA,返回以 0xef0100 开头表示已委托,接下来的 20 字节为委托地址;委托账户可以拥有完全干净、很短的交易历史。
50%