MCPインフラストラクチャとは、Model Context Protocolの機能を公開、運用するために必要なすべての要素です。クライアント、transport、サーバー、ツール、認可、ポリシー、認証情報、バックエンド実行、状態、テレメトリーが含まれます。MCPサーバーは構成要素の一つであり、本番システム全体ではありません。
デモはtools/listとtools/callまでで終えられます。本番環境では、誰が呼び出したか、何へアクセスできるか、書き込みが繰り返される可能性があるか、運用者がその効果をどう再構築するかに答える必要があります。
MCPが標準化するもの
MCPは、クライアントとサーバーが機能を折衝し、メッセージを交換するためのJSON-RPCプロトコルを定義します。サーバーは次のものを公開できます。
- モデルが選択、呼び出しできるツール
- クライアントが読み取り、subscribeできるリソース
- クライアントがユーザーやモデルへ提示できる再利用可能なプロンプト
MCPツール仕様は、tools/listによる検出、tools/callによる呼び出し、入力と任意の出力スキーマ、構造化content、ツール一覧の変更通知を定義しています。
プロトコルはこれらの契約を伝達します。ツールが現在のテナントにとって安全か、有用か、認可されているかまでは判断しません。
プロトコルを取り巻くインフラ
flowchart LR
C[MCP client] --> T[stdio or Streamable HTTP]
T --> S[MCP server]
S --> A[Authentication and policy]
A --> X[Credential and execution layer]
X --> B[Backend APIs and data]
S --> R[Session and operation state]
S --> O[Logs, traces, and evaluations]
X --> O
B --> O
各境界には個別の役割があります。
クライアントとtransport
クライアントは、どのサーバー機能をモデルへ公開するか、ユーザーが呼び出しをどう承認するかを決めます。ローカルサーバーでは一般にstdioを使い、リモートサーバーではStreamable HTTPを使います。MCP transport仕様は、DNS rebinding攻撃を防ぐため、HTTPサーバーにOrigin headerの検証も求めています。
transportのセキュリティは接続を保護します。データベースの行やクラウドリソースを認可するものではありません。
サーバーとツールレジストリ
サーバーはMCPのライフサイクルメッセージを実装し、ツール、リソース、プロンプトを公開します。ツールレジストリには名前、説明、スキーマ、annotationが含まれます。サーバー自体が信頼できる場合を除き、クライアントはツールのannotationを信頼できないものとして扱う必要があります。
ツール定義は内部のエンドポイント名ではなく、タスクに合わせます。MCPツール設計ガイドでは、重複する選択肢を減らし、モデルが使える結果を返す方法を説明しています。
認証とポリシー
認証は呼び出し元または代理対象のユーザーを特定します。ポリシーは、そのIDがどのツール、リソース、テナント、アクションへアクセスできるかを決めます。HTTP transportについて、MCP認可仕様は、protected resource discovery、authorization server metadata、resource indicator、bearer token、PKCE、audience検証を使うOAuthベースのフローを定義しています。
認可はバックエンドまで継続する必要があります。ゲートウェイでdelete_projectを隠しても、基盤APIは認可されていない削除を拒否しなければなりません。
認証情報と実行のレイヤー
MCPサーバーは、上流API向けに別のtokenを必要とする場合があります。現在の認可仕様は、クライアントのMCPアクセストークンを上流サービスへそのまま渡すことを明示的に禁止しています。サーバーは、そのバックエンド向けの別の認証情報を交換または取得する必要があります。
これらの認証情報をツールの引数や結果へ含めないでください。モデルに必要なのは結果であり、結果を得るために使ったシークレットではありません。MCPキーのセキュリティガイドでは、認証情報の経路を詳しく追っています。
バックエンド、状態、復旧
バックエンドはビジネス上の認可、データ整合性、外部への効果を担います。セッション状態には、どのサーバー接続が有効かを記録できます。操作状態には、特定の書き込みが開始、完了、失敗、要照合のいずれであるかを記録します。
chat履歴を唯一の操作台帳として使わないでください。要約されたツール結果だけでは、タイムアウトした支払いやデプロイを繰り返すべきか判断できません。
テレメトリーと評価
一つのトレースで、ユーザーリクエスト、モデルの選択、ツール呼び出し、ポリシー判断、バックエンドリクエスト、最終的な効果を結びます。安定したテナント、ユーザー、エージェント、セッション、ツール呼び出し、操作のIDを記録します。token、認証情報、機密性の高いpayloadは除外します。
評価セットには、ツール選択の衝突、不正な入力、禁止リソース、承認経路、再試行、中断されたレスポンスを含めます。単独では動作するツールでも、似たツールが20個見えると失敗する可能性があります。
一つのツール経路全体をレビューする
最も広範な効果を持つMCPツールを選びます。handlerを越えて、ID、ポリシー、認証情報、バックエンド状態、テレメトリーまで追跡します。プロンプトの指示や、人間によるログの読み取りに依存する手順は、不足しているインフラとして記録します。
以下のプロンプトは、ツールを呼び出さずにこの追跡を実行します。