Was this page helpful?
I tunnel MCP sono in anteprima di ricerca. Richiedi l'accesso per provarli.
Questa guida distribuisce lo stack del tunnel come container rafforzati su un singolo host. La stessa configurazione può essere replicata su più host per garantire la disponibilità.
Hai bisogno di:
tnl_...).fdrl_...) e l'ID della tua organizzazione.openssl (1.1.1 o versione successiva).api.anthropic.com (443 TCP) e il tunnel edge (7844 TCP e UDP). Consulta i requisiti di rete completi.routes. Se non ne hai ancora uno, usa il server di esempio.Se non hai un server MCP disponibile per i test, usa questo server minimale:
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")
EOFI seguenti passaggi di installazione eseguono cd in mcp-tunnel/ e indicano dove aggiungere il servizio e la route corrispondenti.
Questa guida fornisce un approccio di riferimento utilizzando Docker Compose. Sei responsabile di adattarlo per soddisfare i requisiti di sicurezza della tua organizzazione.
Il file compose legge TUNNEL_TOKEN dall'ambiente dell'host senza alcun valore predefinito, quindi l'export deve essere ripetuto in ogni nuova shell e dopo un riavvio.
Per un deployment multi-VM, copia la directory mcp-tunnel/ su ciascun host, imposta TUNNEL_TOKEN ed esegui docker compose up -d. Nel flusso programmatico TUNNEL_TOKEN è $(sudo cat data/tunnel-token); nel flusso manuale è il valore che hai copiato dalla Console. Lo stesso token del tunnel e gli stessi certificati funzionano su tutte le repliche.
Verifica end-to-end chiamando un server MCP upstream dal lato di Anthropic: consulta Usare i server MCP tramite tunnel. Con il server MCP di esempio, l'URL instradato è https://echo.<your-tunnel-domain>/mcp. Se la verifica fallisce, consulta Risoluzione dei problemi.
Esegui i comandi in questa sezione dall'interno della directory di deployment mcp-tunnel/.
Con l'accesso programmatico, incrementa --token-version nel comando del servizio setup, imposta gli identificatori di Workload Identity Federation, genera un nuovo JWT OIDC e riesegui il componente di setup:
# Modifica docker-compose.yaml: incrementa l'intero nell'argomento
# --token-version del servizio setup (ad esempio, da --token-version=1 a
# --token-version=2). Il binario di setup rifiuta la rotazione se il valore
# non è cambiato.
export TUNNEL_ID=tnl_...
export ANTHROPIC_FEDERATION_RULE_ID=fdrl_...
export ANTHROPIC_ORGANIZATION_ID=00000000-0000-0000-0000-000000000000
# export ANTHROPIC_WORKSPACE_ID=wrkspc_... # se la regola è limitata al workspace
# Rigenera ANTHROPIC_IDENTITY_TOKEN seguendo la guida del provider WIF per il tuo
# ambiente (sarà scaduto dall'installazione).
export ANTHROPIC_IDENTITY_TOKEN=...
docker compose run --rm setup
export TUNNEL_TOKEN=$(sudo cat data/tunnel-token)
docker compose up -d cloudflaredL'argomento --token-version viene modificato in docker-compose.yaml anziché passato sulla riga di comando in modo che il nuovo valore persista per le esecuzioni future del componente di setup. Il componente di setup si autentica con Workload Identity Federation; non c'è alcun token API da revocare.
Senza accesso programmatico, fai clic su Rotate token nella pagina di dettaglio del tunnel nella Console, quindi aggiorna la variabile d'ambiente TUNNEL_TOKEN su ciascun host e riavvia cloudflared (docker compose up -d cloudflared).
Fare clic su Rotate token invalida immediatamente il token corrente. Tra quel momento e l'aggiornamento di TUNNEL_TOKEN su ogni host con il riavvio di cloudflared, qualsiasi host il cui cloudflared si riavvia (crash, riavvio dell'host) non può riconnettersi. Aggiorna ciascun host tempestivamente dopo la rotazione.
Sei responsabile del monitoraggio della scadenza e del rinnovo del certificato server prima che scada.
Con l'accesso programmatico:
docker compose run --rm setup renew-cert --output=dir:/dataGli argomenti CLI sostituiscono il command del servizio setup (gli argomenti init) ma mantengono il suo entrypoint, quindi questo esegue /setup renew-cert --output=dir:/data.
Passa --renew-before=720h per rendere il comando un no-op quando rimangono più di 30 giorni di validità. Questo lo rende sicuro da eseguire con una pianificazione fissa.
Senza accesso programmatico, firma un nuovo certificato server con la tua CA esistente (la CA registrata nella Console non cambia) e sostituisci data/tls.crt. Imposta prima TUNNEL_DOMAIN se stai eseguendo questo da una nuova shell.
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.extIn entrambi i flussi il proxy esegue il polling di tls.cert_file e lo ricarica automaticamente, quindi non è necessario alcun riavvio.
Diagnostica problemi di connettività, TLS e routing.