MCPプロトコルの理解 – AIと外部サービスの共通接続規格

AI

MCPとは

MCP(Model Context Protocol)は、AIアプリ(ChatGPTやClaudeなど)が外部システムとつながるための“共通の接続規格”です。
これにより、AIは外部のデータ(ファイル・DBなど)やツール(検索・計算など)、ワークフローにアクセスし、作業をこなせるようになります。
USB-C がデバイス同士を標準的につなぐのと同じように、MCP は AI と外部システムを標準的につなぐ“共通ポート”の役割を果たします。

MCPのポイントを整理する

でも、ユーザーレベルだと知らなくてもいいところも多そうなので、とりあえず、AIに簡単にまとめてもらいました。

1. MCPは「LLMと外部ツールの通信プロトコル」

  • WebSocketベース
  • JSON-RPC に似た 双方向メッセージ形式
    • 技術進化の系譜図(CORBA → SOAP → REST → JSON-RPC → MCP)
  • LLM ⇔ MCPサーバー の間で
    • tool list
    • tool call
    • response
      がやり取りされる。

2. MCPサーバーが提供するのは「関数一覧とスキーマ」だけ

MCP側は:

  • tool 名
  • description
  • input schema(JSON Schema)
  • output 形式

を公開する。

例:

{
  "name": "drive.list_files",
  "description": "List files",
  "inputSchema": {
    "folderId": "string"
  }
}

LLM はこれを読んで「関数として扱う」。

3. LLM の “tool call” は JSON で送られる

LLM が判断して MCPへ送る:

{
  "type": "call_tool",
  "name": "drive.list_files",
  "arguments": {
    "folderId": "abc"
  }
}

MCPサーバーが外部APIを実行して返す:

{
  "type": "tool_result",
  "content": [...]
}

→ LLMのFunction callingを外部サーバーのツールまで呼べるようにするための取り組みと理解した

4. MCPは「関数の実行」を標準化しているだけ

重要ポイント:

  • OAuth管理
  • APIエラー処理
  • 外部サービスとの通信
  • ページネーション
  • キャッシュ

全部 MCPサーバー側の責務
LLMは「関数を呼ぶだけ」。

5. LLMは自然言語 → tool 呼び出しを “推測”で変換している

だから不安定になりやすい。

例:
「Driveのファイル一覧出して」
drive.list_files を呼ぶかどうかは LLM 次第。

tool description が弱いと暴走する。

6. 技術的限界(2025年現在)

  • LLM の推論精度に強く依存
  • MCP server 側の description が弱いと誤動作
  • 公開ツールがまだ少ない
  • 仕様は固いが、実装エコシステムが成熟していない

プロダクション用途はまだ慎重にすべき。

技術者が MCP を使うときの心得

✔ 1. ツールの “description と input schema” を鬼のように丁寧に書く

→ LLMの誤判断が劇的に減る。

✔ 2. LLM が暴走しやすい操作(削除・更新)は外す

→ read-only を基本に。

✔ 3. LLMの自由度を下げる

→ “どういう時にこのツールを使うべきか” を description に書く。

✔ 4. 外部サービス操作の本体は MCPサーバーに寄せる

→ 例外処理・再試行・OAuthはLLMに任せない。

関連記事

カテゴリー

アーカイブ

Lang »