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