MCP 隧道参考
代理配置字段、Tunnels REST API、证书要求和 setup CLI。
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 键必须是完整的精确主机名。 | 本指南中使用的子域名键形式为必填 |
tls.cert_file | 服务器 TLS 证书的路径。 | 必填 |
tls.key_file | 服务器 TLS 私钥的路径。 | 必填 |
routes | 子域名(或完整主机名)到上游 URL 的扁平映射(map[string]string,非列表)。首先尝试精确匹配,然后对 tunnel_domain 进行前缀匹配。匹配仅针对主机名;请求路径和查询字符串原样转发到上游。上游值必须恰好是 scheme://host:port(端口是必需的;包含路径会在配置加载时被拒绝,报错 invalid upstream (must be scheme://host:port))。 | 必填 |
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 | 同时信任系统 CA 包进行上游 TLS 验证。 | false |
对于 https:// 上游路由,请设置 upstream.tls.ca_file 或 upstream.tls.include_system_cas 之一;否则代理没有上游证书的信任锚。
Tunnels API
有关所有端点、请求和响应架构以及各语言示例,请参阅 MCP 隧道 Admin API 参考。
所有 MCP 隧道端点都需要通过 Workload Identity Federation 获取的具有 org:manage_tunnels 范围的 bearer 令牌。不接受 Admin API 密钥。
每个请求的必需头:
| 头 | 值 |
|---|---|
Authorization | Bearer <token>(WIF 交换的令牌) |
anthropic-version | 2023-06-01 |
anthropic-beta | mcp-tunnels-2026-05-19 |
证书要求
Setup 程序自动生成合规证书。这些要求仅在您通过自己的 PKI 签发证书时适用。
CA 证书
通过 POST /v1/organizations/tunnels/{tunnel_id}/certificates 上传。一个隧道最多可同时容纳两个活跃 CA 证书,以实现零停机轮换。
- PEM 编码,单个证书,最大 8 kB。
BasicConstraints扩展存在,CA:TRUE,标记为关键。SubjectKeyIdentifier扩展存在。KeyUsage包含keyCertSign。- 在有效期内。
- RSA 2048 位或更大,或 ECDSA P-256 或更大,使用 SHA-256 或更强的签名。
服务器证书
在内部 TLS 握手期间由代理呈现。
- 由已注册的 CA 直接签名(无中间证书)。
AuthorityKeyIdentifier扩展存在并与 CA 的SubjectKeyIdentifier匹配。- Subject Alternative Name 包含匹配
<route>.<tunnel-domain>的 DNS 名称。通配符*.<tunnel-domain>覆盖所有路由。 - 如果
ExtendedKeyUsage扩展存在,则包含serverAuth。 - 在有效期内。
- RSA 2048 位或更大,或 ECDSA P-256 或更大,使用 SHA-256 或更强的签名。
Setup 程序生成一个有效期五年的 ECDSA P-256 CA 和一个具有通配符 SAN 和 90 天有效期的 RSA 4096 位服务器证书。
Setup CLI
setup 二进制文件包含在 mcp-proxy 镜像中。使用 docker compose run --rm setup <subcommand>(Compose)或依赖 chart 的 hooks 和 CronJobs(Helm)运行。
setup init
附加到您在控制台中创建的隧道,生成 CA 和服务器证书,注册 CA,获取隧道令牌,并将所有输出写入目标位置。
| 标志 | 描述 | 默认值 |
|---|---|---|
--api-url | Claude API 基础 URL。也可从 API_URL 读取。 | 必填 |
--tunnel-id | 要附加的隧道 ID(tnl_...)。也可从 TUNNEL_ID 读取。 | 必填 |
--output | 输出目标:dir:/path 或 k8s-secret:NAME。 | k8s-secret:mcp-tunnel(在 Kubernetes Pod 中运行时自动检测;否则必填) |
--cert-duration | 服务器证书有效期。 | 2160h(90 天) |
--token-version | 变更检测字符串。新值会触发重新运行时的令牌轮换。 | 无 |
该命令通过 Workload Identity Federation 进行身份验证。它读取 ANTHROPIC_FEDERATION_RULE_ID、ANTHROPIC_ORGANIZATION_ID、ANTHROPIC_WORKSPACE_ID(可选),以及 ANTHROPIC_IDENTITY_TOKEN_FILE 或 ANTHROPIC_IDENTITY_TOKEN 之一。有关这些变量的当前语义,请参阅 WIF 参考;setup 程序从联邦规则派生服务账户,因此不需要单独的 ANTHROPIC_SERVICE_ACCOUNT_ID。
setup renew-cert
签发由存储的 CA 签名的新服务器证书。不进行 API 调用。
| 标志 | 描述 | 默认值 |
|---|---|---|
--output | 输出目标:dir:/path 或 k8s-secret:NAME。 | k8s-secret:mcp-tunnel(在 Kubernetes Pod 中运行时自动检测;否则必填) |
--cert-duration | 新证书有效期。 | 2160h(90 天) |
--renew-before | 如果现有证书剩余有效期超过此时间,则跳过续期。 | 0(始终续期) |
设置 --renew-before=720h 可使命令在剩余有效期超过 30 天时跳过续期,因此可以安全地按固定计划运行。