MCP-Tunnel befinden sich in der Research Preview. Zugang anfordern, um sie auszuprobieren.
Dieser Schnellstart führt dich von null bis zu dem Punkt, an dem Claude einen privaten MCP-Server über einen Tunnel aufruft. Er verwendet Docker Compose mit manueller Bereitstellung von Anmeldedaten, was der kürzeste Weg für lokale Tests ist. Für Produktionsbereitstellungen siehe Bereitstellung mit Helm oder Bereitstellung mit Docker Compose.
Einen Tunnel-Stack aus zwei Containern (dem Proxy und cloudflared) plus einen Beispiel-MCP-Server, der daneben läuft. Wenn alles läuft, ist der Beispiel-Server von Claude aus unter https://echo.<your-tunnel-domain>/mcp erreichbar, obwohl nichts auf einem öffentlichen Port lauscht.
openssl-Binärdatei muss sich in deinem PATH befinden).Erstelle einen Tunnel
Gehe in der Seitenleiste der Claude Console zu Manage > MCP tunnels und klicke auf New tunnel. Gib ihm einen Namen. Lass Set up programmatic access deaktiviert; dieser Schnellstart verwendet die manuelle Bereitstellung von Anmeldedaten.
Öffne den Tunnel, nachdem er erstellt wurde. Kopiere zwei Werte aus dem Abschnitt Connection:
abcd1234.tunnel.anthropic.com)Richte das Bereitstellungsverzeichnis ein
mkdir -p mcp-tunnel/{config,data}
cd mcp-tunnel
export TUNNEL_DOMAIN=YOUR_TUNNEL_DOMAIN_HERE # from step 1
export TUNNEL_TOKEN='eyJ...' # from step 1Generiere eine CA und ein Server-Zertifikat
Der Proxy terminiert inneres TLS mit einem Zertifikat, das von einer CA signiert ist, die du kontrollierst. Generiere beides:
openssl req -x509 -newkey rsa:2048 -nodes \
-keyout data/ca.key -out data/ca.crt \
-days 3650 -subj "/CN=mcp-tunnel-ca" \
-addext "basicConstraints=critical,CA:TRUE" \
-addext "keyUsage=critical,keyCertSign,cRLSign" \
-addext "subjectKeyIdentifier=hash"
cat > data/tls.ext <<EOF
subjectAltName = DNS:${TUNNEL_DOMAIN},DNS:*.${TUNNEL_DOMAIN}
authorityKeyIdentifier = keyid,issuer
extendedKeyUsage = serverAuth
EOF
openssl req -newkey rsa:2048 -nodes \
-keyout 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.ext
chmod 644 data/tls.keyZurück in der Console: Klicke auf der Tunnel-Detailseite auf Add certificate und lade data/ca.crt hoch (oder füge dessen Inhalt ein). Der Tunnel-Status wechselt zu Active.
Schreibe den Beispiel-MCP-Server
cat > 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")
EOFSchreibe die Proxy-Konfiguration und die Compose-Datei
cat > config/mcp-proxy.yaml <<EOF
listen_addr: ":8080"
tunnel_domain: ${TUNNEL_DOMAIN}
tls:
cert_file: /data/tls.crt
key_file: /data/tls.key
routes:
echo: http://hello-mcp:9000
EOF
cat > docker-compose.yaml <<'EOF'
services:
mcp-proxy:
image: us-docker.pkg.dev/anthropic-public-registry/images/mcp-proxy@sha256:9d4c80593b559fc3ca3814866418744fa94858b02a4d4a4cc52d423e732ccc81
volumes:
- ./config/mcp-proxy.yaml:/etc/mcp-gateway/config.yaml:ro
- ./data:/data:ro
restart: unless-stopped
cloudflared:
image: cloudflare/cloudflared@sha256:6b599ca3e974349ead3286d178da61d291961182ec3fe9c505e1dd02c8ac31b0
command: tunnel --no-autoupdate run --url http://localhost:8080
environment:
- TUNNEL_TOKEN
network_mode: "service:mcp-proxy"
restart: unless-stopped
hello-mcp:
image: python:3.13-slim
working_dir: /app
volumes:
- ./hello_server.py:/app/hello_server.py:ro
command: sh -c "pip install --quiet mcp && python hello_server.py"
restart: unless-stopped
EOFStarte es
docker compose up -d
docker compose logs mcp-proxy | grep "route configured"
docker compose logs cloudflared | grep "Registered tunnel connection"Du solltest eine route configured-Zeile für echo und vier Registered tunnel connection-Zeilen sehen. Die Container brauchen ein paar Sekunden zum Starten; führe die Log-Befehle erneut aus, wenn sie leer zurückkommen.
Rufe ihn von Claude aus auf
Gehe in der Console zu Managed Agents > Sessions und erstelle eine Session. Wähle in der Agentenauswahl Create new agent, gib dem Agenten einen Namen und behalte das vorausgefüllte Modell bei. Klicke auf + MCP Server, wähle deinen Tunnel aus, setze Subdomain auf echo und Path auf mcp. Frage dann:
Use the hello tool to greet tunnel.
Du solltest einen Tool-Aufruf gefolgt von seinem Ergebnis sehen.
Der Tunnel ist Ende-zu-Ende verifiziert. Um deinen eigenen MCP-Server einzusetzen, füge ihn zu docker-compose.yaml hinzu (oder führe ihn im selben Docker-Netzwerk aus), füge eine Route dafür in config/mcp-proxy.yaml hinzu und starte dann den Proxy neu (docker compose restart mcp-proxy).
Für Produktionsbereitstellungen:
Gehärtete Single-Host-Bereitstellung, mit oder ohne programmatischen Zugriff.
Kubernetes-Bereitstellung mit automatischer Verwaltung der Anmeldedaten.
Was this page helpful?