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"
}
關鍵欄位:
jsonrpc: 固定"2.0"method: 要呼叫的函式名稱params: 傳遞給函式的資料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 這種簡單的管線來運作。