Туннели MCP находятся в стадии исследовательской предварительной версии. Запросите доступ, чтобы попробовать их.
Этот быстрый старт проведет вас от нуля до вызова Claude частного сервера MCP через туннель. Он использует Docker Compose с ручным предоставлением учетных данных, что является кратчайшим путем для локального тестирования. Для производственных развертываний см. Развертывание с Helm или Развертывание с Docker Compose.
Двухконтейнерный стек туннеля (прокси и cloudflared) плюс пример сервера MCP, работающий рядом с ним. Когда все запущено, пример сервера доступен из Claude по адресу https://echo.<your-tunnel-domain>/mcp, даже если ничего не прослушивает публичный порт.
openssl должен быть в вашем PATH).Создайте туннель
В боковой панели Claude Console перейдите в Manage > MCP tunnels и нажмите New tunnel. Дайте ему имя. Оставьте Set up programmatic access выключенным; этот быстрый старт использует ручное предоставление учетных данных.
После создания откройте туннель. Скопируйте два значения из раздела Connection:
abcd1234.tunnel.anthropic.com)Настройте каталог развертывания
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 1Сгенерируйте CA и сертификат сервера
Прокси завершает внутренний TLS, используя сертификат, подписанный CA, который вы контролируете. Сгенерируйте оба:
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.keyВернувшись в Console, на странице сведений о туннеле нажмите Add certificate и загрузите data/ca.crt (или вставьте его содержимое). Статус туннеля переключится на Active.
Напишите пример сервера MCP
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")
EOFНапишите конфигурацию прокси и файл compose
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
EOFЗапустите
docker compose up -d
docker compose logs mcp-proxy | grep "route configured"
docker compose logs cloudflared | grep "Registered tunnel connection"Вы должны увидеть одну строку route configured для echo и четыре строки Registered tunnel connection. Контейнерам требуется несколько секунд для запуска; повторно выполните команды просмотра логов, если они возвращаются пустыми.
Вызовите его из Claude
В Console перейдите в Managed Agents > Sessions и создайте сессию. В выборе агента выберите Create new agent, дайте агенту имя и оставьте предварительно заполненную модель. Нажмите + MCP Server, выберите ваш туннель, установите Subdomain в echo и Path в mcp. Затем спросите:
Use the hello tool to greet tunnel.
Вы должны увидеть вызов инструмента, за которым следует его результат.
Туннель проверен от начала до конца. Чтобы заменить его на ваш собственный сервер MCP, добавьте его в docker-compose.yaml (или запустите его в той же сети Docker), добавьте маршрут для него в config/mcp-proxy.yaml, затем перезапустите прокси (docker compose restart mcp-proxy).
Для производственных развертываний:
Усиленное развертывание на одном хосте, с программным доступом или без него.
Развертывание в Kubernetes с автоматическим управлением учетными данными.
Was this page helpful?