MCPトンネルはリサーチプレビュー段階です。お試しいただくにはアクセスをリクエストしてください。
このガイドでは、トンネルスタックを単一ホスト上に強化されたコンテナとしてデプロイします。同じ構成を複数のホストに複製することで可用性を確保できます。
以下が必要です。
tnl_...)を記録してください。fdrl_...)と組織IDを記録してください。openssl(1.1.1以降)も必要です。api.anthropic.com(443 TCP)およびトンネルエッジ(7844 TCPおよびUDP)へのアウトバウンドネットワーク接続。完全なネットワーク要件を参照してください。routesで設定するアドレスでホストから到達可能な、稼働中の1つ以上のMCPサーバー。まだ用意していない場合は、サンプルサーバーを使用してください。テスト用のMCPサーバーがない場合は、この最小限のサーバーを使用してください。
mkdir -p mcp-tunnel
cat > mcp-tunnel/hello_server.py <<'EOF'
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("hello-server", host="0.0.0.0", port=9000)
@mcp.tool()
def hello(name: str = "world") -> str:
"""Say hello to someone."""
return f"Hello, {name}!"
if __name__ == "__main__":
mcp.run(transport="streamable-http")
EOF以下のインストール手順ではmcp-tunnel/にcdし、対応するサービスとルートを追加する場所を示します。
このガイドでは、Docker Composeを使用した1つの参考アプローチを提供します。組織のセキュリティ要件を満たすように適応させる責任はお客様にあります。
composeファイルはデフォルト値なしでホスト環境からTUNNEL_TOKENを読み取るため、新しいシェルごと、および再起動後にエクスポートを繰り返す必要があります。
マルチVMデプロイメントの場合は、mcp-tunnel/ディレクトリを各ホストにコピーし、TUNNEL_TOKENを設定して、docker compose up -dを実行します。プログラムによるフローではTUNNEL_TOKENは$(sudo cat data/tunnel-token)です。手動フローではConsoleからコピーした値です。同じトンネルトークンと証明書がすべてのレプリカで機能します。
Anthropic側からアップストリームMCPサーバーを呼び出すことで、エンドツーエンドで検証します。トンネル経由のMCPサーバーを使用するを参照してください。サンプルMCPサーバーを使用している場合、ルーティングされたURLはhttps://echo.<your-tunnel-domain>/mcpです。検証が失敗した場合は、トラブルシューティングを参照してください。
このセクションのコマンドは、mcp-tunnel/デプロイメントディレクトリ内から実行してください。
プログラムによるアクセスの場合、setupサービスのコマンドで--token-versionをインクリメントし、Workload Identity Federationの識別子を設定し、新しいOIDC JWTを発行して、セットアップコンポーネントを再実行します。
# docker-compose.yaml を編集:setup サービスの `--token-version` 引数の整数を
# インクリメントします(例:`--token-version=1` を `--token-version=2` に)。
# 値が変更されていない場合、setup バイナリはローテーションを拒否します。
#
export TUNNEL_ID=tnl_...
export ANTHROPIC_FEDERATION_RULE_ID=fdrl_...
export ANTHROPIC_ORGANIZATION_ID=00000000-0000-0000-0000-000000000000
# export ANTHROPIC_WORKSPACE_ID=wrkspc_... # ルールがワークスペーススコープの場合
# お使いの環境の WIF プロバイダーガイドに従って ANTHROPIC_IDENTITY_TOKEN を
# 再発行してください(インストール後に有効期限が切れているはずです)。
export ANTHROPIC_IDENTITY_TOKEN=...
docker compose run --rm setup
export TUNNEL_TOKEN=$(sudo cat data/tunnel-token)
docker compose up -d cloudflared--token-version引数は、コマンドラインで渡すのではなくdocker-compose.yamlで編集します。これにより、セットアップコンポーネントの今後の実行でも新しい値が保持されます。セットアップコンポーネントはWorkload Identity Federationで認証するため、失効させるAPIトークンはありません。
プログラムによるアクセスがない場合は、Consoleのトンネル詳細ページでRotate tokenをクリックし、各ホストでTUNNEL_TOKEN環境変数を更新してcloudflaredを再起動します(docker compose up -d cloudflared)。
Rotate tokenをクリックすると、現在のトークンは即座に無効になります。その瞬間から、すべてのホストでTUNNEL_TOKENを更新してcloudflaredを再起動するまでの間、cloudflaredが再起動したホスト(クラッシュ、ホスト再起動)は再接続できません。ローテーション後は速やかに各ホストを更新してください。
有効期限を監視し、期限切れになる前にサーバー証明書を更新する責任はお客様にあります。
プログラムによるアクセスの場合:
docker compose run --rm setup renew-cert --output=dir:/dataCLI引数はsetupサービスのcommand(init引数)を置き換えますが、entrypointは保持されるため、これは/setup renew-cert --output=dir:/dataを実行します。
--renew-before=720hを渡すと、有効期間が30日以上残っている場合にコマンドが何もしない(no-op)ようになります。これにより、固定スケジュールで安全に実行できます。
プログラムによるアクセスがない場合は、既存のCAで新しいサーバー証明書に署名し(Consoleに登録されたCAは変更されません)、data/tls.crtを置き換えます。新しいシェルから実行する場合は、最初にTUNNEL_DOMAINを設定してください。
export TUNNEL_DOMAIN=YOUR_TUNNEL_DOMAIN_HERE
openssl req -new -key data/tls.key -out /tmp/server.csr \
-subj "/CN=${TUNNEL_DOMAIN}"
openssl x509 -req -in /tmp/server.csr \
-CA data/ca.crt -CAkey data/ca.key -CAcreateserial \
-out data/tls.crt -days 90 \
-extfile data/tls.extどちらのフローでも、プロキシはtls.cert_fileをポーリングして自動的に再読み込みするため、再起動は不要です。
アップストリームMCPサーバーをManaged AgentまたはMessages APIにアタッチします。
強化ガイダンス、認証情報のローテーション、および侵害対応。
接続、TLS、およびルーティングの問題を診断します。
Was this page helpful?