模型层 开放阅读

JSON-RPC

JSON-RPC

概念 ID
json-rpc
更新时间
2026-05-29
来源数量
待补

JSON-RPC

3 秒看懂

JSON-RPC 是一种用 JSON 编码的远程过程调用(RPC)协议,设计极简——一个请求只需 method + params + id 三个字段,一个响应只需 resulterror + id传输层无关,可跑在 HTTP、WebSocket、TCP、Unix Socket 乃至 stdio 上。2.0 版(2010 年定稿)是当前事实标准。

一句话定位:AI 时代的”毛细血管协议”——Anthropic MCP、LSP、Ethereum JSON-RPC、多数 Agent 框架的底层通信层都选了它。

3 分钟产业解释

为什么 AI 行业突然关心一个 2005 年就诞生的协议?

三个关键事件把 JSON-RPC 推到 AI 基础设施台前:

时间线事件为什么重要
2016Microsoft 发布 LSP(Language Server Protocol),底层通信选 JSON-RPC 2.0 over stdio/ TCP所有现代 IDE(VS Code、Neovim、JetBrains)的代码智能都走这条路;AI 编程助手(Copilot、Cursor)依赖 LSP
2022-2024Ethereum 生态持续扩展,执行层客户端(Geth、Erigon 等)标准 API 为 JSON-RPC链上 AI Agent 与智能合约交互的桥梁
2024-2025Anthropic 发布 MCP(Model Context Protocol),显式基于 JSON-RPC 2.0LLM 与外部工具/数据源连接的事实标准开始成型

产业意义

  1. AI Agent 通信的最低公约数:当多个 Agent 框架(LangChain、AutoGPT、CrewAI 等)需要互操作时,JSON-RPC 提供了最轻量、最无依赖的调用约定。
  2. MCP 生态的承载协议:Anthropic MCP 定义了 tools/listtools/callresources/listprompts/list 等标准 method,底层就是 JSON-RPC 2.0 的 request/response/notification 三种消息类型。
  3. LLM 训练/推理基础设施的胶水层:部分推理服务编排系统(如 vLLM 的某些部署模式、Ray Serve 的 HTTP adapter)也暴露 JSON-RPC 接口用于内部调度。

一句话:JSON-RPC 不性感,但它是 AI 工具链连接层的”USB-C”——简单、通用、到处都有现成实现。

15 分钟专家深入

核心架构

JSON-RPC 的设计哲学可概括为 “最小可行 RPC”

  • 编码层:纯 JSON(UTF-8)
  • 调用层:Request 对象包含 jsonrpc(版本标识 "2.0")、method(字符串)、params(数组或对象,可选)、id(字符串/数字/null)
  • 响应层:Response 对象包含 resulterror(二选一,互斥)、id(与 Request 对应)
  • 通知:Request 中省略 id 字段即为 Notification,服务端不返回响应[JSON-RPC 2.0 Spec]
  • 批量调用:可将多个 Request 打包为 JSON 数组发送,服务端返回对应数量的 Response 数组[JSON-RPC 2.0 Spec]
  • 传输无关:Spec 本身不绑定任何传输协议——这是它能适配 stdio(LSP)、HTTP(Ethereum)、WebSocket(实时 Agent)、TCP 的根本原因

与 gRPC/REST 的本质差异

┌──────────────┬─────────────────┬─────────────────┬──────────────────┐
│              │   JSON-RPC 2.0  │    REST/HTTP    │     gRPC         │
├──────────────┼─────────────────┼─────────────────┼──────────────────┤
│ 编码格式      │ JSON            │ JSON/XML/...    │ Protobuf (二进制) │
│ 通信模式      │ 请求-响应 +     │ 请求-响应       │ 四种流模式        │
│              │ 通知 + 批量     │                 │ (Unary/Stream)   │
│ 接口定义      │ 无强制 schema   │ OpenAPI (可选)  │ .proto 文件       │
│ 传输层        │ 无关(任意)      │ HTTP/HTTPS      │ HTTP/2           │
│ 浏览器原生    │ ✅ (JSON+HTTP)  │ ✅              │ ⚠️ 需 grpc-web    │
│ 依赖轻重      │ 极轻            │ 轻              │ 重(需Protobuf+HTTP2)│
│ 二进制效率    │ 低(JSON文本)    │ 低              │ 高               │
│ AI生态采用    │ MCP/LSP/Ethereum│ 通用API         │ TensorFlow Serving│
└──────────────┴─────────────────┴─────────────────┴──────────────────┘

选型逻辑:JSON-RPC 胜在”零门槛 + 传输无关 + JSON 天然可读”,在人类可调试性跨语言兼容性上碾压 gRPC;在性能和强类型上远不如 gRPC。

JSON-RPC 2.0 消息格式详解

Request 对象 [JSON-RPC 2.0 Spec]:

{
  "jsonrpc": "2.0",        // 必填,固定值 "2.0"
  "method": "tools/call",  // 必填,字符串,以 "rpc." 开头的为保留方法名
  "params": {              // 可选,By-Name 对象或 By-Position 数组
    "name": "read_file",
    "arguments": {"path": "/tmp/foo.txt"}
  },
  "id": 42                 // 可选;省略则为 Notification
}

Response 对象 [JSON-RPC 2.0 Spec]:

// 成功
{"jsonrpc": "2.0", "result": {"content": "..."}, "id": 42}

// 失败
{"jsonrpc": "2.0", "error": {"code": -32601, "message": "Method not found"}, "id": 42}

标准错误码 [JSON-RPC 2.0 Spec]:

CodeMeaning说明
-32700Parse errorJSON 解析失败
-32600Invalid Request不是合法的 Request 对象
-32601Method not found方法不存在
-32602Invalid params参数无效
-32603Internal error内部错误
-32000 to -32099Server error (保留区间)服务端自定义

在 MCP 中的映射

Anthropic MCP 对 JSON-RPC 2.0 的使用方式:

Client → Server: {"jsonrpc":"2.0","method":"initialize","params":{...},"id":1}
Server → Client: {"jsonrpc":"2.0","result":{...},"id":1}

Client → Server: {"jsonrpc":"2.0","method":"notifications/initialized"}
                  (Notification, 无 id, 无响应)

Client → Server: {"jsonrpc":"2.0","method":"tools/call",
                  "params":{"name":"web_search","arguments":{"query":"..."}},"id":7}
Server → Client: {"jsonrpc":"2.0","result":{"content":[...]},"id":7}

MCP 还利用了 JSON-RPC 2.0 的双向通信能力——Client 和 Server 都可以发起请求和通知,这是在 HTTP 之上用 Streamable HTTP 传输层实现的(MCP 2024-11 spec 之后的方案)。


技术原理

协议状态机

                    ┌─────────────┐
                    │   Client    │
                    └──────┬──────┘
                           │
         ┌─────────────────┼─────────────────┐
         ▼                 ▼                  ▼
   ┌──────────┐     ┌────────────┐    ┌──────────────┐
   │  Request  │     │Notification│    │ Batch Request│
   │(有 id)    │     │(无 id)     │    │(JSON Array)  │
   └─────┬────┘     └─────┬──────┘    └──────┬───────┘
         │                 │                   │
         ▼                 ▼                   ▼
   ┌──────────┐     ┌────────────┐    ┌──────────────┐
   │ Response │     │ 无响应返回  │    │ Response Array│
   │(对应 id) │     │(Fire&Forget)│   │(可能含Error) │
   └──────────┘     └────────────┘    └──────────────┘

关键设计决策与技术权衡

设计决策原因代价
JSON 文本编码可读、零依赖、全语言支持性能开销(解析慢、体积大),不适合高频 RPC
无 schema 强制降低接入门槛接口契约需外部文档维护(MCP 用 JSON Schema 补充)
传输无关最大灵活性需要各传输层自行解决连接管理、分帧、重连
id 类型允许 string/number/null兼容不同场景增加了实现的边界情况处理
批量调用中允许混合 Request/Notification灵活性部分实现未完整支持批量中的 Notification

关键参数与性能特征

以下为行业经验性数据,非 Spec 定义,标 [估算]

指标典型值备注
单条消息编码开销JSON 文本,典型 Request 100-500 字节取决于 method 名和 params 复杂度 [估算]
序列化/反序列化延迟10-100μs(单条)取决于 JSON 库和 payload 大小 [估算]
与 gRPC Protobuf 对比体积 2-10x,编码/解码延迟 3-10xJSON vs Protobuf 的固有差距 [估算]
最大批量请求大小Spec 未定义,由传输层/实现决定MCP 典型实现限制各异 [未充分披露]

技术演进史

时间里程碑关键变化
2005JSON-RPC 1.0 草案最初由 JSON 之父 Douglas Crockford 推动;仅支持 Request、Response、Notification 三种消息;params 只支持数组(By-Position)
2006JSON-RPC 1.1 社区发布非正式规范,引入类型化参数改进;未经过 W3C 标准化流程
2010-2013JSON-RPC 2.0 草案迭代社区(json-rpc@googlegroups)长期讨论;引入 jsonrpc: "2.0" 版本标识、By-Name params、批量调用、标准错误码
2010-03-26JSON-RPC 2.0 Specification 发布成为事实标准至今
2016Microsoft LSP 1.0 发布JSON-RPC 2.0 被选为 LSP 的基础协议,运行在 stdio/TCP 上;大幅提升了 JSON-RPC 在 IDE 生态的采用率
2020-2023Ethereum JSON-RPC API 持续扩展eth_getBalance、eth_call、eth_sendRawTransaction 等成为链上交互事实标准
2024-11Anthropic MCP 正式发布JSON-RPC 2.0 成为 LLM 工具调用标准协议层;传输层支持 stdio + Streamable HTTP
2025 Q1-Q2MCP 生态爆发OpenAI、Google、Microsoft 相继宣布支持 MCP;JSON-RPC 在 AI Agent 基础设施中地位确立

技术路线对比

RPC 协议选型矩阵(面向 AI 场景)

维度评分: ★★★★★ 最优   ★ 最低   — 不适用

┌─────────────────┬──────────┬──────────┬──────────┬──────────┐
│ 协议             │JSON-RPC 2│ REST/HTTP│  gRPC    │  SOAP    │
│                 │          │          │          │(已边缘化)│
├─────────────────┼──────────┼──────────┼──────────┼──────────┤
│ 轻量级/易接入    │ ★★★★★   │ ★★★★    │ ★★       │ ★        │
│ 人类可读/可调试  │ ★★★★★   │ ★★★★★   │ ★★       │ ★★★     │
│ 传输层灵活性     │ ★★★★★   │ ★★★     │ ★★       │ ★        │
│ 强类型/Schema    │ ★★       │ ★★★     │ ★★★★★   │ ★★★★★   │
│ 高性能/低延迟    │ ★★       │ ★★       │ ★★★★★   │ ★★       │
│ 双向流式通信     │ ★★★(依赖传输)│ ★(SSE有限)│ ★★★★★  │ ★        │
│ 浏览器原生支持   │ ★★★★★   │ ★★★★★   │ ★★(需grpc-web)│ ★★★ │
│ AI生态采用度     │ ★★★★(MCP)│ ★★★★★   │ ★★★★    │ ★        │
│ 区块链生态采用度 │ ★★★★★   │ ★★★     │ ★★       │ —        │
│ 学习曲线(低=好)  │ ★★★★★   │ ★★★★    │ ★★       │ ★        │
└─────────────────┴──────────┴──────────┴──────────┴──────────┘

JSON-RPC 1.0 vs 2.0

特性1.02.0
版本标识字段"jsonrpc": "2.0" 必填
params 支持仅数组 (By-Position)数组 + 对象 (By-Position + By-Name)
批量调用不支持支持(JSON 数组)
错误码规范无标准定义 -32700 到 -32099 标准码
Notification有(明确语义:无 id 则无响应)
id 为 null不合法可用于错误响应(解析失败时无法关联 id)

上下游

上游依赖(JSON-RPC 消费什么)

┌─────────────────────────────────────────────────┐
│              JSON-RPC 2.0 协议层                 │
├─────────────────────────────────────────────────┤
│ 依赖层                │ 说明                     │
├───────────────────────┼─────────────────────────┤
│ JSON 规范 (RFC 8259)  │ 消息编码格式              │
│ 传输层                │ HTTP / WebSocket /       │
│                       │ TCP / stdio / Unix Socket│
│ UTF-8 (RFC 3629)      │ 字符编码                 │
└───────────────────────┴─────────────────────────┘

下游影响(谁依赖 JSON-RPC)

┌─────────────────────────────────────────────────────────┐
│                   JSON-RPC 2.0 消费者                     │
├──────────────────┬──────────────────────────────────────┤
│ 领域             │ 具体消费者                             │
├──────────────────┼──────────────────────────────────────┤
│ AI Agent/工具    │ MCP (Anthropic), LangChain 工具层,    │
│                  │ CrewAI, AutoGPT 部分通信层             │
│ IDE/开发工具     │ LSP (Language Server Protocol),       │
│                  │ VS Code, Neovim, JetBrains            │
│ 区块链           │ Ethereum (Geth/Erigon/Nethermind),    │
│                  │ Bitcoin Core, Solana (部分API),       │
│                  │ EVM-compatible chains                 │
│ 桌面应用         │ Electron IPC (部分插件架构)             │
│ 嵌入式/IoT       │ 轻量设备管理 API [估算]                │
└──────────────────┴──────────────────────────────────────┘

关键指标

评估 JSON-RPC 实现质量的维度

指标说明行业基准参考
Spec 合规度是否完整支持 2.0 的 Request/Response/Notification/Batch/Error多数主流库合规 [估算]
批量调用深度单次 Batch 最大支持多少条 RequestSpec 未限,由实现决定
传输层适配数支持几种传输层(HTTP/WS/TCP/stdio…)多数库 2-3 种 [估算]
双向调用能力Client/Server 是否都能发起 RequestMCP 要求双向;基础库多数仅 Client→Server
序列化性能单条消息编解码吞吐JSON 库性能差异显著(simdjson > rapidjson > 标准库)[估算]
并发模型单连接复用 / 多路复用 / 连接池Spec 不涉及,由传输层决定
错误处理完备性是否实现全部标准错误码 + Server Error 区间[未充分披露]

供需与市场数据

JSON-RPC 直接市场规模

JSON-RPC 是开放协议,本身不产生直接收入。其产业价值体现在上层生态的市场规模。

生态相关市场规模数据来源
MCP 生态MCP 服务器/工具市场尚处早期,无独立市场数据[未充分披露]
LSP 生态全球 IDE 与开发者工具市场 2024 年约 $XXB(JSON-RPC 是底层协议之一)[行业报告-待确认]
Ethereum JSON-RPCEthereum 生态 TVL、RPC 节点服务(Infura/Alchemy/QuickNode)收入规模与 JSON-RPC 使用量直接挂钩[厂商财报] Alchemy 2021 估值 $3.5B; Infura 独立收入未披露
AI Agent 通信全球 AI Agent 市场 2025 年预估数十亿美元,JSON-RPC (via MCP) 为主要通信协议之一[行业报告-待确认]

开源实现生态

语言主流 JSON-RPC 库GitHub Stars (近似)
Pythonjson-rpc, python-jsonrpc数百至数千 [估算]
JavaScript/TSjayson, json-rpc-2.0数百至千级 [估算]
Gogo-ethereum/rpc (Geth 内置), gorilla/rpcGeth 极高,独立库数百 [估算]
Rustjsonrpsee (Parity 出品)数百级 [估算]
Javajsonrpc4j数百级 [估算]
C#StreamJsonRpc (Microsoft 出品, LSP 使用)数千级 [估算]

代表公司与资本映射

公司/组织与 JSON-RPC 的关系资本关注度
AnthropicMCP 协议的定义者和推动者,MCP 基于 JSON-RPC 2.0$60B+ 估值 (2025)
MicrosoftLSP 的创始者(底层为 JSON-RPC 2.0);StreamJsonRpc 库维护者;VS Code 核心架构万亿市值
Ethereum Foundation / ConsensysEthereum JSON-RPC API 标准维护Consensys 估值约 $7B (2022)
Alchemy / Infura (Consensys) / QuickNode提供 JSON-RPC 节点即服务(Blockchain RPC Provider)Alchemy ~$10.2B (2022), QuickNode ~$800M (2024)
Geth 核心团队Go-Ethereum 客户端,其 rpc 包是最广泛使用的 JSON-RPC 实现之一开源社区
Parity (now part of Polkadot)jsonrpsee Rust 库,用于 Substrate 区块链节点Polkadot 生态

投资逻辑

核心观点

JSON-RPC 本身不是投资标的,但它是 三个高增长叙事的通信底层

  1. AI Agent 工具连接层:MCP 生态正在快速扩张,JSON-RPC 2.0 是其指定协议。投资逻辑是”MCP 协议栈”——类比 2015 年投资 REST API 生态。

    • 产业观察方向:MCP 服务器聚合平台、MCP 工具市场、MCP 网关安全产品
  2. 链上基础设施:Ethereum L1/L2 的 RPC 节点服务是区块链基础设施中最稳定的收入来源之一(按请求量计费)。

    • 产业观察方向:RPC Provider(Alchemy、QuickNode)、去中心化 RPC 网络(Pocket Network、Lava Network)
  3. 开发者工具链:LSP 让 AI 编程助手(Copilot、Cursor、Devin 等)能理解代码语义,JSON-RPC 是其中的通信骨干。

    • 产业观察方向:AI-native IDE、AI 编程 Agent

风险因素

  • 性能瓶颈:JSON 文本编码在超高频 RPC 场景下可能被二进制协议(gRPC、FlatBuffers)替代
  • 协议演进不确定性:MCP 规范仍在快速迭代,传输层从 stdio 向 Streamable HTTP 迁移中可能出现不兼容变更
  • 安全暴露面:JSON-RPC over HTTP 天然暴露在网络攻击面下,注入/伪造请求是持续风险

常见误读纠偏

❌ 误读 1:“JSON-RPC 只能跑在 HTTP 上”

纠偏:JSON-RPC 2.0 Spec 明确声明传输无关(transport agnostic)。实际上:

  • LSP 跑在 stdio 上(进程间通信)
  • MCP 支持 stdioStreamable HTTP(2024-11 spec 之后的方案)
  • Ethereum 跑在 HTTP/HTTPS 和 WebSocket 上(ws 支持订阅)
  • 部分嵌入式场景 跑在 Unix SocketTCP

HTTP 只是最常见的暴露方式,不是唯一选择。

❌ 误读 2:“JSON-RPC 是 REST 的替代品”

纠偏:两者根本不是同一层面的东西。

  • REST 是一种架构风格(面向资源、利用 HTTP 动词语义、无状态)
  • JSON-RPC 是一种RPC 协议(面向方法调用,传输无关)

实际上两者可以共存:同一个服务可以同时暴露 RESTful API(面向 CRUD)和 JSON-RPC API(面向复杂操作)。Ethereum 就是典型——大部分 API 走 JSON-RPC,但部分场景(如 EIP-4844 blob 交易)需要不同的接口模式。

❌ 误读 3:“JSON-RPC 2.0 比 1.0 只多了版本号”

纠偏:2.0 是重大升级。关键差异包括:

  • 新增 By-Name params(1.0 仅支持 By-Position 数组)
  • 新增 批量调用(Batch)
  • 新增 标准错误码(-32700 到 -32099)
  • Notification 语义更明确(无 id = 不期望响应)
  • 新增 jsonrpc: "2.0" 版本标识,允许 1.0/2.0 协议共存

❌ 误读 4:“JSON-RPC 性能太差,不适合生产环境”

纠偏:需要分场景看。

  • 对于工具调用频率在每秒数十到数百次的 AI Agent 场景,JSON-RPC 的性能完全足够
  • 对于高频交易、实时数据推送等场景,JSON 文本编码确实是瓶颈
  • Ethereum 全网 JSON-RPC 请求量级为每天数十亿次(仅 Infura 一家,据 Consensys 公开信息),证明在有合理基础设施支撑下可扩展性不是问题

❌ 误读 5:“MCP 只是包装了一层 JSON-RPC,没有技术含量”

纠偏:JSON-RPC 只是传输层约定,MCP 的核心价值在于:

  • 标准化的 能力协商initialize 握手,动态发现 server 支持的 tools/resources/prompts)
  • 工具描述的 JSON Schema 标准
  • 采样(sampling) 能力——Server 可以反向请求 Client 端的 LLM 完成推理
  • 根目录(roots)资源订阅(resource subscriptions) 等生命周期管理

把 MCP 等同于 JSON-RPC,就像把 HTTP 等同于 TCP——忽略了上层协议的设计。


学习路径

入门(1-2 小时)

  1. 阅读 JSON-RPC 2.0 Specification(短,约 30 分钟可读完)
source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型