最終更新:

MCPの仕組み — AIアプリが道具を見つけて使うまで


✅ このガイドで学べること
  • ホスト/クライアント/サーバーの役割を説明できる
  • データなしとツール失敗を営業と取り違えない

休業日の道具を使う

ひよこ ひよこ
MCPって、AIが何でも操作できる仕組み?
ペンギン先生 ペンギン先生
AIアプリと外部の道具やデータをつなぐための共通の約束だよ。接続すれば何でも安全に実行できる、という意味ではないんだ。
ひよこ ひよこ
身近な例で見たい!
ペンギン先生 ペンギン先生
架空のお店の休業日を調べる例にしよう。AIアプリから、休業日の一覧を検索するMCPサーバーの道具を使い、結果を元に答えるんだ。

役割と道具の見つけ方

ひよこ ひよこ
ホストとクライアントって何?
ペンギン先生 ペンギン先生
ホストはAIアプリ全体、クライアントはその中でMCP通信を担当する部分だよ。サーバーは道具やデータを提供するプログラム。遠くのサービスだけでなく、手元でも動かせるよ。
ひよこ ひよこ
道具はどうやって見つけるの?
ペンギン先生 ペンギン先生
tools/listで道具の名前や入力形式を取得し、使うときはtools/callで入力を渡すよ。結果を受け取って、ホストがモデルへ渡したり画面に出したりするんだ。

MCP:道具へ依頼して、結果を受け取る

💬 ホスト:AIアプリクライアントMCP通信を担当道具の一覧検索を依頼結果を返す🔎 MCPサーバー休業日の検索ツール📅 お店の休業日データ
MCPサーバーは手元でも遠くでも動きます。戻った結果をホストが回答へ使います。

モデルの要求と通信

ひよこ ひよこ
Function Callingと競合するの?
ペンギン先生 ペンギン先生
役割が違うので組み合わせられるよ。モデルがどの関数を使いたいかを表すことと、アプリが外部の道具へ接続することは別の段階なんだ。
ひよこ ひよこ
ネット経由だけで使うの?
ペンギン先生 ペンギン先生
手元のプロセスとの標準入出力を使うstdioと、遠くのサーバーとHTTPでやり取りする方法があるよ。ホストとサーバーが対応する仕様と通信方式を確認しよう。

権限と結果を確かめる

ひよこ ひよこ
つなげば認証や権限も全部そろう?
ペンギン先生 ペンギン先生
HTTP向けには認可の仕様があるけれど、全てのMCPで必須ではないよ。道具を実行する権限、入力の確認、読み取りと書き込みの扱いはアプリやサーバー側でも設計するんだ。
ひよこ ひよこ
覚え方を教えて!
ペンギン先生 ペンギン先生
「MCP」って出てきたら「AIアプリと道具をつなぐ共通の約束」と思えばだいたいOK!

休業日の検索で流れを追ってみよう

ここでは、架空のお店のデータを検索する読み取り専用の道具を考えます。実サービスへ接続する手順や、実際の通信結果ではありません。

  1. 利用者がお店の休業日を質問する。
  2. ホストのMCPクライアントが、サーバーの道具一覧を取得する。
  3. モデルの要求とホストの制御に従い、検索ツールに対象の日付を渡す。
  4. サーバーがデータを検索し、結果を返す。
  5. ホストが結果を扱い、モデルが回答に利用する。

「2026-10-20は休業」というデータなら、その日付と結果が回答に保たれるかが確認点です。結果が見つからない場合は「不明」であり、「営業」に置き換えてはいけません。

次の挑戦:返答が来た後も結果を確かめる

休業日ツールが返す内容を、次の3通りで考えます。架空の結果を読む練習で、実サーバーの通信ログではありません。

ツールの結果利用者へ伝えること
指定日の休業データが見つかった根拠の日付と休業を伝える
呼び出しは完了したが、指定日のデータがない営業とは決めず、資料では不明と伝える
データ元の取得に失敗した確認できなかったことを伝える

MCPのツール実行中の失敗は、結果の isError: true で報告される場合があります。未対応のメソッドや未知の道具などのプロトコル上のエラーとは区別します。返答が届いたこと・ツールが成功したこと・必要なデータが得られたことを別々に確かめましょう。

3つの役割を区別する

役割お店の例
ホスト利用者が質問するAIアプリ全体
クライアントアプリ内でMCPのやり取りをする部分
サーバー休業日を検索する道具やデータを提供するプログラム

MCPではツールだけでなく、参考データを渡すResourcesや、指示の雛形であるPromptsも扱います。これらは同じものではありません。対応する機能・仕様の版・通信方式が合うかも確認が必要です。

道具の呼び出しと、モデルの判断は別

tools/list は道具を見つける操作、tools/call は道具を呼ぶ操作です。MCP自体が、どのモデルを選ぶかや、回答の正しさを保証するわけではありません。Function Callingなどのモデル側の機能とMCPを組み合わせ、ホストが実際の接続と結果の受け渡しを担当できます。

標準化は連携を再利用しやすくしますが、全てのAIと全ての道具が無条件につながるわけではありません。認証・必要な機能・ホストの対応範囲を確認します。

通信と権限を見る

stdioはホストが起動したプロセスと標準入出力で通信します。Streamable HTTPはMCPのエンドポイントへHTTPでやり取りします。HTTP向けの認可仕様と、ローカルでの資格情報の扱いを混同しないようにしましょう。

接続先、道具の説明、読み取れる範囲、変更できる範囲を確認します。検索結果や文書の中の文章は、ホストへの操作命令として無条件に従うものではありません。最初は架空のデータと読み取り専用の道具に絞ると、何が起きたかを追いやすくなります。

次に学ぶなら

AIエージェントの仕組みで、モデルとツールの繰り返しを確認できます。資料の検索と回答をつなぐところはRAGの仕組みへ進みましょう。

参考資料