MCPトンネルはリサーチプレビュー段階です。お試しいただくにはアクセスをリクエストしてください。
プロキシは、/etc/mcp-gateway/config.yaml(Compose)またはレンダリングされたConfigMap(Helm、gateway.config.*から値が設定される)から設定を読み込みます。
| フィールド | 説明 | デフォルト |
|---|---|---|
listen_addr | リッスンするアドレスとポート。 | 必須 |
log_level | ログの詳細度:debug、info、warn、またはerror。 | info |
shutdown_timeout | グレースフルシャットダウン中に処理中のリクエストを待機する時間。 | 30s |
tunnel_domain | トンネルに割り当てられたベースドメイン。設定されている場合、ルート検索は受信ホスト名からこのサフィックスを削除するため、routesのキーはベアサブドメイン(wiki)にできます。空の場合、routesのキーは完全なホスト名と完全一致する必要があります。 | routesのキーがベアサブドメインの場合は必須 |
tls.cert_file | サーバーTLS証明書へのパス。 | 必須 |
tls.key_file | サーバーTLS秘密鍵へのパス。 | 必須 |
routes | サブドメインまたは完全なホスト名からアップストリームURLへのマップ。ルートマッチングを参照してください。 | 必須 |
upstream.allowed_ips | プロキシが接続を許可されているIPv4 CIDR範囲または単一アドレス。disable_ip_validationとは相互排他的です。 | RFC1918プライベート範囲 |
upstream.disable_ip_validation | アップストリームIP検証を完全に無効にします。allowed_ipsとは相互排他的です。 | false |
upstream.tls.ca_file | アップストリームTLSを検証するためのCAバンドル。 | なし |
upstream.tls.include_system_cas | アップストリームTLSに対してシステムCAバンドルも信頼します。 | false |
https://アップストリームルートの場合、upstream.tls.ca_fileまたはupstream.tls.include_system_casの少なくとも一方を設定してください。そうしないと、プロキシはアップストリーム証明書のトラストアンカーを持ちません。
routesはリストではなく、フラットな文字列マップ(map[string]string)です。プロキシは、まず受信ホスト名を完全一致で検索し、次にtunnel_domainサフィックスを削除して残りのサブドメインでマッチングします。マッチングはホスト名のみを考慮し、リクエストパスとクエリ文字列は変更されずにアップストリームMCPサーバーに転送されます。
各アップストリーム値は正確にscheme://host:portである必要があります。ポートは必須です。パスを含めると、設定読み込み時にinvalid upstream (must be scheme://host:port)として拒否されます。
Tunnels REST APIは/v1/tunnelsに配置されており、トンネルの作成、一覧表示、アーカイブ、CA証明書の登録、トンネルトークンの表示またはローテーションをサポートしています。すべてのエンドポイント、リクエストおよびレスポンススキーマ、例については、Tunnels APIリファレンスを参照してください。
/v1/organizations/tunnelsにある以前のAdmin APIサーフェス(ベータヘッダー
mcp-tunnels-2026-05-19、スコープorg:manage_tunnels)は、移行期間中も引き続き動作し、
非推奨の通知とともにAdmin APIリファレンスに
ドキュメント化されています。移行するには、パスを/v1/tunnelsに、ベータヘッダーを
mcp-tunnels-2026-06-22に、WIFトークンスコープを
workspace:manage_tunnelsに更新してください。
すべてのMCPトンネルエンドポイントには、Workload Identity Federationを通じて取得したworkspace:manage_tunnelsスコープを持つベアラートークンが必要です。Admin APIキーは受け付けられません。
すべてのリクエストに必要なヘッダー:
| ヘッダー | 値 |
|---|---|
Authorization | Bearer <token>(WIFで交換されたトークン) |
anthropic-version | 2023-06-01 |
anthropic-beta | mcp-tunnels-2026-06-22 |
セットアップコンポーネントは、準拠した証明書を自動的に生成します。これらの要件は、独自のPKIを通じて証明書を発行する場合にのみ適用されます。
POST /v1/tunnels/{tunnel_id}/certificatesでアップロードします。トンネルは一度に最大2つのアクティブなCA証明書を保持でき、これによりダウンタイムなしのローテーションが可能になります。
BasicConstraints拡張が存在し、CA:TRUEでクリティカルとしてマークされている。SubjectKeyIdentifier拡張が存在する。KeyUsageにkeyCertSignが含まれている。内部TLS中にプロキシによって提示されます。
AuthorityKeyIdentifier拡張が存在し、CAのSubjectKeyIdentifierと一致している。<route>.<tunnel-domain>と一致するDNS名が含まれている。ワイルドカード*.<tunnel-domain>はすべてのルートをカバーします。ExtendedKeyUsage拡張が存在する場合、serverAuthが含まれている。セットアップコンポーネントは、5年間の有効期間を持つECDSA P-256 CAと、ワイルドカードSANおよび90日間の有効期間を持つRSA 4096ビットサーバー証明書を生成します。
セットアップコンポーネントは、mcp-proxyイメージ内にsetupバイナリとして含まれています。docker compose run --rm setup <subcommand>で実行するか(Compose)、チャートのフックとCronJobに依存します(Helm)。
setup init既存のトンネルにアタッチし(トンネルIDが指定されていない場合は新規作成し)、CAとサーバー証明書を生成し、CAを登録し、トンネルトークンを取得し、すべての出力を出力先に書き込みます。
| フラグ | 説明 | デフォルト |
|---|---|---|
--api-url | Claude APIのベースURL。API_URLからも読み込まれます。 | 必須 |
--tunnel-id | アタッチするトンネルID(tnl_...)。TUNNEL_IDからも読み込まれます。省略された場合、新しいトンネルが作成されます。出力にすでに保存されているトンネルIDは再実行時に再利用されます。 | なし(トンネルを作成) |
--output | 出力先:dir:/pathまたはk8s-secret:NAME。Helmチャートはk8s-secret:<release>を渡します。 | k8s-secret:mcp-tunnel(Kubernetesポッド内で実行されている場合は自動検出、それ以外の場合は必須) |
--cert-duration | サーバー証明書の有効期間。 | 2160h(90日) |
--token-version | 変更検出用の文字列。新しい値は再実行時にトークンローテーションをトリガーします。HelmチャートとComposeの例はどちらも初期値として1を渡します。 | なし |
このコマンドはWorkload Identity Federationを通じて認証します。ANTHROPIC_FEDERATION_RULE_ID、ANTHROPIC_ORGANIZATION_ID、ANTHROPIC_WORKSPACE_ID(オプション)、およびANTHROPIC_IDENTITY_TOKEN_FILEまたはANTHROPIC_IDENTITY_TOKENのいずれか一方を読み込みます。これらの変数の現在のセマンティクスについては、WIFリファレンスを参照してください。セットアップコンポーネントはフェデレーションルールからサービスアカウントを導出するため、ANTHROPIC_SERVICE_ACCOUNT_IDを別途必要としません。
setup renew-cert保存されたCAによって署名された新しいサーバー証明書を発行します。API呼び出しは行いません。
| フラグ | 説明 | デフォルト |
|---|---|---|
--output | 出力先:dir:/pathまたはk8s-secret:NAME。Helmチャートはk8s-secret:<release>を渡します。 | k8s-secret:mcp-tunnel(Kubernetesポッド内で実行されている場合は自動検出、それ以外の場合は必須) |
--cert-duration | 新しい証明書の有効期間。 | 2160h(90日) |
--renew-before | 既存の証明書の残り有効期間がこの期間を超えている場合、更新をスキップします。 | 0(常に更新) |
--renew-before=720hを設定すると、有効期間が30日以上残っている場合にコマンドが何もしなくなるため、固定スケジュールで安全に実行できます。
Was this page helpful?