MCP公式ドキュメント 日本語版
  1. コンセプト
MCP公式ドキュメント 日本語版
  • 始める
    • 導入
    • サンプルサーバー
    • クライアントの例
    • クイックスタート
      • サーバー開発者向け
      • クライアント開発者向け
      • Claude デスクトップ ユーザー向け
  • チュートリアル
    • LLMs を使用した MCP の構築
    • デバッグ
    • Inspector
  • コンセプト
    • リソース
    • コアアーキテクチャ
    • プロンプト
    • ツール
    • サンプリング
    • ルーツ
    • トランスポート
  • 発達
    • 最新情報
    • ロードマップ
    • 貢献
  1. コンセプト

コアアーキテクチャ

MCPがクライアント、サーバー、およびLLMをどのように接続するかを理解する
Model Context Protocol (MCP)は、柔軟で拡張性のあるアーキテクチャに基づいており、LLMアプリケーションと統合の間でシームレスな通信を可能にします。このドキュメントは、コアアーキテクチャコンポーネントと概念をカバーしています。

概要#

MCPはクライアント・サーバーアーキテクチャを採用しています。以下がその構成です:
ホストは接続を開始するLLMアプリケーション(例えばClaude DesktopやIDE)
クライアントはホストアプリケーション内のサーバーとの1:1接続を維持
サーバーはクライアントにコンテキスト、ツール、プロンプトを提供
image.png

コアコンポーネント#

プロトコル層#

プロトコル層はメッセージフレーミング、リクエスト/レスポンスのリンク、および高度な通信パターンを扱います。
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.
通知 は応答を期待しない一方向のメッセージです:
image.png

接続ライフサイクル#

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.
テスト
さまざまなトランスポートをテスト
エラー処理を確認
エッジケースをチェック
サーバーを負荷テスト
前へ
リソース
次へ
プロンプト
Built with