MCP の仕様 (1) - 概要
以下の記事が面白かったので、簡単にまとめました。
1. MCP の概要
「MCP」(Model Context Protocol) は、LLM アプリケーションと外部データソースおよびツールとのシームレスな統合を可能にするオープンプロトコルです。AI 搭載 IDE の構築、チャットインターフェースの拡張、カスタム AI ワークフローの作成など、どのような場合でも、「MCP」は LLM と必要なコンテキストを接続するための標準化された方法を提供します。この仕様は、schema.ts の TypeScript スキーマに基づいて、正式なプロトコル要件を定義します。
「MCP」は、アプリケーションに以下の標準化された方法を提供します。
・コンテキスト情報を言語モデルと共有する
・ツールと機能をAIシステムに公開する
・構成可能な統合とワークフローを構築する
このプロトコルは、JSON-RPC 2.0 を使用して、以下の間の通信を確立します。
・ホスト
接続を開始するLLMアプリケーション
・クライアント
ホストアプリケーション内のコネクタ
・サーバ
コンテキストと機能を提供するサービス
「MCP」は、開発ツールのエコシステム全体にわたってプログラミング言語のサポートを追加する方法を標準化するLanguage Server Protocolから着想を得ています。同様に、MCPはAIアプリケーションのエコシステムに追加のコンテキストとツールを統合する方法を標準化します。
2. 主な要素
2-1. 基本プロトコル
・JSON-RPCメッセージ形式
・ステートフル接続
・サーバーとクライアントの機能ネゴシエーション
2-2. 機能
サーバはクライアントに以下の機能を提供します。
・リソース
ユーザーまたはAIモデルが使用するコンテキストとデータ
・プロンプト
ユーザー向けのテンプレート化されたメッセージとワークフロー
・ツール
AIモデルが実行する関数
クライアントはサーバに以下の機能を提供できます。
・サンプリング
サーバが開始するエージェント動作と再帰的なLLMインタラクション
・ルート
操作対象となるURIまたはファイルシステムの境界に関するサーバが開始する問い合わせ
・エリシテーション
ユーザーからの追加情報を求めるサーバが開始する要求
2-3. 追加ユーティリティ
・設定
・進捗状況の追跡
・キャンセル
・エラーレポート
・ログ記録
3. セキュリティ
「MCP」は、任意のデータアクセスとコード実行パスを通じて強力な機能を実現します。この強力な機能には、すべての実装者が慎重に対処しなければならない重要なセキュリティと信頼性の考慮事項が伴います。
3-1. 主要原則
(1) ユーザーの同意と制御
・ユーザーは、すべてのデータアクセスと操作に明示的に同意し、理解する必要があります。
・ユーザーは、共有されるデータと実行されるアクションを制御できなければなりません。
・実装者は、アクティビティの確認と承認のための明確なUIを提供する必要があります。
(2) データプライバシー
・ホストは、ユーザーデータをサーバに公開する前に、ユーザーの明示的な同意を得る必要があります。
・ホストは、ユーザーの同意なしにリソースデータを他の場所に送信してはなりません。
・ユーザーデータは適切なアクセス制御によって保護する必要があります。
(3) ツールの安全性
・ツールは任意のコード実行を意味するため、適切な注意を払って扱う必要があります。
・特に、アノテーションなどのツールの動作に関する記述は、信頼できるサーバから取得したものでない限り、信頼できないものと見なすべきです。
・ホストは、ツールを呼び出す前に、ユーザーの明示的な同意を得る必要があります。
・ユーザーは、各ツールの使用を承認する前に、その動作を理解する必要があります。
(4) LLMサンプリング制御
・ユーザーは、LLMサンプリング要求を明示的に承認する必要があります。
・ユーザーは、以下を制御できます。
・サンプリングを実行するかどうか
・送信される実際のプロンプト
・サーバーが確認できる結果
・このプロトコルは、プロンプトに対するサーバの可視性を意図的に制限しています。
3-2. 実装ガイドライン
「MCP」自体はこれらのセキュリティ原則をプロトコルレベルで強制することはできませんが、実装者は以下の点に留意する必要があります。
・アプリケーションに堅牢な同意および認可フローを構築する
・セキュリティへの影響を明確に文書化する
・適切なアクセス制御とデータ保護を実装する
・統合においてセキュリティのベストプラクティスに従う
・機能設計においてプライバシーへの影響を考慮する
