前言¶
在 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 原生工具。
核心功能¶
加载后的流程可以概括为三步:
- 启动一次 MCP 服务进程(默认命令见下文配置表)。
- 执行
initialize与tools/list,将各工具的 JSON Schema 转为 DSH 参数 schema,通过ctx.tools.register注册。 - 智能体调用工具时,桥接层转发为 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 附着到你正在用的浏览器(保留登录态与扩展),而不是启动全新实例:
- 在浏览器打开
edge://inspect/#remote-debugging(Chrome 为chrome://inspect/#remote-debugging)。 - 开启 Allow remote debugging for this browser instance。
- 保持默认
MCP_BRIDGE_COMMAND中的--cdp-endpoint=msedge(Chrome 可改为=chrome)。
未开启远程调试时,Playwright 会启动新的浏览器进程。
典型用法¶
安装并配置环境变量后,在新 DSH 会话中智能体即可看到带前缀的工具(如 edge_navigate、edge_snapshot)。常见流程:
edge_navigate打开目标 URL。edge_snapshot或edge_take_screenshot获取页面结构或截图路径。edge_click、edge_type、edge_fill_form等与页面交互。- 需要时
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。