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

トランスポート

MCPの通信メカニズムについて学びます。
トランスポートは、Model Context Protocol (MCP) におけるクライアントとサーバー間の通信基盤を提供します。トランスポートは、メッセージの送受信に関する基本的なメカニズムを処理します。

メッセージ形式#

MCPは、ワイヤ形式としてJSON-RPC 2.0を使用します。トランスポート層は、MCPプロトコルメッセージをJSON-RPC形式に変換して送信し、受信したJSON-RPCメッセージをMCPプロトコルメッセージに変換する役割を担います。
使用されるJSON-RPCメッセージには、次の3つのタイプがあります。

リクエスト#

レスポンス#

通知#

組み込みトランスポートタイプ#

MCPには、2つの標準トランスポート実装が含まれています。

標準入出力 (stdio)#

stdioトランスポートは、標準入出力ストリームを介した通信を可能にします。これは、ローカル統合やコマンドラインツールに特に役立ちます。
stdioを使用する場合:
コマンドラインツールを構築する場合
ローカル統合を実装する場合
シンプルなプロセス間通信が必要な場合
シェルスクリプトを使用する場合
TypeScript (Server)
TypeScript (Client)
Python (Server)
Python (Client)

Server-Sent Events (SSE)#

SSEトランスポートは、クライアントからサーバーへの通信にHTTP POSTリクエストを使用し、サーバーからクライアントへのストリーミングを可能にします。
SSEを使用する場合:
サーバーからクライアントへのストリーミングのみが必要な場合
制限されたネットワークで作業する場合
シンプルなアップデートを実装する場合
TypeScript (Server)
TypeScript (Client)
Python (Server)
Python (Client)

カスタムトランスポート#

MCPを使用すると、特定のニーズに合わせてカスタムトランスポートを簡単に実装できます。トランスポート実装は、Transportインターフェースに準拠する必要があります。
カスタムトランスポートは、次の目的で実装できます。
カスタムネットワークプロトコル
特殊な通信チャネル
既存のシステムとの統合
パフォーマンスの最適化
TypeScript
Python
MCPサーバーはasyncioで実装されることが多いですが、より幅広い互換性のために、トランスポートのような低レベルのインターフェースはanyioで実装することをお勧めします。

エラー処理#

トランスポートの実装は、さまざまなエラーシナリオを処理する必要があります。
1.
接続エラー
2.
メッセージ解析エラー
3.
プロトコルエラー
4.
ネットワークタイムアウト
5.
リソースクリーンアップ
エラー処理の例:
TypeScript
Python
MCPサーバーはasyncioで実装されることが多いですが、より幅広い互換性のために、トランスポートのような低レベルのインターフェースはanyioで実装することをお勧めします。

ベストプラクティス#

MCPトランスポートを実装または使用する場合:
1.
接続ライフサイクルを適切に処理する
2.
適切なエラー処理を実装する
3.
接続終了時にリソースをクリーンアップする
4.
適切なタイムアウトを使用する
5.
送信する前にメッセージを検証する
6.
デバッグのためにトランスポートイベントをログに記録する
7.
必要に応じて再接続ロジックを実装する
8.
メッセージキューのバックプレッシャーを処理する
9.
接続のヘルス状態を監視する
10.
適切なセキュリティ対策を実装する

セキュリティに関する考慮事項#

トランスポートを実装する場合:

認証と認可#

適切な認証メカニズムを実装する
クライアントの資格情報を検証する
安全なトークン処理を使用する
認可チェックを実装する

データセキュリティ#

ネットワークトランスポートにTLSを使用する
機密データを暗号化する
メッセージの整合性を検証する
メッセージサイズ制限を実装する
入力データをサニタイズする

ネットワークセキュリティ#

レート制限を実装する
適切なタイムアウトを使用する
サービス拒否シナリオを処理する
異常なパターンを監視する
適切なファイアウォールルールを実装する

トランスポートのデバッグ#

トランスポートの問題をデバッグするためのヒント:
1.
デバッグログを有効にする
2.
メッセージフローを監視する
3.
接続状態を確認する
4.
メッセージ形式を検証する
5.
エラーシナリオをテストする
6.
ネットワーク分析ツールを使用する
7.
ヘルスチェックを実装する
8.
リソース使用量を監視する
9.
エッジケースをテストする
10.
適切なエラートラッキングを使用する
前へ
ルーツ
次へ
最新情報
Built with