JSONとJSON-RPCとは?データの書き方と、機能を呼び出す決まり

仕様の版:RFC 8259(2017年12月)、JSON-RPC 2.0(2013年1月更新)
別のサービスへ「このデータを取得して」と頼むとき、ソフトウェアどうしはどうやって内容を伝えるのでしょうか。データの書き方であるJSONと、相手の機能を呼び出す決まりであるJSON-RPCを、仕様をもとに説明します。
JSONとは
JSON(JavaScript Object Notation)は、データを文字で書き表すための形式です。
仕様(RFC 8259)はJSONを、軽量で文字で書かれ、プログラミング言語に依存しないデータ交換の形式と定めました。名前のとおりJavaScriptの書き方から生まれましたが、今ではほとんどの言語で読み書きできます。
JSONで表せるのは、文字列、数値、真偽値(true・false)、null(値がない)の4種類と、それらをまとめる2つの形です。
- オブジェクト:
{ }の中に「名前: 値」を並べたもの - 配列:
[ ]の中に値を順番に並べたもの
人が読んでも意味が分かり、機械も扱いやすいため、Web APIの返事や設定ファイルに広く使われる形式です。決まった仲間うち以外とやりとりするときの文字コードは、UTF-8にするよう仕様で求められています。
JSON-RPCとは
JSON-RPCは、JSONを使って、相手のプログラムの機能(メソッド)を呼び出すための決まりです。RPCは、Remote Procedure Call(遠隔手続き呼び出し)を略した言葉になります。
仕様によると、JSON-RPCは状態を持たない軽量な遠隔手続き呼び出しの取り決めで、同じプログラムの中でもネットワーク越しでも使えます。
依頼(リクエスト)に書くのは、次の4つです。
| 項目 | 意味 |
|---|---|
jsonrpc |
仕様の版。必ず "2.0" |
method |
呼び出す機能の名前 |
params |
機能に渡す値(なくてもよい) |
id |
依頼を見分ける番号 |
返事(レスポンス)には、成功なら result、失敗なら error のどちらか一方と、依頼と同じ id が入ります。同じ id が付いているので、依頼をいくつも送っても、どの返事がどの依頼のものか分かる仕組みです。
通知とエラー
id を付けない依頼は通知(Notification)と呼ばれ、相手は返事をしません。「一覧が変わりました」のように、知らせるだけでよい場合に使われます。
失敗したときの error に入るのは、決まった番号です。
製品での使われ方
AIのアプリとツールのあいだのやりとりに、MCPはJSON-RPC 2.0を使っています。MCPの記事で紹介した tools/list(ツールの一覧を求める)と tools/call(ツールを呼び出す)は、JSON-RPCの method に入る名前です。
開発ツールと言語の支援機能をつなぐLanguage Server Protocol(LSP)も、JSON-RPCを使っています。