dsh-mcp-bridge:把 stdio MCP 服务注册为 DSH 原生工具

前言

在 DeepSeek Harness(DSH)里做智能体时,浏览器自动化往往要单独接一层:要么自己写工具封装,要么让模型通过通用接口间接调用 MCP。官方 Microsoft Playwright MCP 走的是 stdio 协议,和 DSH 的 ctx.tools.register 并不直接对齐。

imaused/dsh-mcp-bridge(npm 包名 dsh-mcp-host)做的是桥接:加载时拉起一个 stdio MCP 子进程,把 tools/list 里的工具转成 DSH 参数 schema 并注册,调用时再转发 tools/call。默认场景是附着到你已在用的 Edge/Chrome,用 Playwright MCP 驱动当前浏览器会话,而不是另起一个空白实例。

这是什么

维护者 imaused。仓库:https://github.com/imaused/dsh-mcp-bridge。社区目录(独立站点,与 DeepSeek / 幻方无官方从属):https://www.skillhub.cn/plugins/imaused/dsh-mcp-bridge。分类为工作流;Host-only 插件,无浏览器 UI,插件本体不引入 npm 依赖(运行时通过 npx 拉起 MCP 服务由你配置)。

一句话:把任意 stdio MCP 服务(文档以 Playwright MCP + 已有 Edge/Chrome 为例)暴露为 DSH 原生工具。

核心功能

加载后的流程可以概括为三步:

  1. 启动一次 MCP 服务进程(默认命令见下文配置表)。
  2. 执行 initialize 与 tools/list,将各工具的 JSON Schema 转为 DSH 参数 schema,通过 ctx.tools.register 注册。
  3. 智能体调用工具时,桥接层转发为 MCP 的 tools/call,结果以 JSON 返回;截图类结果写入临时文件并返回路径,而不是 base64。

工具名会加前缀:例如 MCP 侧的 browser_navigate 在默认前缀下变为 edge_navigate,前缀可通过环境变量修改。

默认只注册 Playwright MCP 提供的 12 个工具(完整集为 25 个,全部注册会占用每轮会话的 prompt 空间):

  • edge_navigate、edge_navigate_back、edge_snapshot、edge_click、edge_type、edge_fill_form、edge_press_key、edge_tabs、edge_take_screenshot、edge_evaluate、edge_wait_for、edge_close

需要全部工具时设置 MCP_BRIDGE_ALL=1;也可用 MCP_BRIDGE_TOOLS 做逗号分隔的白名单。

若 MCP 进程无法启动或初始化超时,插件不注册任何工具,在日志中说明原因,不会抛错拖垮 Host 启动。可在 DSH 控制台查看 stderr 尾部,并酌情调整 MCP_BRIDGE_INIT_TIMEOUT。

桥接层本身不发起外网请求;只 spawn 你配置的那一个子进程并在工具调用与其 stdin/stdout 之间转发。使用 --cdp-endpoint 附着已有浏览器时,MCP 能访问并操作你当前打开的标签页,等同于把浏览器会话交给智能体,使用前需自行评估。

安装与启用

资料中的安装示例面向 Windows DSH 目录,使用 rollback.cmd guard add 指向本地插件路径(请换成你机器上的实际路径):

cd E:\dsh
.\rollback.cmd guard add "file:C:\path\to\dsh-mcp-bridge"
.\rollback.cmd health

重启 DSH(或依赖热加载)后开新会话。插件要求 Node.js >=18;许可证 MIT(package.json 版本 0.1.0)。

配置

通过环境变量控制 MCP 命令与暴露的工具集:

环境变量 默认值 含义
MCP_BRIDGE_COMMAND npx --yes @playwright/mcp@latest --cdp-endpoint=msedge stdio MCP 服务启动命令(可换成任意 stdio MCP)
MCP_BRIDGE_PREFIX edge 注册到 DSH 的工具名前缀
MCP_BRIDGE_ALL 未设置 设为 1 时注册服务端提供的全部工具
MCP_BRIDGE_TOOLS 未设置 逗号分隔的 MCP 工具名白名单
MCP_BRIDGE_TIMEOUT 120000 单次工具调用超时(毫秒)
MCP_BRIDGE_INIT_TIMEOUT 30000 MCP 启动与初始化超时(毫秒)

附着已有 Edge / Chrome(默认 Playwright 场景)

要让 Playwright MCP 附着到你正在用的浏览器(保留登录态与扩展),而不是启动全新实例:

  1. 在浏览器打开 edge://inspect/#remote-debugging(Chrome 为 chrome://inspect/#remote-debugging)。
  2. 开启 Allow remote debugging for this browser instance。
  3. 保持默认 MCP_BRIDGE_COMMAND 中的 --cdp-endpoint=msedge(Chrome 可改为 =chrome)。

未开启远程调试时,Playwright 会启动新的浏览器进程。

典型用法

安装并配置环境变量后,在新 DSH 会话中智能体即可看到带前缀的工具(如 edge_navigate、edge_snapshot)。常见流程:

  1. edge_navigate 打开目标 URL。
  2. edge_snapshot 或 edge_take_screenshot 获取页面结构或截图路径。
  3. edge_click、edge_type、edge_fill_form 等与页面交互。
  4. 需要时 edge_tabs 管理标签,edge_close 结束浏览器相关操作。

具体参数以注册时的 schema 为准(来源于 MCP 工具的 JSON Schema)。

适用场景与注意

适合希望在 DSH 工作流里直接使用 Playwright MCP(或其他 stdio MCP),又不想手写一层工具注册与转发的开发者。默认 12 工具集在「日常网页操作」与「会话 prompt 占用」之间做了折中。

安装前建议阅读仓库源码与 LICENSE,确认行为符合预期。插件以当前 DSH 进程权限运行,子进程命令行与 CDP 附着范围由你配置;涉及账号、Cookie 与本地文件时按最小权限原则使用。

结尾

dsh-mcp-bridge 把 stdio MCP 与 DSH 工具面接在一起,默认面向「已有 Edge/Chrome + Playwright MCP」的浏览器自动化。目录页:https://www.skillhub.cn/plugins/imaused/dsh-mcp-bridge;源码与 README:https://github.com/imaused/dsh-mcp-bridge。

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

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

小夜