Os túneis MCP estão em prévia de pesquisa. Solicite acesso para experimentá-los.
O proxy lê sua configuração de /etc/mcp-gateway/config.yaml (Compose) ou do ConfigMap renderizado (Helm, preenchido a partir de gateway.config.*).
| Campo | Descrição | Padrão |
|---|---|---|
listen_addr | Endereço e porta para escutar. | Obrigatório |
log_level | Nível de detalhamento do log: debug, info, warn ou error. | info |
shutdown_timeout | Tempo de espera para requisições em andamento durante o encerramento gradual. | 30s |
tunnel_domain | Domínio base atribuído ao túnel. Quando definido, a busca de rota remove esse sufixo dos hostnames recebidos para que as chaves de routes possam ser subdomínios simples (wiki). Quando vazio, as chaves de routes devem ser hostnames completos exatos. | Obrigatório quando as chaves de routes são subdomínios simples |
tls.cert_file | Caminho para o certificado TLS do servidor. | Obrigatório |
tls.key_file | Caminho para a chave privada TLS do servidor. | Obrigatório |
routes | Mapa de subdomínio ou hostname completo para URL upstream. Consulte Correspondência de rotas. | Obrigatório |
upstream.allowed_ips | Intervalos CIDR IPv4 ou endereços únicos aos quais o proxy tem permissão para se conectar. Mutuamente exclusivo com disable_ip_validation. | Intervalos privados RFC1918 |
upstream.disable_ip_validation | Desativa completamente a validação de IP upstream. Mutuamente exclusivo com allowed_ips. | false |
upstream.tls.ca_file | Pacote de CA para validar o TLS upstream. | Nenhum |
upstream.tls.include_system_cas | Também confia no pacote de CA do sistema para TLS upstream. | false |
Para rotas upstream https://, defina pelo menos um entre upstream.tls.ca_file ou upstream.tls.include_system_cas; caso contrário, o proxy não terá uma âncora de confiança para o certificado upstream.
routes é um mapa simples de strings (map[string]string), não uma lista. O proxy busca o hostname recebido primeiro por correspondência exata e, em seguida, removendo o sufixo tunnel_domain e correspondendo ao subdomínio restante. A correspondência considera apenas o hostname; o caminho da requisição e a query string são encaminhados ao servidor MCP upstream sem alterações.
Cada valor upstream deve ser exatamente scheme://host:port. A porta é obrigatória. Incluir um caminho é rejeitado no carregamento da configuração com invalid upstream (must be scheme://host:port).
Consulte a referência da Admin API de túneis MCP para todos os endpoints, esquemas de requisição e resposta, e exemplos por linguagem.
Todos os endpoints de túneis MCP exigem um bearer token com o escopo org:manage_tunnels obtido por meio de Workload Identity Federation. Chaves de Admin API não são aceitas.
Cabeçalhos obrigatórios em todas as requisições:
| Cabeçalho | Valor |
|---|---|
Authorization | Bearer <token> (o token obtido via troca WIF) |
anthropic-version | 2023-06-01 |
anthropic-beta | mcp-tunnels-2026-05-19 |
O componente de configuração gera certificados compatíveis automaticamente. Esses requisitos se aplicam apenas se você emitir certificados por meio de sua própria PKI.
Faça upload com POST /v1/organizations/tunnels/{tunnel_id}/certificates. Um túnel pode manter até dois certificados de CA ativos por vez, o que permite rotação sem tempo de inatividade.
BasicConstraints presente com CA:TRUE, marcada como crítica.SubjectKeyIdentifier presente.KeyUsage inclui keyCertSign.Apresentado pelo proxy durante o TLS interno.
AuthorityKeyIdentifier presente e correspondente ao SubjectKeyIdentifier da CA.<route>.<tunnel-domain>. Um curinga *.<tunnel-domain> cobre todas as rotas.ExtendedKeyUsage estiver presente, ela inclui serverAuth.O componente de configuração gera uma CA ECDSA P-256 com validade de cinco anos e um certificado de servidor RSA de 4096 bits com um SAN curinga e validade de 90 dias.
O componente de configuração é distribuído dentro da imagem mcp-proxy como o binário setup. Execute-o com docker compose run --rm setup <subcommand> (Compose) ou utilize os hooks e CronJobs do chart (Helm).
setup initAnexa ao túnel que você criou no Console, gera uma CA e um certificado de servidor, registra a CA, recupera o token do túnel e grava todas as saídas no destino.
| Flag | Descrição | Padrão |
|---|---|---|
--api-url | URL base da API do Claude. Também lida de API_URL. | Obrigatório |
--tunnel-id | ID do túnel ao qual anexar (tnl_...). Também lido de TUNNEL_ID. | Obrigatório |
--output | Destino de saída: dir:/path ou k8s-secret:NAME. O chart Helm passa k8s-secret:<release>. | k8s-secret:mcp-tunnel (detectado automaticamente ao executar em um pod Kubernetes; obrigatório caso contrário) |
--cert-duration | Período de validade do certificado do servidor. | 2160h (90 dias) |
--token-version | String de detecção de mudança. Um novo valor aciona a rotação do token na reexecução. Tanto o chart Helm quanto o exemplo do Compose passam 1 como valor inicial. | Nenhum |
O comando autentica por meio de Workload Identity Federation. Ele lê ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, ANTHROPIC_WORKSPACE_ID (opcional) e exatamente um entre ANTHROPIC_IDENTITY_TOKEN_FILE ou ANTHROPIC_IDENTITY_TOKEN. Consulte a referência de WIF para a semântica atual dessas variáveis; o componente de configuração deriva a conta de serviço a partir da regra de federação, portanto não requer ANTHROPIC_SERVICE_ACCOUNT_ID separadamente.
setup renew-certEmite um novo certificado de servidor assinado pela CA armazenada. Não faz chamadas de API.
| Flag | Descrição | Padrão |
|---|---|---|
--output | Destino de saída: dir:/path ou k8s-secret:NAME. O chart Helm passa k8s-secret:<release>. | k8s-secret:mcp-tunnel (detectado automaticamente ao executar em um pod Kubernetes; obrigatório caso contrário) |
--cert-duration | Período de validade do novo certificado. | 2160h (90 dias) |
--renew-before | Pula a renovação se o certificado existente tiver mais do que essa duração restante. | 0 (sempre renova) |
Definir --renew-before=720h torna o comando uma operação sem efeito quando restam mais de 30 dias de validade, portanto é seguro executá-lo em um agendamento fixo.
Was this page helpful?