MCP 101: モデルコンテキストプロトコル入門
MCP、MCP、MCP
モデルコンテキストプロトコル(MCP)は、AI界隈で熱い話題として浮上しています。ソーシャルメディアをスクロールしていると、解説者、論者、ミーム制作者たちがMCPに関する投稿をしているのを目にします。GoogleやYouTubeでの簡単な検索ですぐに、多くの新しいコンテンツがMCPを扱っているのが見つかります。明らかに、人々は盛り上がっています。しかし、いったい何についてでしょうか?実際、とてもシンプルです:モデルが提供されるコンテキストによってのみ良いものであるなら、このコンテキスト拡張がどのように標準化されるかを保証するメカニズムは、エージェント能力を向上させるための重要な最前線なのです。
この概念に深く触れる時間がなかった方々もご安心ください。この文章の目的は、MCPの詳細について直感的な理解を提供することです。
前提条件
モデルコンテキストプロトコル(MCP)のこの説明は、理解しやすさを目指していますが、AIアプリケーションの進化する環境におけるその役割を理解するには、大規模言語モデル(LLM)の能力、特に情報を処理し、ツールを活用する方法についての基礎的な理解が大いに役立ちます。
紹介
2024年11月にAnthropicによってオープンソースプロトコルとして導入されたMCPは、LLMアプリケーションと外部データソースおよびツールとの統合を可能にします。
MCPを使用して構築されたいくつかの興味深いアプリケーションが登場しました。たとえば、Blender-MCPはClaudeがBlenderと直接やり取りし、制御することを可能にし、迅速な3Dモデリングやシーン作成、操作を支援します。
すべてを支配する1つのプロトコル
プロトコルは、データのフォーマットと処理のための一連のルールです。その名前が示すように、MCP(モデルコンテキストプロトコル)は確かにプロトコルであり、具体的にはLLMが外部情報源と接続する方法を標準化する一連のルールです。
MCPの前に、LSPがありました。
言語サーバープロトコル (LSP) は、統合開発環境 (IDE) が言語特有のツールと通信する方法の標準として登場しました。基本的に、LSPはそれをサポートする任意のIDEがさまざまなプログラミング言語とシームレスに統合できるようにします。
LSPを使えば、例えば単一のGo言語サーバーをLSP標準に従って作成し、LSP互換のIDE(例:VS Code、JetBrains製品、またはNeovim)が自動的にそれを活用して、Goのための自動補完、エラー検出、コードナビゲーションなどの機能を提供できます。
LSPに触発されたMCPは、言語モデルの統合に見られるMxN統合問題を克服します。ここでは、新しい言語モデル(M)がそれぞれの企業ツール(N)とインターフェースするためにカスタムコネクタとプロンプトを必要とします。MCPを採用することで、モデルとツールの両方が共通のインターフェースに適合し、統合の複雑さがM×NからM+Nに低減されます。
標準化
標準化の美しさは、各データソースごとに異なるコネクタを維持する必要がないことです。様々な情報源を横断しながら文脈情報を保持しようとするAIアプリケーションにとって、標準化は私たちがより堅牢でスケーラブルなシステムを構築する方向に移行することを可能にします。
MCPの構成要素
MCPには三つの主要な要素があります。
MCPホスト: 複数のMCPサーバーに接続するユーザー向けAIインターフェース(Claudeアプリ、IDEプラグインなど).
MCPクライアント: ホストとサーバー間の安全な接続を管理する仲介者で、サーバーごとに一つのクライアントを持ち、隔離を実現します。クライアントはホストアプリケーション内にあります。
MCPサーバー: Google Drive、Slack、GitHub、データベース、ウェブブラウザなど、さまざまなデータソースに接続する特定の機能(ツール、データアクセス、ドメインプロンプト)を提供する外部プログラム。
MCPは、Anthropicが「効果的なエージェントを構築する」というブログ投稿で表明したエージェントを構築するための直感が組み込まれているため、他のプロトコルよりも優れています。
サーバー側では著しい成長が見られ、1,000以上のコミュニティによって構築されたオープンソースのサーバーや企業からの公式統合が存在しています。また、コアプロトコルやインフラストラクチャを強化する貢献者がいることから、オープンソースの採用も大幅に進んでいます。
サーバーサイドプリミティブ
| 機能 | ツール | リソース | プロンプト |
|---|---|---|---|
| 機能 | サーバーがクライアントに実行可能な機能を提供できるようにします | サーバーがデータとコンテンツを公開し、それをクライアントが読み取ってLLM(大規模言語モデル)とのインタラクションのためのコンテキストとして使用できるようにします。 | サーバーが標準化されたLLMインタラクションのために定義できる事前定義されたテンプレートとワークフロー |
| 制御タイプ | モデル制御された | アプリケーション制御された | ユーザーコントロールされた |
| コントロールの意味 | ツールはサーバーからクライアントに公開されており、それらはLLMによって呼び出すことができる動的な操作を表しており、状態を変更したり外部システムと相互作用したりします。 | クライアントアプリケーションはリソースの使用方法とタイミングを決定します | プロンプトはユーザーの意図に基づいてサーバーからクライアントに公開されます |
クライアントサイドプリミティブ
ルーツ
ルートは、サーバーが対話することを許可されたホストのファイルシステムまたは環境内の特定の場所を定義します。ルートは、サーバーが操作できる境界を定義し、クライアントがサーバーに関連リソースとその場所について知らせることを可能にします。
サンプリング
サンプリングは、LLMインタラクションにおける伝統的なクライアントサーバー関係を逆転させる、MCPが提供するあまり活用されていない強力な機能です。クライアントがサーバーにリクエストを送るのではなく、サンプリングはMCPサーバーがクライアントからLLMの補完をリクエストできるようにします。これにより、クライアントはモデル選択、ホスティング、プライバシー、コスト管理に関して完全なコントロールを持つことができます。サーバーはモデルの好み、システムプロンプト、温度設定、トークン制限など、特定の推論パラメータをリクエストできますが、クライアントは潜在的な悪意のあるリクエストを拒否したり、リソースの使用を制限する権限を保持します。このアプローチは、クライアントがまだインテリジェントな機能へのアクセスを必要とする知らないサーバーと対話するシナリオで価値があります。
結論
MCPは、言語モデルと外部ツールおよびデータソースを接続するための共通プロトコルを確立することにより、カスタムコネクタの必要性を排除し、より堅牢なエコシステムを作り出します。
コミュニティアプローチは、「複合的な革新」または「3Dチェス」とも呼ばれるものを生み出します。各貢献者は他の人の仕事の上に築きます。ネットワーク効果は大きく、皆のためにパイが大きくなります。
Anthropicの賭けは、オープンなMCPで開発者をエンパワーメントすることで、より早く成長し、より頑健に進化し、最終的に彼らが単独で構築できる閉鎖的なシステムよりも多くの価値を提供できるというものでした。彼らが正しかったかどうかは時間が教えてくれるでしょうが、歴史は彼らが正しかったことを示唆しています。
参考文献と優れたリソース
なぜMCPが勝ったのか(潜在空間)
Anthropicによるモデルコンテキストプロトコル(MCP):起源、機能、影響
モデルコンテキストプロトコル(MCP)、明確に説明された(なぜ重要なのか)
エージェントを構築するためのモデルコンテキストプロトコル - アントロピックのマヘシュ・ムラーグとのフルワークショップ


