前言¶
DeepSeek Harness (DSH) 採用插件化架構,本地開發的 MCP Server 通常運行在開發者機器上,而遠程 Agent(如運行在雲端或其他網絡環境)無法直接訪問。直接暴露本地端口存在安全風險,且配置繁瑣。
dsh-mcp-tunnel 插件通過構建一個 Docker Compose 棧(包含 mcp-proxy 和 cloudflared),爲本地 MCP Server 建立一條出站隧道。它將本地服務映射爲公網可訪問的 HTTPS URL,並將配置片段輸出到 dsh-mcp-client,實現遠程 Agent 對本地工具的無縫調用。
插件定位¶
- 名稱: dsh-mcp-tunnel
- 類型: DSH 插件(聯網工具)
- 維護者: 988hj7tczd-oss
- 許可證: MIT
核心功能¶
該插件主要提供以下能力:
1. 棧生成:自動生成 Docker Compose 棧,包含 mcp-proxy(鑑權與轉發)和 cloudflared(出站隧道)。
2. 安全隧道:僅建立出站連接,公網無入站端口。宿主機僅綁定 127.0.0.1 迴環端口。
3. 證書管理:自動生成並管理自籤 CA 和服務端證書。
4. CLI 工具:提供 create、status、stop 三個命令管理隧道生命週期。
5. 配置輔助:生成待確認的 mcp-client 配置片段,不自動修改宿主 Profile。
安裝¶
作爲 Bundle 安裝到你的 DSH Profile:
cd <你的 DSH profile>
pnpm add ./dsh-mcp-tunnel
使用方法¶
通過 CLI 工具 mcp_tunnel_create 啓動隧道。
mcp_tunnel_create name=<name> serverDir=<dir> provider=cloudflare-quick
參數說明:
* name: 隧道名稱,同時作爲 Compose 項目名和 mcp-client 的 serverName。
* serverDir: MCP Server 目錄,優先讀取 .mcp.json 中的 url 字段作爲上游。
* provider: 隧道提供商,默認使用 cloudflare-quick(免賬號),生產環境需自建鑑權層。
* token: 訪問令牌,默認自動生成並寫入 .env(權限 0600)。
* deployDir: 部署目錄,默認 ~/.dsh/mcp-tunnels/<name>。
執行後會自動:
1. 檢查 Docker 環境。
2. 啓動容器棧。
3. 獲取並輸出公網 URL。
4. 生成配置片段文件。
mcp-client 配置¶
插件不會自動修改你的 Profile 配置。它會在部署目錄生成 mcp-client.pending.yml 文件,你需要手動將其內容添加到 cordis.patch.yml 中。
配置片段示例:
- insert:
- id: mcp-<serverName>
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: <name>
transport: streamable-http
url: <https://xxx.trycloudflare.com>
headers:
Authorization: 'Bearer <token>'
toolCallTimeoutMs: 60000
failOnStartupError: false
注意事項¶
- 前置依賴:在開發形態下,項目依賴相鄰的
dsh-src目錄(通過link:引用),需檢出並執行pnpm install && pnpm run build。 - Stdio 限制:插件未內置將
command型 stdio MCP Server 轉換爲 HTTP 的橋接。如果 Server 是 stdio 類型,需先將其轉爲 HTTP 端點。 - 安全模型:
- 默認提供的 Cloudflare Quick Tunnel 僅適合測試,生產流量必須自行添加鑑權層(如 Bearer Token)。
- 所有敏感信息(如 Token)存儲在部署目錄的
.env文件中(權限 0600),不進入 Docker Compose 文件。
- 容器依賴:容器間的健康檢查依賴
service_started事件,而非鏡像自帶的探針。
結語¶
dsh-mcp-tunnel 提供了一種低風險的本地服務暴露方案,通過 Docker 棧隔離了複雜的網絡配置。配合 dsh-mcp-client,開發者可以方便地將本地工具能力開放給遠程智能體使用。