Model Context Protocol:AIエージェントツールのオープン標準
Model Context Protocol (MCP) は、Anthropicが2024年11月に公開したオープン標準で、AIエージェントが外部ツール — データベース、ファイルシステム、API、内部サービス — を発見・呼び出せるようにします。専用のグルーコードを書く必要はありません。MCPサーバーが機能を公開し、MCPクライアント(エージェントランタイム、IDE、アシスタント)がそれを消費します。プロトコルは意図的に最小限であり、それが本番運用上の落とし穴でもあります:安全に運用するためには、認証、サンドボックス、ツール単位の予算を上に重ねる必要があります。
Model Context Protocolとは?
Model Context Protocolとは、Anthropicが最初に公開したオープンなJSON-RPCベースの標準であり、AIエージェント(クライアント)がツール(サーバー)が公開する機能をどう発見・呼び出すかを定義します。エディタにとってのLSP、ハードウェアにとってのUSBに相当するAIエージェントエコシステムの標準です:1つのプロトコル、多数の実装。
TL;DR
- MCPはエージェントエコシステムのUSBポート — 1つのプロトコルで、任意の準拠エージェントランタイムが任意の準拠ツールサーバーを、カスタムグルーコードなしで使えます。
- AnthropicがMCPを2024年11月に公開。2025年中の主要採用者にはOpenAI、Microsoft Copilot、Cursor、Zed、Continue、そしてほとんどのエージェントフレームワークが含まれます。
- MCPは4つのプリミティブ型を定義:tools(関数スタイルの呼び出し)、resources(読み取り専用データ)、prompts(再利用可能なテンプレート)、sampling(サーバー起点でクライアントへLLM呼び出しを返す)。
- トランスポートはstdioまたはHTTP/SSE上のJSON-RPC。stdioがローカル形式の主流で、HTTP/SSEはリモートMCPサーバーで広まっています。
- 本番運用MCPは、ほとんどのチュートリアルが省略する3層を必要とします:認証、サンドボックス、ツール呼び出しでの予算強制。
MCPの仕組み
MCPクライアント(エージェントランタイムまたはAIアシスタント)が1つ以上のMCPサーバーに接続します。接続時、クライアントは機能リスト — このサーバーはどのツール、リソース、プロンプトを提供するか — を要求します。各ツールは引数のJSONスキーマを宣伝します。エージェントのLLMはコンテキストの一部としてツールリストを見て、それに応じてツール呼び出しを選びます。クライアントは呼び出しを正しいサーバーへルーティングし、JSONをマーシャリングし、結果を返します。
トランスポートはJSON-RPC 2.0です。一般的なトランスポートは2つ:stdio(クライアントがサーバーをサブプロセスとして起動し、stdin/stdout経由で通信 — Claude Desktopのデフォルト)と、ネットワーク境界をまたぐリモートサーバー向けのServer-Sent Events付きHTTP。
プロトコル自体は意図的に最小限です。複雑さはMCPサーバーが公開するものにあります:ファイルシステムサーバーはエージェントにディレクトリへの読み書きアクセスを与え、PostgresサーバーはクエリアクセスをStateGiveし、Slackサーバーはメッセージ送信・チャネル読み取り機能を与えます。同じエージェントが複数のサーバーに並行接続できます。
MCPサーバー vs MCPクライアント
MCPサーバーはツール側です。誰でも書くことができ — AnthropicはPythonとTypeScriptのリファレンスSDKを公開しています。2026年中盤時点で、GitHub、Notion、Linear、Postgres、AWS、ブラウザ自動化などをカバーする数千のコミュニティサーバーが存在します。サーバーは小さい傾向(数百行)です。プロトコルが大部分の作業を担うためです。
MCPクライアントはエージェントランタイム、IDE、アシスタントです。Claude Desktopがリファレンスクライアントでした。Cursor、Zed、Continue、Windsurf、そしてほとんどのエージェントフレームワークが2025年中にMCPクライアントサポートを追加しました。単一のMCPクライアントは通常、複数の同時サーバー接続をサポートします — 1つのエージェントが、ファイルシステムサーバー、データベースサーバー、Slackサーバーと同時にやり取りします。
重要な洞察:LLMは直接MCPを話しません。クライアントがMCPツールリストをLLMプロンプト内の関数定義としてレンダリングし、LLMが関数呼び出しを発行し、クライアントが呼び出しを正しいMCPサーバーにマッピングしてJSON-RPCリクエストを転送します。
本番運用MCPのセキュリティ考察
MCPは機能公開プロトコルであり、認可や監査のプロトコルではありません。本番展開はMCPが意図的に省略した部分を追加する必要があります:
- 認証:ほとんどのMCPサーバーはローカルで認証なしで動作します。マルチテナント展開は、エージェント単位のクレデンシャルとサーバー単位の認証境界を必要とします。
- サンドボックス:広範なパスアクセスを持つMCPファイルシステムサーバーは、機能的にホスト上のrootです。MCPサーバーはコンテナで動かし、機微なボリュームを盲目的にマウントしないでください。
- 予算強制:ツール呼び出しは無料ではありません。MCP Webスクレイピングサーバーをループで呼び出すエージェントは、深刻なコストを積み上げる可能性があります。エージェント単位の予算はLLMトークンだけでなく、ツール呼び出しもカバーする必要があります。
- 監査ログ:MCP自体は呼び出しロギングを標準化していません。本番ランタイムは、AIエージェントセキュリティレビューとインシデント対応のために、すべてのサーバー呼び出しを引数、応答形状、タイミングとともに記録する必要があります。
リファレンスのClaude Desktop MCP統合は、サーバーをホストユーザーのファイルシステム権限でホストサブプロセスとしてマウントします。これは単一ユーザーの開発者セットアップでは動作しますが、本番運用には安全ではありません。
OpenLegionはMCPをどう統合するか
OpenLegionはデフォルトでMCPクライアントです。ランタイム内のエージェントは、フリート用に設定されたMCPサーバーを自動検出し、コンテキストウィンドウ内のツールリストを見て、組み込みスキルと同じボルトプロキシ経由、ACLゲート済みのパスでMCPツールを呼び出します。メッシュはMCPが省略した本番グレードの層を強制します:
- 各MCPサーバーは自身のサンドボックス名前空間で動作。エージェントがサーバープロセスへ直接stdioアクセスすることはありません。
- エージェント単位のACLが、特定のエージェントが呼び出せるMCPサーバーをゲート。
- すべてのツール呼び出しがエージェント単位の予算にカウントされ、上限を超えたエージェントは、支出がLLMからかMCPツールからかを問わず切断されます。
- メッシュはすべてのMCP呼び出しをトレースログに記録 — AIエージェント可観測性でカバーされるのと同じテレメトリ。
結果:MCPエコシステムの幅広さを得ながら、そのデフォルトの信頼前提を継承しません。
OpenLegionの見方
MCPはOpenAPI以来、最も重要なエージェントエコシステム標準です — 本来であればN × Mの統合作業(すべてのエージェントフレームワーク×すべてのツール)になるところを、N + Mのサーバーとクライアントに圧縮します。しかし、プロトコルの意図的な最小主義は、本番チームが認証、サンドボックス、予算、監査といった退屈なインフラ — プロプライエタリシステムがバンドルしていたもの — を再構築する必要があることを意味します。MCPをインスタント食品扱いで重ねずに出荷するフレームワークは、デフォルトで安全でないエージェントを出荷します。MCPを真剣に扱い、それを制約するAIエージェントプラットフォームを選んでください。
本番グレードの制御を組み込んだMCP互換エージェントを展開しましょう。
よくある質問
Model Context Protocolとは?
Model Context Protocol (MCP) は、Anthropicが2024年11月に導入したオープンなJSON-RPC標準で、AIエージェントが統一されたインターフェース経由で外部ツールを発見・呼び出せるようにします。MCPサーバーが機能(ツール、リソース、プロンプト)を公開し、MCPクライアント(エージェントランタイム、IDE、アシスタント)がそれを消費します。2025年中の主要採用者にはOpenAI、Microsoft Copilot、Cursor、Zed、ほとんどのエージェントフレームワークが含まれます。
MCPを作ったのは誰で、オープンですか?
AnthropicがMCPを作り、PythonとTypeScriptのリファレンスSDKとともにオープン仕様の下でリリースしました。仕様はGitHub経由でコミュニティガバナンスされており、ライセンスやプロプライエタリなロックインはありません。誰でもMCPサーバーやクライアントを書けますし、主要LLMプロバイダーはMCP互換のツーリングを出荷しています。
MCPサーバーとMCPクライアントの違いは?
MCPサーバーは機能を公開します — Postgresサーバーはクエリツール、ファイルシステムサーバーはファイル読み書き、Slackサーバーはメッセージ送信を公開。MCPクライアントは消費側 — 通常はエージェントランタイム、IDE、AIアシスタント。クライアントは多数のサーバーに並行接続でき、サーバーは多数のクライアントから再利用できます。
MCPはデフォルトで安全ですか?
いいえ — そしてそれは意図的です。MCPは機能公開プロトコルであり、認可プロトコルではありません。リファレンス実装(Claude Desktop、SDKサンプル)は、サーバーをユーザーのファイルシステム権限で認証なしのホストサブプロセスとして実行します。本番展開はMCP自体の上に、認証、サンドボックス、ツール単位の予算、監査ログを追加する必要があります。
MCPはOpenAIファンクション呼び出しとどう比較できますか?
OpenAIファンクション呼び出しは、APIリクエストで定義された関数を1つのLLMに呼ばせるための単一ベンダーパターンで — ツールがシステム間でどう発見、パッケージ、共有されるかを標準化しません。MCPは同じ問題に対するエコシステムレベルでのクロスベンダーのオープン標準です。両者は補完的:MCPサーバーが機能を公開し、MCPクライアントはGPTモデル呼び出し時にそれらをOpenAI形式のファンクション定義として、Claude呼び出し時にAnthropicのツールユース形式としてレンダリングできます。
任意のLLMプロバイダーでMCPを使えますか?
可能です。MCPはLLM非依存です — クライアントが基礎となるLLMが期待する形式(Anthropicのツールユース、OpenAIのファンクション呼び出し、Geminiのファンクション宣言)にMCPツール定義をレンダリングします。LiteLLM経由で100+プロバイダーをサポートするOpenLegionのようなランタイムは、MCPツールを各プロバイダーの呼び出し規約に自動的に適応させます。