Claude Platform Docs
MessagesMCP 通道

MCP 通道快速入門

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

本快速入門將帶您從零開始,直到 Claude 能透過「tunnel」(通道)呼叫私有 MCP 伺服器。它使用 Docker Compose 搭配手動憑證佈建(credential provisioning),這是進行本機測試的最短路徑。若要進行正式環境部署,請參閱使用 Helm 部署使用 Docker Compose 部署

您將建構的內容

一個由兩個容器組成的通道堆疊proxy(代理)與 cloudflared),外加一個與其並行運作的範例 MCP 伺服器。當一切都啟動後,即使沒有任何服務在公開連接埠上監聽,Claude 仍可透過 https://echo.<your-tunnel-domain>/mcp 存取該範例伺服器。

您需要準備的項目

  1. 建立通道

    在 Claude Console 側邊欄中,前往 Manage > MCP tunnels 並點擊 New tunnel。為其命名。將 Set up programmatic access 保持關閉;本快速入門使用手動憑證佈建。

    建立完成後,開啟該通道。從 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(內層 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,在通道詳細資訊頁面上,點擊 Add certificate 並上傳 data/ca.crt(或貼上其內容)。通道狀態會切換為 Active

  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:efb27b299d627e4134815663cb8896641eeaee025d734c0f695582b4df38f013
        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
  6. 啟動

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

    您應該會看到一行針對 echoroute configured,以及四行 Registered tunnel connection。容器需要幾秒鐘才能啟動;如果日誌指令回傳空白,請重新執行。

  7. 從 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 中為其新增一條路由,然後重新啟動 proxy(docker compose restart mcp-proxy)。

若要進行正式環境部署:

經強化的單一主機部署,可選擇是否啟用程式化存取。

具備自動憑證管理的 Kubernetes 部署。

Was this page helpful?