転送方式を意識して選ぶ
ローカルの stdio サーバーとリモートの HTTP サービスでは、デプロイ要件が異なります。サポートされているリモートトランスポート、TLS、認証済みの経路を使用してください。すべての実装が同じ機能をサポートしていると決めつけず、クライアントとサーバーのバージョンを確認してください。
すべてのツールを API として扱う
引数を検証し、ユーザー固有の認可を適用し、リソースを制限してください。任意のシェル実行を利便性のためのツールとして公開しないでください。ツールが URL を取得する場合は送信先を制限し、説明や応答にシークレットを含めないでください。
本人確認の収集を適切な範囲に保つ
KYCなしのホストはプロバイダーへの登録データを最小化できますが、MCPサービスには依然として独自のユーザー、セッションセキュリティ、不正利用対策が必要となる場合があります。何をログに記録するかを明示し、目的を定めずにツールの入力を保持することは避けてください。
運用の明確さのためにデプロイ
専用ユーザーで実行し、ヘルスチェックを使用し、リクエスト時間を制限し、リバースプロキシのバッファリングとタイムアウトをプロトコルと互換性のある設定に保ってください。書き込み権限を付与する前に、認証、失効、切断、再試行をテストしてください。
認証をサポート対象のプロトコルに合わせる
HTTP ベースの MCP デプロイでは、プロトコルの現在の認可要件とクライアントの対応バージョンを確認してください。OAuthベースのリソースアクセスは、トークンのオーディエンス、ディスカバリ、スコープを伴い、単にホームページ上のパスワードではありません。HTTPS を使用し、意図したリソースに対してトークンを検証し、ベアラ認証情報をクエリ文字列に含めないでください。stdioサーバーは異なるローカル認証情報の境界を使用します。
- 未認証リクエストをテストする
- スコープ外の認証済みリクエストをテストする
- 認証情報を取り消し、機能しなくなることを確認
公式ドキュメント: MCP認可仕様
限定された最初のツールセットを公開する
まず、限られた量のデータを返す読み取り専用ツールから始めてください。ファイル書き込み、サーバーライフサイクル操作、外部メッセージは、その権限と重複動作を理解した後にのみ追加してください。返された Web ページやドキュメントは信頼できない入力として扱ってください。これらがツールサーバーの権限を暗黙に拡大してはなりません。
プロキシルールを書く前にプロトコルの動作を固定する
サーバーの SDK リリースと、クライアントが使用する MCP リビジョンの両方を記録してください。2026-07-28 Streamable HTTP リビジョンでは、リクエストは POST エンドポイントを使用します。プロトコルセッションや単独の GET ストリームに依存する古い例は、別のリビジョンです。サポートするクライアントを把握するまで、見かけ上の互換性要件を削除しないでください。リバースプロキシは、そのバージョンに必要なヘッダー、HTTP ステータス、およびレスポンスストリーミングの動作を保持しなければなりません。
- まずループバックリスナー上で読み取り専用ツールを起動し、その前面に意図する HTTPS/認証の境界を配置してください。
- パブリックプロキシ経由で、通常の結果、ストリーミング結果、タイムアウト、切断されたクライアントをテストしてください。
- トランスポートの要件に従い、許可されるOrigin値を検証してください。Originチェックは呼び出し元の認証の代わりにはなりません。
- イベントが最後にしか到着しない場合は、ツールのコードを変更する前にプロキシのバッファリングとタイムアウトの動作を確認してください。
公式ドキュメント: MCP 2026-07-28: ストリーミング可能な HTTP
成功時と同じくらい意図的に認可の失敗をテストする
OAuth で保護された HTTP アクセスの場合、MCP サーバーは保護されたリソースです。メタデータの検出、期待される発行者とトークンオーディエンス、特定の操作に必要なスコープをテストしてください。認証トークンを URL クエリ文字列に含めず、無関係なダウンストリームサービスに変更せずに転送しないでください。クライアント向けの認証失敗は、クライアントがサポートされているフローを通じて回復できるよう、適切な HTTP チャレンジを保持する必要があります。
- トークンなし、または期限切れのトークン: 保護されたエンドポイントはプライベートなツールデータを返すのではなく、アクセスを拒否します。
- 権限が不足している有効なトークン: 要求されたリソースには引き続きアクセスできません。
- 別の対象者向けのトークンは、署名が有効であっても拒否してください。
- 予期しない外部URLまたはファイルパス: 取得または書き込みの前に、ツールの権限に照らして検証してください。
- ログとエラートレース: トークンとプライベートなツール入力を除去したうえで、操作識別子と結果を保持します。
公式ドキュメント: MCP 2026-07-28:HTTP認可 · MCP:セキュリティのベストプラクティス