dsh-mcp-tunnel:为本地 MCP Server 拉起出站隧道

前言

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

注意事项

  1. 前置依赖:在开发形态下,项目依赖相邻的 dsh-src 目录(通过 link: 引用),需检出并执行 pnpm install && pnpm run build。
  2. Stdio 限制:插件未内置将 command 型 stdio MCP Server 转换为 HTTP 的桥接。如果 Server 是 stdio 类型,需先将其转为 HTTP 端点。
  3. 安全模型:
    • 默认提供的 Cloudflare Quick Tunnel 仅适合测试,生产流量必须自行添加鉴权层(如 Bearer Token)。
    • 所有敏感信息(如 Token)存储在部署目录的 .env 文件中(权限 0600),不进入 Docker Compose 文件。
  4. 容器依赖:容器间的健康检查依赖 service_started 事件,而非镜像自带的探针。

结语

dsh-mcp-tunnel 提供了一种低风险的本地服务暴露方案,通过 Docker 栈隔离了复杂的网络配置。配合 dsh-mcp-client,开发者可以方便地将本地工具能力开放给远程智能体使用。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜