🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

MCP 工具桥 ZeroStub/dsh-mcp-bridge

DeepSeek Harness
ZeroStub7 天前有提交已提供中文文档扫描:含敏感能力

把 MCP 服务器工具接入智能体直接调用

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ZeroStub/dsh-mcp-bridge
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · dev
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 12 处,展示前 11 条)
  • 读取本地文件
    index.js:61
    const raw = await readFile(expandPath(configPath), 'utf8');
  • 执行外部命令来自配置/变量
    lib/mcp-client.js:20
    this.child = spawn(command, args, {
  • 发起网络请求
    lib/mcp-client.js:116
    const response = await fetch(this.url, {
  • 发起网络请求
    lib/mcp-client.js:180
    const response = await fetch(this.url, {
  • 发起网络请求
    lib/mcp-client.js:257
    fetch(this.postUrl, {
  • 发起网络请求
    lib/mcp-client.js:271
    await fetch(this.postUrl, {
  • 发起网络请求
    lib/mcp-client.js:335
    await transport.request(
  • 发起网络请求
    lib/mcp-client.js:345
    const page = await transport.request('tools/list', cursor ? { cursor } : {}, timeoutMs);
  • 读取本地文件
    check-requires.js:16
    for (const entry of await readdir(dir, { withFileTypes: true })) {
  • 读取本地文件
    check-requires.js:30
    const text = await readFile(file, 'utf8');
  • 读取本地文件
    check-requires.js:40
    const info = await stat(candidate);
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的 MCP 桥接:把 MCP 服务器暴露为原生 harness 工具(stdio、streamable-http、旧版 SSE)

README

由 DeepSeek 最新模型翻译生成
dsh-mcp-bridge MCP 工具接入 DeepSeek Harness——不用改 harness 本身。 Русский · English 为什么需要 DeepSeek Harness 没有 MCP——发行包里的任何一个包都没有客户端、没有服务端、也没有传输层。智能体能做什么,全都在 Cordis 组合里声明:工具集由预设决定,想接别人的服务器,官方没给路子。 Codex 遇到这种情况就省事多了:它自己就是 MCP 客户端,OpenClaw 则给它起一个 loopback MCP 服务器。这里只能自己写客户端。 dsh-mcp-bridge 是个 cordis 插件:从 OpenClaw 配置里读 mcp.servers,连上每个启用的服务器,再通过 ctx.tools.register 注册它的工具。模型看到的就是 harness 的普通工具。 效果 命名跟 OpenClaw 一致:mcp__<服务器>__<工具>。
展开完整文档(README 剩余 1 节)
dsh-mcp-bridge

MCP 工具接入 DeepSeek Harness——不用改 harness 本身。

Русский · English

为什么需要

DeepSeek Harness 没有 MCP——发行包里的任何一个包都没有客户端、没有服务端、也没有传输层。智能体能做什么,全都在 Cordis 组合里声明:工具集由预设决定,想接别人的服务器,官方没给路子。

Codex 遇到这种情况就省事多了:它自己就是 MCP 客户端,OpenClaw 则给它起一个 loopback MCP 服务器。这里只能自己写客户端。

dsh-mcp-bridge 是个 cordis 插件:从 OpenClaw 配置里读 mcp.servers,连上每个启用的服务器,再通过 ctx.tools.register 注册它的工具。模型看到的就是 harness 的普通工具。

效果

命名跟 OpenClaw 一致:mcp__<服务器>__<工具>。

mcp__vault__list mcp__search__query_text mcp__shell__list_hosts
mcp__vault__read mcp__search__similar mcp__shell__read_file

同一套安装里实测三个服务器:16 个工具走 streamable HTTP,7 个走 stdio,18 个走 legacy SSE——一共 41 个。

安装

包必须放在 harness 配置档的 node_modules 里——否则 @deepseek-ai/ 这些 peer 依赖解析不到。软链接不行:Node 按包的真实路径解析依赖。

cp -r . ~/.openclaw/extensions/dsh/node_modules/dsh-mcp-bridge

把下面这行加进承载智能体工具的组合(config/agent-presets/<预设>/agent.cordis.yml):

- id: mcp-bridge
name: dsh-mcp-bridge
config:
configPath: ~/.openclaw/openclaw.json
toolPrefix: mcp__

注意:工具活在 agent-plane,不在 host-plane。 这行写进 config/cordis.patch.yml 能正常加载,但智能体一个工具都拿不到——host 补丁里没有任何 tool- 插件。

预设每个进程只挂载一次,所以这行要等下次启动 host 才生效,新开会话不算。

配置

| 字段 | 默认值 | 含义 |
| configPath | ~/.openclaw/openclaw.json | 从哪读 mcp.servers |
| servers | [] | 白名单;留空表示全部启用 |
| excludeServers | [] | 黑名单 |
| toolPrefix | mcp__ | 名称前缀 |
| timeoutMs | 60000 | 连接和 tools/list 的超时 |
| callTimeoutMs | 120000 | 单次调用的超时 |

筛选规则:服务器满足 enabled !== false、有 command 或 url、且没被排除,才会被选中。工具按服务器自己的 toolFilter.include / toolFilter.exclude 过滤。headers 和 env 里的 ${VAR} 引用从进程环境变量展开。

传输层

| 传输方式 | 工作方式 |
| stdio | 子进程,逐行 JSON-RPC |
| streamable-http | POST JSON-RPC;响应为 JSON 或 text/event-stream;会记住 mcp-session-id |
| sse(旧版) | GET 流声明 POST 端点;响应在同一流中返回 |

不启动 harness 也能验证

cd ~/.openclaw/extensions/dsh
node node_modules/dsh-mcp-bridge/test/probe.mjs # инструменты каждого сервера
node node_modules/dsh-mcp-bridge/test/register.mjs # прогон apply() на фейковом контексте

probe 会打印传输方式和工具。register 走完整条链路——读配置 → 连接 → defineTool → 注册——在启动宿主之前就能发现 schema 违规。两者都依赖 @deepseek-ai/* 包,所以必须在配置档内运行。

离线测试(不启动 harness):npm test。

踩坑

- harness 的 schema 比 JSON Schema 更严格。 defineTool 会拒绝 required: false(「must be true when present」),并且要求任何对象的 additionalProperties 必须显式为布尔值。转换器已经处理了这一点。
- 包的符号链接会破坏 peer 解析——需要在配置档的 node_modules 里放一份副本。
- 请求头里的 token 可能过期。 如果服务器返回 401,检查一下取值:Bearer ${TOKEN} 这种引用比字面量更可靠。
- 动态模式无法加载包。 cordis_define 只接受 JS 函数体:不能用 import、require、fetch、process,也不能联网(web.fetch 仅支持 GET)。传输层只能挪到 shell 辅助脚本里。

限制

- 不支持 OAuth 服务器:需要在请求头里放密钥,或者用本地进程。
- 每个进程只有一个实例;工具对 harness 全局可见,具体组成由智能体预设限定。
- 没有按智能体划分的作用域:mcp.servers 是共享的,而 tools.allow / tools.deny harness 并不执行——只能靠桥的 servers / excludeServers 和服务端的 toolFilter 来区分。
- 启动失败的服务器会被跳过并给出警告;宿主不会因此崩溃。

许可证

MIT——见 LICENSE。
预览分享卡片长什么样 ↓ZeroStub/dsh-mcp-bridge
分享 · DeepSeek Harness Hub
ZeroStub/dsh-mcp-bridge

把 MCP 服务器工具接入智能体直接调用

回到顶部