Specification
Model Context Protocol(MCP)は、LLMアプリケーションと外部のデータソースおよびツールとの間のシームレスな統合を可能にするオープンなプロトコルです。AI搭載のIDEを構築する場合でも、チャットインターフェイスを強化する場合でも、カスタムのAIワークフローを作成する場合でも、MCPは言語モデルに必要なコンテキストを接続するための標準化された方法を提供します。
この仕様は、TypeScript schema の schema.ts に基づく、権威あるプロトコル要件を定義します。
実装ガイドや例については、modelcontextprotocol.io を参照してください。
この文書におけるキーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」、および「OPTIONAL」は、ここに示されているように、すべて大文字で記載されている場合に限り、BCP 14、RFC2119、および RFC8174 に記載されたとおりに解釈されます。
Overview
MCPは、アプリケーションが次のことを行えるようにするための標準化された方法を提供します。
- 言語モデルとコンテキスト情報を共有する
- AIシステムにツールと機能を公開する
- 組み合わせ可能な統合とワークフローを構築する
このプロトコルは、次の間で通信を確立するために JSON-RPC 2.0 メッセージを使用します。
- Hosts: 接続を開始するLLMアプリケーション
- Clients: Hostアプリケーション内のコネクタ
- Servers: コンテキストと機能を提供するサービス
MCPは、Language Server Protocol からいくらか着想を得ています。Language Server Protocol は、開発ツールのエコシステム全体にわたって、プログラミング言語のサポートを追加する方法を標準化するものです。同様に、MCPは、AIアプリケーションのエコシステムに追加のコンテキストとツールを統合する方法を標準化します。
Key Details
Base Protocol
- JSON-RPC メッセージ形式
- 状態を持つ接続
- Server と Client の機能ネゴシエーション
Features
Serverは、Clientに対して次のいずれかの機能を提供できます。
- Resources: ユーザーまたはAIモデルが利用するためのコンテキストとデータ
- Prompts: ユーザー向けのテンプレート化されたメッセージとワークフロー
- Tools: AIモデルが実行する関数
Clientは、Serverに対して次の機能を提供できます。
- Sampling: Serverが開始するエージェント的な振る舞いと再帰的なLLMインタラクション
- Roots: Serverが開始する、操作対象のURIまたはファイルシステム境界に関する問い合わせ
- Elicitation: ユーザーから追加情報を取得するためにServerが開始する要求
Additional Utilities
- 設定
- 進捗追跡
- キャンセル
- エラー報告
- ログ記録
Security and Trust & Safety
Model Context Protocol は、任意のデータアクセスおよびコード実行経路を通じて強力な機能を実現します。この力に伴い、すべての実装者が慎重に対処しなければならない重要なセキュリティ上、および trust & safety 上の考慮事項が生じます。
Key Principles
-
User Consent and Control
- ユーザーは、すべてのデータアクセスおよび操作について、明示的に同意し、それを理解していなければなりません
- ユーザーは、どのデータが共有され、どのような操作が行われるかについて、制御を保持しなければなりません
- 実装者は、アクティビティを確認し承認するための明確なUIを提供すべきです
-
Data Privacy
- Hostsは、ユーザーデータをServerに公開する前に、ユーザーから明示的な同意を得なければなりません
- Hostsは、ユーザーの同意なしにResourceデータを他所へ送信してはなりません
- ユーザーデータは、適切なアクセス制御によって保護されるべきです
-
Tool Safety
- Toolsは任意コード実行を表すため、適切な注意をもって扱わなければなりません
- 特に、annotation などのToolの振る舞いに関する説明は、信頼できるServerから取得されたものでない限り、信頼できないものとして扱うべきです
- Hostsは、いかなるToolを呼び出す前にも、ユーザーから明示的な同意を得なければなりません
- ユーザーは、承認する前に各Toolが何を行うのかを理解できるようにすべきです
- Toolsは任意コード実行を表すため、適切な注意をもって扱わなければなりません
-
LLM Sampling Controls
- ユーザーは、いかなるLLM sampling 要求についても、明示的に承認しなければなりません
- ユーザーは、次の点を制御できるようにすべきです
- sampling をそもそも行うかどうか
- 実際に送信される prompt
- Serverがどの結果を閲覧できるか
- このプロトコルは、Serverからpromptへの可視性を意図的に制限しています
Implementation Guidelines
MCP自体は、これらのセキュリティ原則をプロトコルレベルで強制することはできませんが、実装者は次のことを行うべきです (SHOULD)。
- アプリケーション内に堅牢な同意および認可のフローを構築する
- セキュリティ上の含意を明確に文書化する
- 適切なアクセス制御とデータ保護を実装する
- 統合においてセキュリティのベストプラクティスに従う
- 機能設計におけるプライバシー上の影響を検討する
Learn More
各プロトコル構成要素の詳細仕様については、以下を参照してください。
<CardGroup cols={5}>
<Card title="Architecture" icon="sitemap" href="/specification/2025-11-25/architecture" />
<Card title="Base Protocol" icon="code" href="/specification/2025-11-25/basic" />
<Card title="Server Features" icon="server" href="/specification/2025-11-25/server" />
<Card title="Client Features" icon="user" href="/specification/2025-11-25/client" />
<Card title="Contributing" icon="pencil" href="/community/contributing" />
</CardGroup>