MCP 通道
安全地將 Claude 連接到在您私有網路中執行的 MCP 伺服器,無需開放入站連接埠或將服務暴露於公共網際網路。
MCP 通道(MCP tunnels)讓您將 Claude 連接到在您私有網路內執行的「Model Context Protocol」,即 MCP 伺服器。流量透過僅限出站的連線傳輸,因此您無需開放入站防火牆連接埠、將服務暴露於公共網際網路,或在您的來源端將 Anthropic 的 IP 範圍加入允許清單。
關於零資料保留(Zero Data Retention)與 HIPAA BAA 資格,請參閱 API 與資料保留。
運作方式
通道堆疊(tunnel stack)由在您網路內執行的兩個元件組成:
- cloudflared: Cloudflare 的開源通道連接器。它向通道邊緣(tunnel edge)發起僅限出站的連線,並將加密流量從 Anthropic 傳送到您的代理。
- 代理(Proxy): Anthropic 的路由元件。它終止內層 TLS(inner TLS)、驗證上游 IP 是否落在允許的範圍內,並根據主機名稱將每個請求路由到正確的上游 MCP 伺服器(upstream MCP server)。
您公開的每個 MCP 伺服器都會在您的通道網域下取得一個主機名稱(例如 docs.<your-tunnel-domain>)。您可以在 Claude Console 中將這些主機名稱附加到 Managed Agent 工作階段,或透過 MCP 連接器將它們傳遞給 Messages API。
先決條件
在部署之前,請確保您具備:
- 部署目標:Kubernetes 叢集,或安裝了 Docker 與 Docker Compose 的 VM。
- 一個通道。在 Claude Console 中建立(請參閱建立通道)或透過 API 建立;Helm chart 的設定掛鉤(setup hook)也可以在安裝期間為您建立一個。
- 讓您的堆疊向 Tunnels API 進行驗證的方式。請擇一:
- 程式化存取(Programmatic access)(建議)。 在建立通道時設定 Workload Identity Federation(工作負載身分聯合)。您的堆疊會從您的身分提供者鑄造短期 API 權杖、擷取通道權杖,並自動產生與註冊 CA 憑證。需要管理聯合規則的權限、已註冊的 OIDC 簽發者,以及具有
workspace:manage_tunnels範圍的聯合規則。 - 手動(Manual)。 自行提供靜態憑證:來自 Console 的通道權杖,以及由您在該處註冊的 CA 所簽署的伺服器憑證。請參閱取得連線詳細資訊與新增 CA 憑證。
- 程式化存取(Programmatic access)(建議)。 在建立通道時設定 Workload Identity Federation(工作負載身分聯合)。您的堆疊會從您的身分提供者鑄造短期 API 權杖、擷取通道權杖,並自動產生與註冊 CA 憑證。需要管理聯合規則的權限、已註冊的 OIDC 簽發者,以及具有
- 一個或多個在您私有網路中執行的 MCP 伺服器。範例請參閱遠端 MCP 伺服器。
- 網路需求中所列的出站連線能力。
網路需求
| 元件 | 目的地 | 連接埠/協定 | 使用時機 |
|---|---|---|---|
| 設定元件 | api.anthropic.com | 443 TCP | 佈建與權杖輪替 |
| cloudflared | 通道邊緣(198.41.192.0/19、2606:4700:a0::/44) | 7844 TCP 與 UDP | 執行期間 |
| 代理 | 您的上游 MCP 伺服器 | 依設定 | 執行期間 |
安全模型
安全層
三個獨立的層保護每個請求:
| 層 | 防護對象 |
|---|---|
| Anthropic 與傳輸供應商之間的外層 mTLS,搭配 IP 驗證 | 未經授權的用戶端連線到通道 |
| 從 Anthropic 後端到您代理的內層 TLS | 傳輸供應商或任何網路中介者檢視承載內容 |
| 每個 MCP 伺服器上的 OAuth | 已驗證的通道流量未經授權使用 MCP 工具 |
通道傳輸在 Cloudflare 的網路上執行。由於代理使用只有您持有的憑證來終止內層 TLS,Cloudflare 無法讀取請求或回應的承載內容。Anthropic 在 CA 憑證註冊之前不會連線到通道,因此承載內容在穿越 Cloudflare 網路時始終是加密的。Cloudflare 確實會收到連線中繼資料;請參閱傳輸供應商可觀察到的內容。
共同責任模型
| Anthropic 負責 | 您的組織負責 |
|---|---|
| 通道存取控制 | 所有經由您通道傳輸的內容與流量,以及遵守適用的第三方可接受使用政策(包括 Cloudflare 的政策) |
| 在連線到您的代理之前驗證您的 CA 憑證 | 遵循這些頁面上的部署指引 |
| 確保 Claude 僅向您組織擁有的通道傳送請求 | 保護通道權杖與 TLS 私密金鑰 |
| 管理伺服器憑證並在到期前更新 | |
| 在每個 MCP 伺服器上設定 OAuth | |
| 限制代理與 MCP 伺服器的網路存取 | |
| 若您懷疑發生入侵,通知 Anthropic |
傳輸供應商可觀察到的內容
Cloudflare 提供出站傳輸。它無法讀取 MCP 請求或回應的承載內容,但確實會收到以下連線中繼資料:
- 執行 cloudflared 的主機的出口 IP 位址
- cloudflared 主機指紋
- 連線時間與位元組流量
- 指派給您通道的
*.tunnel.anthropic.com子網域
Anthropic 與 Cloudflare 的協議限制了 Cloudflare 對此遙測資料的使用。Cloudflare 在此研究預覽中擔任次級處理者(subprocessor)。
部署通道
如果您是 MCP 通道的新手,請從快速入門開始,先在本機取得一個可運作的通道,再設定正式環境部署。
取得可運作通道的最短路徑:搭配範例 MCP 伺服器的 Docker Compose。
使用 Anthropic Helm chart 安裝到 Kubernetes 叢集。
使用 Docker Compose 安裝到 VM。
如何選擇:
- 部署目標
- 部署到 Kubernetes 時使用 Helm。
- 單一主機或本機測試時使用 Docker Compose。
- 設定時的驗證方式
- 當您擁有 OIDC 身分提供者(例如 Kubernetes 叢集、雲端 IAM 或 SPIFFE)時,使用程式化存取(透過 Workload Identity Federation)。
- 當您沒有,或正在測試時,使用手動憑證。
使用通道化的 MCP 伺服器
一旦您的通道處於啟用狀態(它具有有效的 CA 憑證且您的通道堆疊已連線),即可從 Claude Managed Agents 與 Messages API 存取上游 MCP 伺服器。
在這兩種情況下,通道會將加密流量傳送到您的 MCP 伺服器,但不會向其進行驗證。如果上游 MCP 伺服器需要自己的驗證(OAuth、bearer 權杖),請以與任何其他 MCP 伺服器相同的方式提供;這與通道無關。
Managed Agents(Console)
- 在 Managed Agents > Sessions 中,建立一個工作階段並選擇 Create new agent,以便您可以編輯 MCP 伺服器清單。
- 點擊 + MCP Server 並開啟下拉選單。工作階段所屬工作區中至少具有一個有效憑證的通道會顯示在清單頂部,位於公共連接器目錄之上。
- 選擇通道,並提供您的代理路由到特定 MCP 伺服器的 Subdomain,以及上游 MCP 伺服器預期的 Path。Resolves to 行會顯示確切的 URL。
Messages API
在 mcp_servers 陣列中傳遞上游 MCP 伺服器的 URL,方式與任何其他遠端 MCP 伺服器相同。請求主體與 anthropic-beta 標頭遵循標準的 MCP 連接器格式;只有 url 是通道專屬的。以下範例使用 MCP 連接器的 mcp-client beta 標頭,它與 Tunnels API 所使用的 mcp-tunnels beta 是分開的。請在建立通道的工作區中發出請求,方法是使用該工作區的 API 金鑰,或者如果您的金鑰可存取多個工作區,則將 anthropic-workspace-id 標頭設定為該工作區。
URL 的主機為 <subdomain>.<your-tunnel-domain>。路徑取決於您的上游 MCP 伺服器,而非通道:FastMCP 的 streamable-http 傳輸在 /mcp 提供服務,其他伺服器可能使用 / 或自訂路徑(請查閱該伺服器的文件)。代理會原封不動地轉送路徑。
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-5",
max_tokens=1000,
messages=[{"role": "user", "content": "Use the hello tool to greet tunnel."}],
mcp_servers=[
{
"type": "url",
"url": "https://echo.YOUR_TUNNEL_DOMAIN_HERE/mcp",
"name": "echo",
}
],
tools=[{"type": "mcp_toolset", "mcp_server_name": "echo"}],
betas=["mcp-client-2025-11-20"],
)
print(response)關於向上游 MCP 伺服器進行驗證(authorization_token)以及其他 mcp_servers 選項,請參閱 MCP 連接器。
後續步驟
Was this page helpful?