Ian Chou's Blog

JSON-RPC:程式界的掛號信 (The Core Protocol)

JSON-RPC:程式界的掛號信 (The Core Protocol)

JSON-RPC (JSON Remote Procedure Call) 是一個非常簡單的通訊協定,核心概念就是:「用 JSON 格式來呼叫遠端的函式」

在 MCP 的世界裡,它就是 Cursor (Client) 和你的 Server 之間的**「溝通語言」**。

如果說 stdin/stdout 是電話線(傳輸介質),那 JSON-RPC 就是他們講話的文法規則(語法)。


1. 為什麼需要 JSON-RPC?

如果 Cursor 只是隨便傳字串給 Server:"幫我算一下 1 加 1"

Server 會很困擾:

JSON-RPC 制定了嚴格的標準格式,解決了以上所有問題。

2. JSON-RPC 的標準格式

{
  "jsonrpc": "2.0",
  "method": "add",
  "params": { "a": 100, "b": 200 },
  "id": "req-123"
}

關鍵欄位:

  1. jsonrpc: 固定 "2.0"
  2. method: 要呼叫的函式名稱
  3. params: 傳遞給函式的資料
  4. id (非常重要): 讓 Client 知道哪個結果對應哪個請求

3. 一來一回的實際範例

Cursor 發出請求 (stdin):

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": { "name": "add", "arguments": { "a": 50, "b": 50 } },
  "id": 1
}

Server 回傳 (stdout):

{
  "jsonrpc": "2.0",
  "result": { "content": [{ "type": "text", "text": "{\"result\":100}" }] },
  "id": 1
}

4. 跟 REST API 有什麼不同?

特性 REST API JSON-RPC
核心思維 資源 導向 動作 導向
網址 每個功能有不同網址 只有一個入口
動詞 依賴 HTTP Method 寫在 method 欄位

總結

jsonrpc 就像是「程式界的掛號信格式」

MCP 選用這個協定,因為它輕量、標準化、且不依賴 HTTP,非常適合透過 stdin/stdout 這種簡單的管線來運作。