Claude Platform Docs
MessagesMCP 通道

MCP tunnels 快速入門

使用本機 Docker Compose 部署將 Claude 連接到私有 MCP 伺服器。

本快速入門將帶您從建立通道開始,一路到 Claude 透過該通道呼叫私有 MCP 伺服器。它使用 Docker Compose 搭配手動憑證佈建,這是本機測試最快速的途徑。如需正式環境部署,請參閱使用 Helm 部署或使用 Docker Compose 部署。

您將建置的內容

一個由兩個容器組成的 tunnel stack(proxy 與 cloudflared),以及一個與其並行執行的範例 MCP 伺服器。當一切都在執行時,即使沒有任何服務在公開連接埠上監聽,Claude 仍可透過 https://echo.<your-tunnel-domain>/mcp 存取該範例伺服器。

您需要的項目

  1. 建立 tunnel

    在 Claude Console 中,前往 MCP tunnels 頁面(platform.claude.com/settings/workspaces/default/mcp-tunnels)。每個 tunnel 都隸屬於一個工作區。請在側邊欄的工作區選擇器中選取您要的工作區。點擊 New tunnel 並為其命名。請保持 Set up programmatic access 為關閉狀態;本快速入門使用手動憑證佈建。

    建立完成後,開啟該 tunnel。從 Connection 區段複製兩個值:

    • Domain(格式類似 abcd1234.tunnel.anthropic.com)
    • Token(點擊眼睛圖示,然後複製)
  2. 設定部署目錄

    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
  3. 產生 CA 與伺服器憑證

    proxy 會使用由您所控管的 CA 簽署的憑證來終止 inner TLS。請同時產生兩者:

    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,在 tunnel 詳細資料頁面上點擊 Add certificate,並上傳 data/ca.crt(或貼上其內容)。tunnel 名稱旁的 Needs certificate 標記便會消失。

  4. 撰寫範例 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
  5. 撰寫 proxy 設定與 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:d243d30642d39857a0579e465cb3b9bf3ae7c1141e83143bb6856777a31467a5
        volumes:
          - ./config/mcp-proxy.yaml:/etc/mcp-gateway/config.yaml:ro
          - ./data:/data:ro
        restart: unless-stopped
    
      cloudflared:
        image: cloudflare/cloudflared@sha256:0e56c13c7058fcef9c4f0e7d83372f82330548dbf8f8b366f3d8b506526d93b2
        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
  6. 啟動

    docker compose up -d
    docker compose logs mcp-proxy | grep "route configured"
    docker compose logs cloudflared | grep "Registered tunnel connection"

    您應該會看到一行針對 echo 的 route configured,以及四行 Registered tunnel connection。容器需要幾秒鐘才能啟動;如果日誌指令沒有傳回任何內容,請重新執行。

  7. 從 Claude 呼叫

    在 Console 中,前往 Sessions 頁面(platform.claude.com/sessions)並建立一個工作階段。在代理程式選擇器中,選取 Create new agent,為代理程式命名,並保留預先填入的模型。點選 + MCP Server,選取您的通道,並將 Subdomain 設為 echo、將 Path 設為 mcp。然後詢問:

    Use the hello tool to greet tunnel.

    您應該會看到一個工具呼叫,接著是其結果。

後續步驟

tunnel 已完成端對端驗證。若要換成您自己的 MCP 伺服器,請將其加入 docker-compose.yaml(或在同一個 Docker 網路上執行),在 config/mcp-proxy.yaml 中為其新增路由,然後重新啟動 proxy(docker compose restart mcp-proxy)。

若要進行正式環境部署:

Was this page helpful?