AI Engineering Notes
MCPとは
MCPを、AIアプリが外部ツールを使うためのプロトコルとして、JSON-RPCやTool callingとの関係から整理します。
MCPの位置づけ
MCPはModel Context Protocolの略で、AIアプリが外部ツールやデータソースを扱うためのプロトコルです。
AIエージェントを作ると、ファイルを読む、DBを検索する、Issueを確認する、ブラウザを操作する、社内APIを呼ぶ、といった外部操作が必要になります。MCPは、その接続部分を標準化する考え方です。
登場人物
MCPは、ざっくり次の3つに分けて考えると理解しやすくなります。
| 役割 | 説明 |
|---|---|
| Host | AIアプリ本体。チャットUIやエージェント実行環境 |
| Client | Host内でMCP serverと通信する部品 |
| Server | ツール、リソース、プロンプトなどを提供する側 |
JSON-RPCとの関係
MCPのメッセージはJSON-RPC 2.0を土台にします。ここがJSON Manとの大きな接点です。
たとえば、ツール一覧を取得する、ツールを実行する、リソースを読む、といった操作は、メソッド名、params、idを持つJSON-RPCメッセージとして扱えます。
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_notes",
"arguments": {
"query": "RAGとは"
}
}
}
Tool callingとの違い
Tool callingは、LLMが「どのツールを、どの引数で呼ぶか」を決める仕組みとして語られることが多いです。
MCPは、その先にあるツール提供・通信・リソース管理の規約です。つまりTool callingがモデル側の呼び出し判断だとすると、MCPは外部ツールを安全に提供するための接続層として捉えられます。
実装で見るポイント
MCPを使うときは、プロトコルだけでなく運用面も見ます。
- ツール名と説明がモデルに誤解されないか。
- 引数スキーマが曖昧ではないか。
- 認証情報やファイルアクセスの権限境界は明確か。
- ツール結果が長すぎないか。
- 失敗時にモデルへ返すエラーが判断可能か。
AI Engineering Notesでは全体像を扱い、JSON ManではJSON-RPC、JSON Schema、payloadの読み方へ深掘りします。