跳至主要內容

MCP 隧道

這是什麼?

安全地將 Claude 連接到在您的私有網路中執行的 MCP 伺服器,無需開放入站連接埠或將服務暴露到網際網路。MCP 隧道目前處於私人測試版,並依賴 Cloudflare 的隧道服務。

運作方式

MCP 隧道在 Claude 和您的內部 MCP 伺服器之間建立連接,在傳輸過程中使用多層安全性進行加密。

當 Claude 需要存取您私有網路中的 MCP 伺服器時,請求會通過安全隧道傳輸。您需要在您的一側部署兩個元件:

  • cloudflared(Cloudflare 的隧道代理)

  • MCP Gateway(由 Anthropic 提供)

Cloudflared 向 Cloudflare 邊緣發起僅出站連接。您的防火牆中無需開放入站連接埠。MCP Gateway 終止內層 TLS,驗證上游 IP 以防止 SSRF,並根據子網域將每個請求路由到正確的 MCP 伺服器。

連接由三個獨立層保護:Anthropic 和 Cloudflare 之間的外層 mTLS(具有 IP 驗證)、從 Anthropic 後端到您的閘道的端對端加密內層 TLS(設計使 Cloudflare 無法存取 MCP 負載),以及每個 MCP 伺服器上應用層的 OAuth 驗證。

您部署的內容

cloudflared

Cloudflare 的隧道代理。發起僅出站連接 — 無需入站連接埠。

MCP Gateway

Anthropic 提供的元件,終止內層 TLS、驗證 IP 並將請求路由到您的 MCP 伺服器。

關鍵安全特性

  • 無需入站連接埠。cloudflared 僅發起出站連接 — 您的防火牆保持關閉。

  • 端對端加密。流量從 Anthropic 後端到您的閘道在傳輸過程中進行加密。Cloudflare 無法讀取 MCP 負載。

  • 深度防禦。多層驗證:mTLS、內層 TLS 和應用層的 OAuth。

  • SSRF 保護。閘道驗證上游 IP 以幫助防止請求偽造攻擊。

本指南透過 Helm(適用於 Kubernetes)和 Docker Compose 提供參考部署。您負責根據您組織的安全要求調整它們。

共同責任

保持此系統安全是 Anthropic 和您的組織之間的共同責任。

Anthropic 負責:

  • 確保只有 Anthropic 可以存取隧道

  • 在連接到您的閘道之前驗證您的 CA 憑證

  • 確保 Claude 僅向您組織擁有的隧道發送請求

您負責:

  • 遵循本文件中的指導和任何後續指導

  • 保護隧道令牌和 TLS 私密金鑰

  • 將您的 MCP 伺服器配置為使用 MCP 規範中所述的 OAuth 驗證

  • 限制對您的閘道主機和 MCP 伺服器的存取權限,僅限適當的人員

  • 如果您懷疑系統已被破壞,請通知 Anthropic(請參閱回應可疑的安全漏洞)

⚠️ 認證風險。如果攻擊者獲得您的隧道令牌和您的任一 TLS 私密金鑰,他們可能會冒充您的閘道並讀取 MCP 請求負載,包括 OAuth 令牌。根據您組織的安全要求保護這些認證 — 包括檔案權限、靜態加密和機密管理。


先決條件

  • 部署目標 — Kubernetes 叢集(適用於 Helm)或具有 Docker 和 Docker Compose 的虛擬機。

  • 隧道 API 的 Anthropic API 令牌 — 從 claude.ai → 組織設定 → 連接器 → 隧道 API 產生一個。設定使用此令牌來佈建隧道並註冊您的 CA 憑證。閘道在執行時不需要它。設定完成後撤銷它。

  • 網路存取 — 根據下表的出站連接。

  • MCP 伺服器 — 在您的私有網路中執行的一個或多個 MCP 伺服器,閘道可以存取。

網路要求

元件

目的地

用途

設定(一次性)

api.anthropic.com:443

(連接埠 443)

隧道佈建

cloudflared

Cloudflare 邊緣,連接埠 7844 TCP/UDP(198.41.192.0/19、2606:4700:a0::/44)

隧道連接

MCP 閘道

您的 MCP 伺服器

上游流量

請參閱 Cloudflare 的隧道防火牆文件以取得權威 IP 清單。Helm 使用者可以透過啟用圖表的 networkPolicy 值來強制執行此出口限制。


選擇您的部署方法

MCP 隧道可以透過 Helm (Kubernetes) 或 Docker Compose 部署。選擇適合您基礎設施的方法。

⎈ Helm / Kubernetes

建議大多數客戶使用。自動化隧道佈建和憑證更新。將認證儲存為 Secrets。

🐳 Docker Compose

適用於單主機或虛擬機部署。


Helm / Kubernetes 部署

1. 取得圖表值

下載預設值檔案。它包含解釋每個欄位的註解。

Shell

helm show values \
oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
--version 0.1.0 > values.yaml

2. 設定您的路由

編輯 values.yaml 並在 gateway.config.routes 下新增至少一個路由。每個路由將子網域前綴對應到上游 MCP 伺服器 URL。

3. 檢查呈現的資訊清單

使用預留位置權杖呈現圖表,以在安裝前檢查 Kubernetes 資源。圖表需要 api.token 才能呈現,但 helm template 不會呼叫 API。

Shell

helm template mcp-tunnel \
oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
--version 0.1.0 \
-n mcp-tunnel \
-f values.yaml \
--set api.token=placeholder > rendered.yaml

根據您組織的第三方資訊清單審查實踐檢查 rendered.yaml。

4. 安裝圖表

將您的 API 權杖儲存在環境變數中,然後安裝。建議使用專用命名空間以進行隔離。

Shell

# Paste your API token (input is hidden)
read -rs API_TOKEN && export API_TOKEN

helm install mcp-tunnel \
oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
--version 0.1.0 \
--namespace mcp-tunnel --create-namespace \
-f values.yaml \
--set api.token="$API_TOKEN"

⚠️ 重要:安裝完成後撤銷 API 權杖。透過 --set 傳遞權杖可將其保留在值檔案之外,但 Helm 仍會在發行歷史記錄 (sh.helm.release.v1.* Secrets) 中記錄它。Kubernetes Secrets 預設不會在靜止時加密,因此在您撤銷權杖之前,該權杖仍可從叢集中恢復。

5. 擷取您的隧道網域

設定工作會將隧道網域寫入 Secret。您需要此項來在 Claude 中設定 MCP 伺服器。

Shell

kubectl get secret mcp-tunnel -n mcp-tunnel \
-o jsonpath='{.data.tunnel-domain}' | base64 -d

隧道啟動並執行後,連接到 Claude。

選用:啟用 NetworkPolicy

在值檔案中設定 networkPolicy.enabled: true 以在網路層級限制隧道 Pod 的出口。使用 Pod 標籤選擇器或 CIDR 範圍為上游 MCP 伺服器設定 networkPolicy.mcpServers。該原則已包含 cloudflared 到達 Cloudflare 邊緣的出口規則。您的叢集 CNI 必須支援 NetworkPolicy—請參閱值檔案以取得範例。

選用:閘道設定

gateway.config.* 下的欄位會傳遞到閘道的設定檔。請參閱 附錄:閘道設定以取得完整清單。常見的調整包括 upstream.allowed_ips、log_level 和 upstream.tls (用於 https:// 路由)。若要掛載設定參考的其他檔案 (例如 upstream.tls.ca_file 的 CA 套件),請使用 gateway.extraVolumes 和 gateway.extraVolumeMounts。

升級

在 helm upgrade 上始終指定 --version。沒有它,Helm 會從登錄中提取最新的圖表版本,這可能不是您檢查的版本。

對於設定變更 (路由、副本、NetworkPolicy 等),不需要 API 權杖。除非您傳遞 api.token,否則升級時會跳過設定工作:

Shell

helm upgrade mcp-tunnel \
oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
--version 0.1.0 \
-n mcp-tunnel \
-f values.yaml

對於隧道權杖輪換,在值檔案中遞增 tunnel.tokenVersion,產生新的 API 權杖,然後升級:

Shell

# Paste your API token (input is hidden)
read -rs API_TOKEN && export API_TOKEN

helm upgrade mcp-tunnel \
oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
--version 0.1.0 \
-n mcp-tunnel \
-f values.yaml \
--set api.token="$API_TOKEN"

升級完成後撤銷 API 權杖。

維護完整的值檔案,而不是依賴 --reuse-values。Helm 深度合併對應欄位,因此使用 --reuse-values 刪除路由會無聲地失敗。

使用 helm template 搭配 kubectl 或 kustomize

如果您偏好自行呈現資訊清單並套用它們 (透過 kubectl apply 或 kustomize 覆蓋),請使用外部模式 (setup.enabled: false)。單獨佈建隧道 (請參閱 附錄:隧道 API) 並將認證作為 external.tunnelTokenSecretName 和 external.serverCertSecretName 參考的預先建立 Secrets 提供。如果您發行自己的憑證而不是使用設定二進位檔,請參閱 附錄:憑證要求。

Docker Compose 部署

1. 準備部署目錄

Shell

mkdir -p mcp-gateway/{config,tunnel-data}
cd mcp-gateway
sudo chown 65532:65532 tunnel-data

chown 讓容器 (以 UID 65532 執行) 寫入繫結掛載的目錄。

2. 建立 docker-compose.yaml

YAML

services:
# One-time provisioning. Run with: docker compose run --rm setup
setup:
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-gateway@sha256:62ddf0897778c80997ca789189a8a0bd63df241659d661ff9d5b0e06b5ee1dcd
entrypoint: ["/setup"]
command:
- init
- --api-url=https://api.anthropic.com
- --output=dir:/data
- --token-version=1
environment:
- API_TOKEN
volumes:
- ./tunnel-data:/data
user: "65532:65532"
read_only: true
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
profiles: ["setup"]

cloudflared:
# Verify digest at https://hub.docker.com/r/cloudflare/cloudflared/tags
image: cloudflare/cloudflared@sha256:6b599ca3e974349ead3286d178da61d291961182ec3fe9c505e1dd02c8ac31b0
command: tunnel --no-autoupdate --config /etc/cloudflared/config.yaml run
environment:
- TUNNEL_TOKEN
volumes:
- ./config/cloudflared-config.yaml:/etc/cloudflared/config.yaml:ro
restart: unless-stopped
user: "65532:65532"
read_only: true
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
stop_grace_period: 30s
logging:
options:
max-size: "10m"
max-file: "3"

mcp-gateway:
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-gateway@sha256:62ddf0897778c80997ca789189a8a0bd63df241659d661ff9d5b0e06b5ee1dcd
volumes:
- ./config/mcp-gateway.yaml:/etc/mcp-gateway/config.yaml:ro
- ./tunnel-data:/data:ro
restart: unless-stopped
user: "65532:65532"
read_only: true
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
# Should match shutdown_timeout in mcp-gateway config
stop_grace_period: 30s
logging:
options:
max-size: "10m"
max-file: "3"

安全措施:非 root 執行 (UID 65532)、唯讀檔案系統、無特權提升、所有 Linux 功能已捨棄、按 SHA256 摘要固定映像。

3. 佈建隧道

Shell

# Paste your API token (input is hidden)
read -rs API_TOKEN && export API_TOKEN

docker compose run --rm setup

設定命令透過隧道 API 建立隧道、產生 CA 和伺服器憑證、向 Anthropic 註冊 CA,並將所有輸出寫入 ./tunnel-data/。

擷取您的隧道網域以進行下一步:

Shell

sudo cat tunnel-data/tunnel-domain

⚠️ 重要:繼續進行前請撤銷 API 權杖。

4. 設定閘道

建立 config/mcp-gateway.yaml:

YAML

listen_addr: ":8080"
log_level: info
shutdown_timeout: 30s

# Your tunnel domain from Step 3
tunnel_domain: abcd1234.tunnel.anthropic.com

tls:
cert_file: /data/tls.crt
key_file: /data/tls.key

routes:
# Replace with your actual MCP servers.
# With tunnel_domain set, keys are subdomain prefixes.
docs: http://docs-mcp.internal:8080
search: http://search-mcp.internal:8080

upstream:
allowed_ips:
- 10.0.0.0/8

請參閱 附錄:閘道設定以了解所有可用欄位。

建立 config/cloudflared-config.yaml:

YAML

ingress:
- service: http://mcp-gateway:8080

5. 部署

Shell

export TUNNEL_TOKEN=$(sudo cat tunnel-data/tunnel-token)
docker compose up -d
docker compose logs -f

目錄結構:

mcp-gateway/
├── docker-compose.yaml
├── config/
│ ├── cloudflared-config.yaml
│ └── mcp-gateway.yaml
└── tunnel-data/
├── tunnel-id
├── tunnel-domain
├── tunnel-token
├── token-version
├── ca.crt
├── ca.key
├── tls.crt
└── tls.key

考慮將 CA 私密金鑰和隧道權杖移至安全儲存空間。

針對多 VM 部署:將 mcp-gateway/ 目錄複製到每個主機。相同的隧道權杖和憑證可在所有複本中使用。

隧道啟動並執行後,連線至 Claude。

憑證更新 (Compose)

伺服器憑證的有效期為 90 天。在過期前更新:

Shell

docker compose run --rm setup renew-cert --output=dir:/data

閘道每 30 秒輪詢一次憑證檔案,並在檔案變更時自動重新載入。請參閱 附錄:設定 CLI 參考以了解可安全在排程上執行此命令的旗標。

隧道權杖輪換 (Compose)

編輯 docker-compose.yaml 以遞增 --token-version,然後使用新的 API 權杖重新執行設定:

# Paste your API token (input is hidden)
read -rs API_TOKEN && export API_TOKEN

docker compose run --rm setup

export TUNNEL_TOKEN=$(sudo cat tunnel-data/tunnel-token)
docker compose up -d cloudflared

輪換完成後撤銷 API 權杖。


連線至 Claude

隧道執行後,在 Claude 中註冊您的 MCP 伺服器,使其可供使用者使用。

1. 新增 MCP 伺服器

組織管理員在 claude.ai 中瀏覽至 Organization Settings → Connectors → Add → Custom → Web。

使用隧道主機名稱輸入每個 MCP 伺服器。例如,docs.abcd1234.tunnel.anthropic.com。子網域前置詞與您閘道設定中的路由金鑰相符。

2. 使用者連線

個別使用者瀏覽至 Settings → Connectors,並為他們想要使用的每個 MCP 伺服器按一下 Connect。

稍後要新增更多伺服器?將新路由新增至您的設定、套用變更 (helm upgrade 或 docker compose restart mcp-gateway),並在 Claude 中註冊新主機名稱。不需要變更憑證或 cloudflared。萬用字元憑證涵蓋所有子網域。

安全最佳實務

  1. 在您的 MCP 伺服器上要求 OAuth。隧道和 TLS 層保護傳輸,但如果這些層遭到破壞,應用程式層的 OAuth 仍可防止未授權的工具叫用。根據 MCP 規格設定每個 MCP 伺服器以要求 OAuth 驗證。

  2. 為您的 claude.ai 組織啟用 SSO。隧道權杖是從 claude.ai 主控台產生的。強制執行 SSO 後,您身分識別提供者的工作階段控制項會管理管理員工作階段。

  3. 限制 allowed_ips。使用涵蓋您 MCP 伺服器的最小 CIDR 範圍。

  4. 監視記錄。在警告、錯誤和異常模式上設定警示。

  5. 輪換認證。定期輪換憑證,或在懷疑遭到破壞時立即輪換。

  6. 保持映像更新。及時套用閘道更新。按 SHA256 摘要釘選映像。

  7. 限制網路存取。閘道和 cloudflared 應僅具有必要的網路存取。

  8. 限制 MCP 伺服器範圍。MCP 伺服器應僅公開必要的功能。

  9. 保護靜止認證。對 tunnel-data/ 目錄 (Compose) 或認證 Secret (Helm) 套用適當的檔案權限、靜止加密和祕密管理。

回應疑似洩露

如果您懷疑您的隧道認證、TLS 金鑰或系統的其他方面遭到破壞:

  1. 立即停止部署 (helm uninstall 或 docker compose down --timeout 0)

  2. 從 Claude 移除 MCP 伺服器 (Organization Settings → Connectors)

  3. 透過 API 封存隧道 (請參閱拆卸,步驟 3)

  4. 聯絡 Anthropic 以便他們進行調查

  5. 輪換認證 — 重新佈建新隧道、輪換您 MCP 伺服器上的 OAuth 權杖

  6. 在恢復服務前檢查日誌


故障排除

IP 驗證失敗

閘道日誌中的"IP 驗證失敗"表示上游解析為 allowed_ips 之外的 IP。檢查已解析的 IP:

Shell

dig +short docs-mcp.internal

如果 IP 是合法的,請更新閘道配置中的 allowed_ips 以包含正確的 CIDR 範圍。

隧道未連接

檢查 cloudflared 日誌中的錯誤。常見原因:

  • 無效的隧道令牌

  • 防火牆阻止出站連接埠 7844 TCP/UDP 到 Cloudflare 邊緣

驗證到 Cloudflare IP 範圍的出站連接:198.41.192.0/19 和 2606:4700:a0::/44。

UDP 緩衝區大小警告

cloudflared 可能會記錄 failed to sufficiently increase receive buffer size。這是 QUIC 傳輸調整問題 — 請參閱 quic-go UDP 緩衝區文檔進行調整。

憑證錯誤

如果 TLS 握手失敗,請檢查:

  • 伺服器憑證未過期(90 天有效期)

  • 憑證的 SAN 符合 *.<tunnel-domain>

  • CA 憑證已通過 API 向 Anthropic 註冊

  • 對於 Compose,憑證檔案可由 UID 65532 讀取

通過隧道路由 OAuth(IP 允許清單後的驗證伺服器)

問題:您的驗證伺服器位於來源 IP 允許清單後。Claude 的後端需要連接它以進行 OAuth 發現、用戶端註冊和令牌交換,但您不想將 Anthropic 的出站 IP 範圍列入白名單。

解決方案:分割端點配置。通過隧道路由後端到後端的 OAuth 呼叫。將面向瀏覽器的 /authorize 端點保留在現有的允許清單主機名上。這之所以有效,是因為 Claude 從您的發現元資料中讀取 authorization_endpoint 並將使用者的瀏覽器重定向到那裡。它本身不需要連接該 URL。

步驟 1:為您的驗證伺服器新增閘道路由

YAML — mcp-gateway.yaml

routes:
mcp: http://your-mcp-server:8080
auth: http://your-auth-server:8080

步驟 2:提供分割端點發現元資料

您的驗證伺服器的 /.well-known/oauth-authorization-server 必須返回:

JSON

{
"issuer": "https://auth.<tunnel-id>.tunnel.anthropic.com",
"authorization_endpoint": "https://<your-allowlisted-host>/authorize",
"token_endpoint": "https://auth.<tunnel-id>.tunnel.anthropic.com/token",
"registration_endpoint": "https://auth.<tunnel-id>.tunnel.anthropic.com/register",
"code_challenge_methods_supported": ["S256"]
}

只有 authorization_endpoint 指向您現有的主機名。其他所有內容都使用隧道 URL。

步驟 3:將您的 MCP 伺服器指向隧道簽發者

您的 MCP 伺服器的 /.well-known/oauth-protected-resource:

JSON

{
"resource": "https://mcp.<tunnel-id>.tunnel.anthropic.com",
"authorization_servers": [
"https://auth.<tunnel-id>.tunnel.anthropic.com"
]
}


拆除

當不再需要隧道時如何停用隧道。

1. 取得隧道 ID

Helm

TUNNEL_ID=$(kubectl get secret mcp-tunnel -n mcp-tunnel \
-o jsonpath='{.data.tunnel-id}' | base64 -d)

Compose

TUNNEL_ID=$(sudo cat tunnel-data/tunnel-id)

2. 停止部署

Helm:helm uninstall mcp-tunnel -n mcp-tunnel(注意:憑證 Secret 由設定工作建立,而非 Helm,因此在卸載後仍然存在)
​Compose:docker compose down

3. 封存隧道

先產生新的 API 令牌,完成後撤銷它。

Shell

read -rs API_TOKEN && export API_TOKEN

curl -X POST "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/archive" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"

4. 移除儲存的憑證

Helm:kubectl delete secret mcp-tunnel -n mcp-tunnel
​Compose:sudo rm -rf tunnel-data

取得協助

聯絡您的 Anthropic 帳戶團隊以尋求協助。


附錄:閘道配置

閘道從 YAML 檔案讀取其配置。在 Docker Compose 中,您直接將此檔案寫入 config/mcp-gateway.yaml。在 Helm 中,在您的值檔案中的 gateway.config.* 下設定這些欄位 — 圖表為您管理 listen_addr、tls 和 tunnel_domain。

欄位

描述

預設值

listen_addr

要監聽的位址和連接埠

必需

log_level

日誌詳細程度:debug、info、warn、error

info

shutdown_timeout

正常關閉期間等待進行中請求的時間

30s

tunnel_domain

用於前綴路由解析的基礎網域

無

tls.cert_file

TLS 憑證的路徑

必需

tls.key_file

TLS 私密金鑰的路徑

必需

routes

主機名稱(或前綴)到上游 URL 的對應

必需

upstream.allowed_ips

閘道可連接的 CIDR 範圍

RFC 1918 私有範圍

upstream.disable_ip_validation

完全停用 IP 驗證

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 其中之一。


附錄:隧道 API

對於自訂佈建工作流程,您可以直接呼叫隧道 API。所有請求都需要這些標頭:

Shell

-H "Authorization: Bearer $API_TOKEN"
-H "anthropic-version: 2023-06-01"
-H "anthropic-beta: mcp-tunnels-2026-02-24"

建立隧道:

curl -X POST https://api.anthropic.com/v1/tunnels \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24" \
-H "Content-Type: application/json" \
-d '{}'

列出隧道:

curl https://api.anthropic.com/v1/tunnels \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"

註冊 CA 憑證:

curl -X POST "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/certificates" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24" \
-H "Content-Type: application/json" \
-d "{\"ca_certificate_pem\": $(jq -Rs . < ca.crt)}"

請參閱 附錄:憑證要求,了解 CA 和伺服器憑證必須包含的內容。

列出 CA 憑證:

curl "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/certificates" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"

撤銷 CA 憑證:

curl -X POST "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/certificates/${CERT_ID}/revoke" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"

顯示隧道權杖:

curl -X POST "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/reveal_token" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"

輪換隧道權杖:

curl -X POST "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/rotate_token" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"

封存隧道:

curl -X POST "https://api.anthropic.com/v1/tunnels/${TUNNEL_ID}/archive" \
-H "Authorization: Bearer $API_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-tunnels-2026-02-24"


附錄:憑證要求

如果您使用設定二進位檔(setup init / setup renew-cert),它會自動產生符合規範的憑證,您可以略過本節。如果您透過自己的 PKI 簽發憑證,這些要求適用。

CA 憑證 — 透過 POST /v1/tunnels/{id}/certificates 上傳。隧道最多可同時持有兩個有效的 CA 憑證,允許在不停機的情況下進行輪換。

  • PEM 編碼、單一憑證,最多 8 KB

  • BasicConstraints 擴展,包含 CA:TRUE,標記為關鍵

  • SubjectKeyIdentifier 擴展存在

  • KeyUsage 包含 keyCertSign

  • 在有效期內

  • RSA 2048 位或更大,或 ECDSA P-256 或更大;SHA-256 或更強簽名

伺服器憑證 — 由閘道在內部 TLS 握手期間呈現。未上傳至 Anthropic。

  • 由隧道上註冊的 CA 直接簽署

  • AuthorityKeyIdentifier 擴展存在,與 CA 的 SubjectKeyIdentifier 相符

  • SAN 包含與 <route>.<tunnel-domain> 相符的 DNS 名稱(萬用字元 *.<tunnel-domain> 涵蓋所有路由)

  • 如果存在 ExtendedKeyUsage 擴展,則包含 serverAuth

  • 在有效期內

  • RSA 2048 位或更大,或 ECDSA P-256 或更大;SHA-256 或更強簽名

參考:設定二進位檔案會產生 ECDSA P-256 CA(5 年有效期)和 RSA 4096 位伺服器憑證,具有萬用字元 SAN(90 天有效期)。


附錄:設定 CLI 參考

setup 二進位檔案透過 docker compose run --rm setup <subcommand>(Compose)或作為 Helm 掛鉤和 CronJob(Kubernetes)在閘道容器內執行。

setup init — 透過隧道 API 建立隧道,產生 CA 和伺服器憑證,註冊 CA,並寫入所有輸出。

旗標

說明

預設值

--api-url

Anthropic API 基礎 URL。也可從 API_URL 讀取。

必需

--api-token

具有隧道範圍的 API 權杖。也可從 API_TOKEN 讀取。

必需

--output

輸出目的地:dir:/path 或 k8s-secret:NAME

k8s-secret:mcp-gateway

--cert-duration

伺服器憑證有效期

2160h(90 天)

--token-version

變更偵測字串;新值會觸發隧道權杖輪換

無

setup renew-cert — 發行由儲存的 CA 簽署的新伺服器憑證。不需要 API 呼叫。

旗標

說明

預設值

--output

輸出目的地:dir:/path 或 k8s-secret:NAME

k8s-secret:mcp-gateway

--cert-duration

新憑證有效期

2160h(90 天)

--renew-before

如果現有憑證的到期時間超過此時間,則跳過

0(始終更新)

設定 --renew-before=720h 會在剩餘超過 30 天時使命令成為無操作,適合按排程執行。

是否回答了您的問題?