MCP公式ドキュメント 日本語版
コンセプト
ページをコピー
MCP公式ドキュメント 日本語版
始める
導入
サンプルサーバー
クライアントの例
クイックスタート
サーバー開発者向け
クライアント開発者向け
Claude デスクトップ ユーザー向け
チュートリアル
LLMs を使用した MCP の構築
デバッグ
Inspector
コンセプト
リソース
コアアーキテクチャ
プロンプト
ツール
サンプリング
ルーツ
トランスポート
発達
最新情報
ロードマップ
貢献
コンセプト
ページをコピー
コアアーキテクチャ
MCPがクライアント、サーバー、およびLLMをどのように接続するかを理解する
Model Context Protocol (MCP)は、柔軟で拡張性のあるアーキテクチャに基づいており、LLMアプリケーションと統合の間でシームレスな通信を可能にします。このドキュメントは、コアアーキテクチャコンポーネントと概念をカバーしています。
概要
#
MCPはクライアント・サーバーアーキテクチャを採用しています。以下がその構成です:
ホスト
は接続を開始するLLMアプリケーション(例えばClaude DesktopやIDE)
クライアント
はホストアプリケーション内のサーバーとの1:1接続を維持
サーバー
はクライアントにコンテキスト、ツール、プロンプトを提供
コアコンポーネント
#
プロトコル層
#
プロトコル層はメッセージフレーミング、リクエスト/レスポンスのリンク、および高度な通信パターンを扱います。
TypeScript
Python
主要クラスには以下が含まれます:
Protocol
Client
Server
トランスポート層
#
トランスポート層は、クライアントとサーバー間の実際の通信を処理します。MCPは複数のトランスポートメカニズムをサポートしています:
1.
Stdioトランスポート
通信に標準入力/出力を使用
ローカルプロセスに最適
2.
HTTPとSSEトランスポート
サーバーからクライアントへのメッセージにServer-Sent Eventsを使用
クライアントからサーバーへのメッセージにHTTP POSTを使用
すべてのトランスポートはメッセージ交換に
JSON-RPC
2.0を使用します。MCPメッセージフォーマットの詳細については
仕様
を参照してください。
メッセージタイプ
#
MCPには以下の主要なメッセージタイプがあります:
1.
リクエスト
は相手側からの応答を期待します:
2.
結果
はリクエストに対する成功した応答です:
3.
エラー
はリクエストが失敗したことを示します:
4.
通知
は応答を期待しない一方向のメッセージです:
接続ライフサイクル
#
1. 初期化
#
サーバークライアントサーバークライアント接続使用の準備完了initializeリクエストinitializeレスポンスinitialized通知
1.
クライアントはプロトコルバージョンと機能を伴う
initialize
リクエストを送信
2.
サーバーはそのプロトコルバージョンと機能で応答
3.
クライアントは確認として
initialized
通知を送信
4.
通常のメッセージ交換が開始
2. メッセージ交換
#
初期化後、以下のパタ ーンがサポートされます:
リクエスト-レスポンス
: クライアントまたはサーバーがリクエストを送信し、相手が応答
通知
: いずれの側も一方向メッセージを送信
3. 終了
#
いずれの側も接続を終了できます:
close()
によるクリーンな終了
トランスポートの切断
エラー条件
エラー処理
#
MCPは以下の標準エラーコードを定義します:
SDKとアプリケーションは-32000以上の独自のエラーコードを定義できます。
エラーは以下を通じて伝播されます:
リクエストへのエラーレスポンス
トランスポートのエラーイベント
プロトコルレベルのエラーハンドラ
実装例
#
以下はMCPサーバーを実装する基本的な例です:
TypeScript
Python
ベストプラクティス
#
トランスポートの選択
#
1.
ローカル通信
ローカルプロセスにはstdioトランスポートを使用
同一マシンでの通信に最適
単純なプロセス管理
2.
リモート通信
HTTP互換が必要なシナリオにはSSEを使用
認証と承認を含むセキュリティインプリケーションを考慮
メッセージ処理
#
1.
リクエスト処理
入力を徹底的に検証
型安全なスキーマを使用
エラーを優雅に処理
タイムアウトを実装
2.
進行状況の報告
長時間の操作には進行状況トークンを使用
進行状況を逐次報告
総進行状況がわかっている場合は含める
3.
エラー管理
適切なエラーコードを使用
有用なエラーメッセージを含める
エラー時にリソースをクリーンアップ
セキュリティの考慮事項
#
1.
トランスポートのセキュリティ
リモート接続にはTLSを使用
接続元を検証
必要な場合は認証を実装
2.
メッセージの検証
すべての受信メッセージを検証
入力をサニタイズ
メッセージサイズの制限を確認
JSON-RPC形式を確認
3.
リソース保護
アクセス制御を実装
リソースパスを検証
リソース使用状況を監視
リクエストを制限
4.
エラー処理
センシティブな情報を漏らさない
セキュリティ関連のエラーをログ
適切なクリーンアップを実行
DoSシナリオに対応
デバッグとモニタリング
#
1.
ロギング
プロトコルイベントをログ
メッセージフローをトラッキング
パフォーマンスを監視
エラーを記録
2.
診断
ヘルスチェックを実装
接続状態を監視
リソース使用状況をトラック
パフォーマンスをプロファイル
3.
テスト
さまざまなトランスポートをテスト
エラー処理を確認
エッジケースをチェック
サーバーを負荷テスト
更新日時
2025-03-11 10:47:40
前へ
リソース
次へ
プロンプト