A
AIエージェントの仕組み
ch7-s2 · MCP Protocol

MCP のプロトコル

約 14 分

この回のゴール

1. MCP の通信方式の全体像

curl -fsSL https://claude.com/install.sh | bash
# または: npm install -g @anthropic-ai/claude-code

JSON-RPC 2.0 とは?

2. JSON-RPC の 3 種類のメッセージ

(a) Request — 関数を呼び出す

claude
# 初回起動時に Anthropic Console (https://console.anthropic.com) でログイン

(b) Response — 結果を返す

cd <your-repo>
claude

または、エラー:

wzxhzdk:3

(c) Notification — 応答不要の通知

wzxhzdk:4

id がないのが特徴。進捗通知や状態変化に使う。

3. MCP の主要メソッド

初期化

wzxhzdk:5

Tools

wzxhzdk:6

Resources

wzxhzdk:7

Prompts

wzxhzdk:8

4. Transport: stdio vs HTTP+SSE

stdio (標準入出力)

wzxhzdk:9

HTTP + SSE (Server-Sent Events)

wzxhzdk:10

どう使い分ける?

場面 推奨トランスポート
自作ツール、ローカル開発 stdio
Claude Desktop と連携 stdio
リモート/クラウドサーバー HTTP+SSE
マルチユーザー SaaS HTTP+SSE

5. 完全な 1 往復の例

ユーザー: 「有給何日?」

Step 1: ツール一覧取得(初回のみ)

wzxhzdk:11

Step 2: LLM がツール選択(ここは Claude API 経由)

Claude API に tools を渡して呼び出し → Claude が search_handbook を選択。

Step 3: ツール実行

wzxhzdk:12

Step 4: 結果を LLM に戻す

tool_result として Claude API に返す → Claude が最終回答を生成。

6. 実は第 6 章と構造は同じ

第 6 章で作った search_handbook ツールと、MCP の search_handbook は:

違うのは「誰が呼ぶか」と「どう通信するか」だけ:

項目 第 6 章 (直接) MCP
誰が定義 あなたの app.py MCP サーバー作者
誰が呼ぶ あなたの app.py Claude Desktop 等のクライアント
通信 Python 関数呼び出し JSON-RPC over stdio/HTTP
再利用 そのアプリ内だけ 全ての MCP クライアント

まとめ

この回の限界(次への動機)

プロトコルはわかった。でも、実際にサーバーを書く にはどうすれば? Python の公式 SDK はどんな API? 👉 次回「最小 MCP サーバー」で、FastMCP デコレータでサーバーを 30 行で書きます。

参考文献

A
本家 Claude Academy で手を動かす
この回に対応する Anthropic 公式のレッスンです。ここは「なぜそう動くか」、向こうは「どう書くか」。サインインなしで読めます。
📝 理解度クイズ (3 問) 💡 ログインすると進捗が保存されます

💬 このサブステップの Q&A

まだ質問はありません。最初の質問を投稿してみましょう。

質問の投稿にはログインが必要です。