For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
メインナビゲーション

セキュア MCP トンネル

プライベート MCP サーバーをインターネットに公開せずに、対応する OpenAI 製品に接続できます。

セキュア MCP トンネルを使うと、ファイアウォールのインバウンドポートを開放したり、サーバーをインターネットに公開したりせずに、プライベート MCP サーバーを対応する OpenAI 製品に接続できます。MCP サーバーにすでにアクセスできるネットワーク内で tunnel-client を実行します。これにより、OpenAI へのアウトバウンド HTTPS 接続が確立され、キューに入った MCP 処理が取得されます。リクエストはローカルに転送され、レスポンスは同じトンネルを通じて返されます。

セキュア MCP トンネルは、開発者モードでのテストを含むプライベート MCP 接続に対応しています。 公開プラグインの申請や配布には対応していません。 公開プラグインには、インターネットからアクセスできる安定した HTTPS MCP エンドポイントが必要です。 MCP サーバーを非公開に保つ必要がある場合は、そのサーバーにリクエストを転送する HTTPS プロキシを公開してください。 エンドポイントと認証の要件については、 公開プラグインの申請を参照してください。

MCP トンネルとは

MCP トンネルは、ネットワーク内のホストから OpenAI がホストする MCP エンドポイントへのアウトバウンド専用接続です。プライベート環境やオンプレミス、ファイアウォールの内側にある MCP サーバーを、ChatGPT、Codex、Responses API、またはその他の対応する OpenAI サービスから呼び出す必要がある場合に使用します。

セキュア MCP トンネルは、MCP サーバーを非公開に保ちながら、対応する OpenAI 製品に通常の MCP リクエスト経路を提供します。tunnel-client は OpenAI をポーリングして処理を取得し、MCP リクエストをローカルに転送して、同じトンネルを通じてレスポンスを返します。

セキュア MCP トンネルの利用に適したケース

  • MCP サーバーが、プライベートネットワーク、オンプレミス、開発者のマシン、または既存のアクセス制御で保護された環境で稼働している場合
  • MCP サーバーを公開せずに、ChatGPT、Codex、Responses API、またはその他の対応する OpenAI サービスから利用したい場合
  • tunnel-client を実行するホストから、デフォルトでは api.openai.com:443、コントロールプレーンの mTLS が設定されている場合は mtls.api.openai.com:443 へのアウトバウンド HTTPS リクエストがネットワークで許可され、プライベート MCP サーバーにもアクセスできる場合
  • MCP の一般的なコンセプトについては、まず MCP サーバーガイドを参照してください。

仕組み

  1. Platform のトンネル設定で、OpenAI がホストする MCP トンネルエンドポイントを作成または管理します。
  2. プライベート MCP サーバーにアクセスできるネットワーク内で tunnel-client を実行します。
  3. tunnel-client にトンネルの識別情報とプライベート MCP サーバーのアドレスを設定します。
  4. OpenAI 製品は、OpenAI がホストするトンネルエンドポイントに MCP リクエストを送信します。
  5. tunnel-client はロングポーリングでキューに入った処理を取得し、各 JSON-RPC リクエストをプライベート MCP サーバーに転送して、トンネル経由でレスポンスを送り返します。

プライベート MCP サーバーに公開リスナーは必要ありません。OpenAI がホストするエンドポイントが、対応する製品に通常の MCP リクエスト経路を提供し、ネットワーク接続は引き続き内部から開始されます。コネクタが結果のストリーミングを要求した場合、トンネル経由で処理途中のサーバー送信イベントを転送できます。

OpenAI 製品は、OpenAI がホストするトンネルエンドポイントを呼び出します。 tunnel-client はロングポーリングでキューに入った処理を取得し、 同じトンネルを通じて MCP レスポンスを返します。

事前準備

次のものが必要です。

  • Platform のトンネル設定で取得した tunnel_id
  • tunnel-client の実行用 API キー
  • ネットワーク内から tunnel-client が stdio または HTTP 経由でアクセスできる MCP サーバー

権限とアクセス

Platform のトンネル権限と ChatGPT の開発者モードへのアクセス権限は別のものです。

  • トンネルの作成や編集には、トンネルの 読み取り 権限と 管理権限が必要です。
  • tunnel-client の実行や、アプリ作成時のトンネルの選択には、トンネルの 読み取り 権限と 使用権限が必要です。
  • トンネル権限は Platform の組織に適用されます。Platform の組織オーナーまたは RBAC 管理者がトンネルのロールを付与します。
  • ChatGPT の開発者モードは、別途付与されるワークスペース権限です。Enterprise/Edu では、ワークスペース管理者が開発者モードへのアクセスを許可し、その後ユーザーが 設定 → セキュリティとログインで有効にします。プランごとのポリシーについては、開発者モードに関するヘルプセンターの記事を参照してください。

開発者モードへのアクセス権限は対象の ChatGPT ワークスペース管理者に、トンネル権限は対象の Platform 組織オーナーまたは RBAC 管理者に依頼してください。

適切な組織とワークスペースへのトンネルの関連付け

トンネルは、1 つ以上の Platform 組織または ChatGPT ワークスペースに関連付けられます。この関連付けで、トンネルの検出や使用を許可する OpenAI 側のコンテキストをすべて指定します。

  • トンネルを所有または管理する Platform 組織を含めます。
  • アプリ作成時にトンネルを一覧表示する必要がある ChatGPT ワークスペースを含めます。
  • Codex、Responses API、またはその他の対応製品が別の Platform 組織からプライベート MCP サーバーを呼び出す場合は、その組織も含めます。
  • tunnel-client には同じ tunnel_id を使用します。組織やワークスペースを追加しても、別のトンネルが作成されたり、プライベート MCP サーバーのエンドポイントが変更されたりすることはありません。

個人アカウントでは、そのアカウントに属する個人用の Platform 組織を使用します。ChatGPT と Codex のテストでは、対象の ChatGPT ワークスペースと Codex が使用する Platform 組織にトンネルを関連付けます。個人用の Platform 組織だけに関連付けられたトンネルが、Enterprise/Edu ワークスペースに自動的に表示されることはありません。

Platform 組織と ChatGPT ワークスペースがすでに連携している場合は、Platform のトンネル設定で不足している組織またはワークスペースを追加できます。Platform 組織に対応する ChatGPT ワークスペースがない場合など、エンタープライズ環境の構成を自動で確認できない場合は、OpenAI のアカウント担当チームにお問い合わせください。トンネルを使用するエンタープライズアカウントの対応関係について、レビューを経た手動の関連付けの上書きを依頼できます。

ネットワーク要件

tunnel-client は、インターネットからのインバウンドアクセスを必要としません。必要なのは、OpenAI へのアウトバウンド HTTPS 接続と、ローカルからプライベート MCP サーバーへのアクセスです。

接続元接続先用途
tunnel-client を実行するホストapi.openai.com:443/v1/tunnel/*(HTTPS 経由)デフォルトのポーリングとレスポンスの送信
tunnel-client を実行するホストmtls.api.openai.com:443/v1/tunnel/*(HTTPS 経由)コントロールプレーンの mTLS が設定されている場合のポーリングとレスポンスの送信
tunnel-client を実行するホスト設定済みの stdio コマンドまたは MCP サーバーの URLネットワーク内からの MCP リクエストの転送

tunnel-client のセットアップ

Platform のトンネル設定を開き、そこにあるダウンロードリンク、または openai/tunnel-client で公開されている最新の tunnel-client リリースを使用します。運用手順書には特定のリリースの URL を固定で記載せず、常に最新リリースを指す URL を記載してください。

バイナリがすでにある場合は、まず tunnel-client help quickstart を実行します。名前付きのローカル stdio プロファイルには、次を使用します。

export CONTROL_PLANE_API_KEY="sk-..."

tunnel-client init \
  --sample sample_mcp_stdio_local \
  --profile local-stdio \
  --tunnel-id tunnel_0123456789abcdef0123456789abcdef \
  --mcp-command "python /path/to/server.py"

tunnel-client doctor --profile local-stdio --explain
tunnel-client run --profile local-stdio

HTTP MCP サーバーの場合は、--mcp-command の代わりに --mcp-server-url https://mcp.internal.example.com/mcp を使用します。

アプリの作成やテスト中は、tunnel-client run ... を正常に稼働させておいてください。アプリの検出と MCP ツールの呼び出しには、クライアントが実行されている必要があります。

ChatGPT、Codex、または API フローからテストする前に、 /ui のローカル管理 UI で、実行中のクライアントが正常に動作し、 準備が完了して接続されているかを確認できます。

tunnel-client の実行場所の選択

プライベート MCP サーバーにすでにアクセスできる信頼境界の内側で、tunnel-client を実行します。一般的なデプロイパターンは次のとおりです。

  • Kubernetes サイドカー: 同じ Pod 内で MCP サーバーとともに tunnel-client を実行し、localhost 経由で接続します。
  • 専用の Kubernetes デプロイメント: プライベートな Service を介して MCP サーバーにすでにアクセスできる場合は、tunnel-client を別に実行します。
  • VM または systemd サービス: プライベートネットワーク経由で MCP サーバーにアクセスできるホスト上で、tunnel-client を実行します。

ChatGPT からの接続

ChatGPT プラグインに移動し、プラスボタンを選択して開発者モードのアプリを作成します。 接続トンネル を選択します。ChatGPT に利用可能なトンネルが表示されたら選択するか、有効な tunnel_id がすでにある場合は貼り付けます。

ChatGPT にトンネルが表示されない場合は、トンネルが Platform の組織だけでなく、対象の ChatGPT ワークスペースにも関連付けられていることを確認してください。また、アプリ作成者にトンネルの 読み取り + 使用権限があることも確認してください。

Responses API からの接続

MCP ツールの定義で、トンネル識別子を tunnel_id として渡します。OpenAI がホストするトンネルエンドポイントを server_url として渡さないでください。server_url は、Responses API から直接アクセスできる MCP サーバーにのみ使用します。

Responses API でのセキュア MCP トンネルの使用
curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-6-astra",
    "input": "Use the private MCP server to answer my request.",
    "tools": [
      {
        "type": "mcp",
        "server_label": "private_mcp",
        "tunnel_id": "tunnel_0123456789abcdef0123456789abcdef"
      }
    ]
  }'

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

プライベート MCP サーバーは、お客様が管理する環境内に維持されます。 tunnel-client はランタイム API キーを使用し、 必要に応じてオプションのコントロールプレーン mTLS も使用して、アウトバウンド HTTPS 経由で OpenAI にアクセスします。

  • MCP サーバーのアドレスは非公開のままで、tunnel-client が実行される環境の内側からのみ使用されます。
  • tunnel-client は OpenAI のトンネルコントロールプレーンに対して認証を行い、対応する OpenAI プロダクトは OpenAI がホストするトンネルエンドポイントを使用します。
  • トンネルへのアクセスには、独立した公開インバウンド経路を新設するのではなく、既存の組織とワークスペースのコンテキストが適用されます。
  • tunnel-client は、アウトバウンドプロキシ、カスタム CA バンドル、コントロールプレーンのクライアント証明書、MCP 側の mTLS など、エンタープライズのネットワーク要件に対応しています。

ログ記録の境界

セキュア MCP トンネルでは、トンネルによる通信と、プロダクトのアプリレベルのログ記録を分離しています。

  • トンネルコントロールプレーンの認証、ロングポーリングとレスポンスのトラフィック、個々のトンネル通信リクエストは、トンネル経路から ChatGPT Compliance Platform のアプリイベントとして出力されることはありません。
  • トンネルのメタデータの変更は、API プラットフォームの監査ログで、tunnel.createdtunnel.updatedtunnel.deleted として確認できます。
  • ChatGPT がセキュア MCP トンネルを介してカスタムアプリにアクセスする場合も、トンネルの役割は通信経路の提供に限られます。アプリ側の経路には、引き続き通常のアプリレベルのコンプライアンスログ記録が適用されます。これには、アプリ呼び出しログや、アプリのリンク時またはリンク解除時の APP_AUTH_LOG など、アプリ認証のライフサイクルログが含まれます。

上級:許可リストに登録された HTTP コールアウト

セキュア MCP トンネルは、対応するエージェントや API フローからお客様のネットワークへの、範囲を厳密に限定した HTTP コールアウトにも対応できます。tunnel-client には Harpoon という組み込み MCP サーバーが含まれています。Harpoon は、設定済みの HTTP 接続先をラベルで提供し、リクエストとレスポンスに制限を設けたうえで、トンネル経由での呼び出しを可能にします。

少数のプライベート REST エンドポイントに、公開せずにアクセスする必要がある場合に使用します。Harpoon は汎用プロキシではありません。呼び出し元は任意のホストを選択できず、リクエストはお客様が設定した接続先とメソッドに限定されます。

トラブルシューティング

  • Platform のトンネル設定に「トンネルへのアクセス権限が必要です」と表示される場合: トンネルの権限はプロジェクト単位ではなく、組織単位です。対象の Platform 組織を選択してから、組織のオーナーまたは RBAC 管理者に、必要な権限を持つロールまたはグループへの追加を依頼してください。トンネルの表示には 読み取り 権限、作成、編集、削除には 読み取り + 管理 権限が必要です。該当するロールがない場合、管理者はロールを作成してグループに割り当て、そのグループにあなたを追加できます。tunnel-client の実行やコネクタ設定でのトンネルの選択には、 使用 権限も必要です。新しいロールの割り当てが反映されるまで、最大 30 分かかる場合があります。
  • ChatGPT にトンネルが表示されない場合: トンネルの関連付け先に、Platform の組織だけでなく、対象の ChatGPT ワークスペースも含まれていることを確認してください。そのうえで、コネクタのオペレーターにトンネルの 使用 権限があることを確認します。エンタープライズアカウントでワークスペースを自動的にリンクできない場合は、OpenAI のアカウント担当チームに連絡し、レビューを経た手動による関連付けの例外対応を依頼してください。
  • コネクタの検出やツールの呼び出しに失敗する場合: tunnel-client run ... が引き続き実行されていることを確認してから、tunnel-client doctor --profile <name> --explain を再実行します。
  • トンネルを確認できても編集できない場合: オペレーターにはトンネルの 読み取り 権限があり、トンネルの 管理権限がない可能性があります。
  • tunnel-client は、/healthz/readyz/metrics に加え、/ui でローカル管理 UI を提供します。
  • 管理 UI へのアクセスは、デフォルトではループバックのみに限定されています。オペレーター用ネットワークからアクセスさせる明確な必要がある場合にのみ、リモートからアクセスできるようにしてください。
  • ChatGPT、Codex、または API フローからテストする前に、これらのエンドポイントや UI で、クライアントが正常に動作し、準備が完了してポーリングを行っていることを確認してください。
  • クライアントが接続されていない場合、tunnel-client が再接続するまで、トンネル経由のリクエストは失敗します。
  • 生の HTTP データのログ記録はデフォルトで無効になっており、サポート用のエクスポートでは機密情報がマスキングされます。

OAuth

  • OAuth ディスカバリーはトンネル経路を介して実行できるため、MCP サーバー自体を非公開に保つことができます。
  • トンネルは、ブラウザを介した OAuth フローに必要な、上流の認可サーバーのメタデータを保持します。
  • 認可サーバー自体が自動的にトンネル経由で接続されるわけではありません。パブリックインターネットからも tunnel-client のホストからも認可サーバーにアクセスできない場合、MCP サーバーにアクセスできても OAuth フローが失敗する可能性があります。

設定場所

  • OpenAI がホストする MCP トンネルエンドポイントは、Platform のトンネル設定で管理します。
  • ChatGPT プラグインで開発者モードのアプリを作成する際に、トンネルを使用します。
  • Codex や API のフローでは、対応する製品のインターフェースで提供される、トンネル経由の MCP 接続先を使用します。

次のステップ

  • Platform のトンネル設定でトンネルを作成または管理します。
  • tunnel-client doctor --profile <profile> --explain を使って tunnel-client プロファイルを検証します。
  • ChatGPT プラグイン、または利用中の対応する OpenAI 製品のインターフェースからトンネルに接続します。
機密情報を除去した OpenAI Platform のトンネル設定画面のスクリーンショット。

Platform のトンネル設定で、OpenAI がホストする MCP トンネルエンドポイントを作成・管理します。

機密情報を除去した、「トンネル」が選択されている ChatGPT のアプリ作成画面のスクリーンショット。

ChatGPT の開発者モードのアプリをプライベート MCP サーバーに接続する際は、「トンネル」を選択します。