Los túneles MCP están en vista previa de investigación. Solicita acceso para probarlos.
Esta guía despliega el stack de túneles como contenedores reforzados en un único host. La misma configuración puede replicarse en varios hosts para lograr disponibilidad.
Necesitas:
tnl_...).fdrl_...) y el ID de tu organización.openssl (1.1.1 o posterior).api.anthropic.com (443 TCP) y el edge del túnel (7844 TCP y UDP). Consulta los requisitos de red completos.routes. Si aún no tienes uno, usa el servidor de ejemplo.Si no tienes un servidor MCP disponible para pruebas, usa este servidor mínimo:
mkdir -p mcp-tunnel
cat > mcp-tunnel/hello_server.py <<'EOF'
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("hello-server", host="0.0.0.0", port=9000)
@mcp.tool()
def hello(name: str = "world") -> str:
"""Say hello to someone."""
return f"Hello, {name}!"
if __name__ == "__main__":
mcp.run(transport="streamable-http")
EOFLos siguientes pasos de instalación hacen cd en mcp-tunnel/ e indican dónde agregar el servicio y la ruta correspondientes.
Esta guía proporciona un enfoque de referencia usando Docker Compose. Eres responsable de adaptarlo para cumplir con los requisitos de seguridad de tu organización.
El archivo compose lee TUNNEL_TOKEN del entorno del host sin valor predeterminado, por lo que el export debe repetirse en cada shell nueva y después de un reinicio.
Para un despliegue en múltiples VMs, copia el directorio mcp-tunnel/ a cada host, establece TUNNEL_TOKEN y ejecuta docker compose up -d. En el flujo programático, TUNNEL_TOKEN es $(sudo cat data/tunnel-token); en el flujo manual es el valor que copiaste de la Consola. El mismo token de túnel y los mismos certificados funcionan en todas las réplicas.
Verifica de extremo a extremo llamando a un servidor MCP upstream desde el lado de Anthropic: consulta Usar los servidores MCP tunelizados. Con el servidor MCP de ejemplo, la URL enrutada es https://echo.<your-tunnel-domain>/mcp. Si la verificación falla, consulta Solución de problemas.
Ejecuta los comandos de esta sección desde dentro del directorio de despliegue mcp-tunnel/.
Con acceso programático, incrementa --token-version en el comando del servicio setup, establece los identificadores de Workload Identity Federation, genera un nuevo JWT OIDC y vuelve a ejecutar el componente de configuración:
# Edita docker-compose.yaml: incrementa el entero en el argumento
# --token-version del servicio setup (por ejemplo, de --token-version=1 a
# --token-version=2). El binario setup se niega a rotar cuando el valor
# no ha cambiado.
export TUNNEL_ID=tnl_...
export ANTHROPIC_FEDERATION_RULE_ID=fdrl_...
export ANTHROPIC_ORGANIZATION_ID=00000000-0000-0000-0000-000000000000
# export ANTHROPIC_WORKSPACE_ID=wrkspc_... # si tu regla tiene alcance de workspace
# Vuelve a generar ANTHROPIC_IDENTITY_TOKEN según la guía del proveedor WIF para tu
# entorno (habrá expirado desde la instalación).
export ANTHROPIC_IDENTITY_TOKEN=...
docker compose run --rm setup
export TUNNEL_TOKEN=$(sudo cat data/tunnel-token)
docker compose up -d cloudflaredEl argumento --token-version se edita en docker-compose.yaml en lugar de pasarse en la línea de comandos para que el nuevo valor persista en futuras ejecuciones del componente de configuración. El componente de configuración se autentica con Workload Identity Federation; no hay ningún token de API que revocar.
Sin acceso programático, haz clic en Rotate token en la página de detalles del túnel en la Consola, luego actualiza la variable de entorno TUNNEL_TOKEN en cada host y reinicia cloudflared (docker compose up -d cloudflared).
Hacer clic en Rotate token invalida el token actual de inmediato. Entre ese momento y la actualización de TUNNEL_TOKEN en cada host y el reinicio de cloudflared, cualquier host cuyo cloudflared se reinicie (por fallo o reinicio del host) no podrá reconectarse. Actualiza cada host lo antes posible después de rotar.
Eres responsable de monitorear la expiración y renovar el certificado de servidor antes de que expire.
Con acceso programático:
docker compose run --rm setup renew-cert --output=dir:/dataLos argumentos de CLI reemplazan el command del servicio setup (los argumentos de init) pero mantienen su entrypoint, por lo que esto ejecuta /setup renew-cert --output=dir:/data.
Pasa --renew-before=720h para que el comando no haga nada cuando queden más de 30 días de validez. Esto hace que sea seguro ejecutarlo en un horario fijo.
Sin acceso programático, firma un nuevo certificado de servidor con tu CA existente (la CA registrada en la Consola no cambia) y reemplaza data/tls.crt. Establece TUNNEL_DOMAIN primero si estás ejecutando esto desde una shell nueva.
export TUNNEL_DOMAIN=YOUR_TUNNEL_DOMAIN_HERE
openssl req -new -key data/tls.key -out /tmp/server.csr \
-subj "/CN=${TUNNEL_DOMAIN}"
openssl x509 -req -in /tmp/server.csr \
-CA data/ca.crt -CAkey data/ca.key -CAcreateserial \
-out data/tls.crt -days 90 \
-extfile data/tls.extEn cualquiera de los dos flujos, el proxy sondea tls.cert_file y lo recarga automáticamente, por lo que no se requiere reinicio.
Conecta un servidor MCP upstream a un Agente Gestionado o a la API de Mensajes.
Guía de refuerzo, rotación de credenciales y respuesta ante brechas.
Diagnostica problemas de conectividad, TLS y enrutamiento.
Was this page helpful?