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 | 同时信任系统 CA 证书包以验证上游 TLS。 | 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)。
请参阅 MCP 隧道管理 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 |
设置组件会自动生成符合要求的证书。以下要求仅适用于您通过自己的 PKI 签发证书的情况。
通过 POST /v1/organizations/tunnels/{tunnel_id}/certificates 上传。一个隧道最多可同时持有两个有效的 CA 证书,从而实现零停机轮换。
BasicConstraints 扩展,其中 CA:TRUE,并标记为关键(critical)。SubjectKeyIdentifier 扩展。KeyUsage 包含 keyCertSign。由代理在内层 TLS 期间出示。
AuthorityKeyIdentifier 扩展,且与 CA 的 SubjectKeyIdentifier 匹配。<route>.<tunnel-domain> 匹配的 DNS 名称。通配符 *.<tunnel-domain> 可覆盖所有路由。ExtendedKeyUsage 扩展,则其中包含 serverAuth。设置组件会生成一个有效期为五年的 ECDSA P-256 CA,以及一个带有通配符 SAN、有效期为 90 天的 RSA 4096 位服务器证书。
设置组件以 setup 二进制文件的形式包含在 mcp-proxy 镜像中。使用 docker compose run --rm setup <subcommand>(Compose)运行它,或依赖 chart 的钩子和 CronJob(Helm)。
setup init附加到您在 Console 中创建的隧道,生成 CA 和服务器证书,注册 CA,获取隧道令牌,并将所有输出写入目标位置。
| 标志 | 描述 | 默认值 |
|---|---|---|
--api-url | Claude API 基础 URL。也可从 API_URL 读取。 | 必填 |
--tunnel-id | 要附加到的隧道 ID(tnl_...)。也可从 TUNNEL_ID 读取。 | 必填 |
--output | 输出目标:dir:/path 或 k8s-secret:NAME。Helm chart 传递 k8s-secret:<release>。 | k8s-secret:mcp-tunnel(在 Kubernetes Pod 中运行时自动检测;否则必填) |
--cert-duration | 服务器证书有效期。 | (90 天) |
该命令通过 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 chart 传递 k8s-secret:<release>。 | k8s-secret:mcp-tunnel(在 Kubernetes Pod 中运行时自动检测;否则必填) |
--cert-duration | 新证书的有效期。 | 2160h(90 天) |
--renew-before | 如果现有证书的剩余有效期超过此时长,则跳过续期。 | 0(始终续期) |
设置 --renew-before=720h 会使该命令在剩余有效期超过 30 天时成为空操作(no-op),因此可以安全地按固定计划运行。
Was this page helpful?
2160h--token-version | 变更检测字符串。新值会在重新运行时触发令牌轮换。Helm chart 和 Compose 示例均传递 1 作为初始值。 | 无 |