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

项目级 MCP 挂载 lihuabd/dsh-workspace-mcp

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

按会话所在项目自动挂载并断开 MCP 服务器

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/10/25·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 13 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件
查看扫描证据(共 3 处,展示前 3 条)
  • 读取本地文件
    lib/mount.js:36
    exists: (path) => existsSync(path),
  • 读取本地文件
    lib/mount.js:40
    const stats = statSync(path);
  • 读取本地文件
    lib/mount.js:46
    return readFileSync(path, 'utf8');
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-mcp-client@deepseek-ai/dsh-plugin-market-index@deepseek-ai/dsh-session@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

deepseek-harness支持加载项目级MCP的插件

README

由 DeepSeek 最新模型翻译生成
dsh-workspace-mcp 给 DeepSeek Harness 用的项目级 MCP 插件:仓库里放一个 .dsh/mcp.json(兼容 .mcp.json),在哪个项目目录开会话,就自动挂载哪个项目的 MCP 服务器。 Harness 内置的 MCP 配置是 profile 级的(整个 profile 共享)。本插件把 MCP 配置下沉到项目:每个会话创建时读取自己的会话工作目录,把项目声明的服务器挂到该会话,随会话销毁自动断开。桌面 GUI、dsh web、dsh headless 都生效。 npm 包:<https://www.npmjs.com/package/dsh-workspace-mcp> 安装 本包同时是一个 DSH bundle,安装后自动插入插件行(npm:<https://www.npmjs.com/package/dsh-workspace-mcp>): 从 npm dsh plugin --profile <profile> add dsh-workspace-mcp 直接从 GitHub dsh plugin --profile <profile> add github:lihuabd/dsh-workspace-mcp
展开完整文档(README 剩余 1 节)
dsh-workspace-mcp

给 DeepSeek Harness 用的项目级 MCP 插件:仓库里放一个 .dsh/mcp.json(兼容 .mcp.json),在哪个项目目录开会话,就自动挂载哪个项目的 MCP 服务器。

Harness 内置的 MCP 配置是 profile 级的(整个 profile 共享)。本插件把 MCP 配置下沉到项目:每个会话创建时读取自己的会话工作目录,把项目声明的服务器挂到该会话,随会话销毁自动断开。桌面 GUI、dsh web、dsh headless 都生效。

npm 包:<https://www.npmjs.com/package/dsh-workspace-mcp>

安装

本包同时是一个 DSH bundle,安装后自动插入插件行(npm:<https://www.npmjs.com/package/dsh-workspace-mcp>):

从 npm
dsh plugin --profile <profile> add dsh-workspace-mcp

直接从 GitHub
dsh plugin --profile <profile> add github:lihuabd/dsh-workspace-mcp

也可以使用桌面 GUI 的插件页或 Creator 模式里的 plugin_manager(action: install_bundle,target 指向包目录 / 包名)。

GUI 安装(插件页 → 添加插件 → 输入 dsh-workspace-mcp → 选择安装源 → 安装):

在 DSH 插件页安装 dsh-workspace-mcp

截图中的安装源已做打码处理,请按你的网络环境选择 npm 官方源或镜像。

安装后确认条目已进入配置树:

dsh --profile <profile> --dump-config | grep -A 4 workspace-mcp

也可以从插件市场里安装,见下节。

插件市场

1. 插件页 → 实验性插件 → 更多 → 打开自定义插件市场;
2. 发现 → 添加索引源,填入 <https://lihuabd.github.io/dsh-workspace-mcp/index.json>;
3. 搜索 dsh-workspace-mcp,确认来源后安装。

索引没有签名,市场里的标题、作者、来源都是发布方的声明。只添加信任的索引源,并在安装确认框里核对来源。

项目文件

默认优先查找 .dsh/mcp.json,不存在时回退到 .mcp.json(格式与 Claude Code 兼容):

{
"mcpServers": {
"cc-tools": {
"type": "http",
"url": "https://mcp.example.com/mcp",
"headers": { "Authorization": "Bearer ${MCP_TOKEN}" }
},
"local": {
"command": "node",
"args": ["./tools/mcp-server.js"],
"env": { "TOKEN": "${LOCAL_TOKEN}" }
}
}
}

| 字段 | 适用传输 | 含义 |
| type | 可选 | stdio / http / streamable-http;缺省时按 command/url 推断 |
| command / args / env / cwd | stdio | 可执行文件、参数、额外环境变量、工作目录(相对配置文件所在目录) |
| url / headers | http | Streamable HTTP 端点与请求头 |
| disabled | 全部 | true 时跳过该服务器 |
| toolCallTimeoutMs | 全部 | 覆盖该服务器的工具调用超时 |
| maxInstructionBytes | 全部 | 覆盖服务器指令的最大字节数(mcp-client 默认 32768) |
| reconnect | 全部 | 覆盖断线重连策略(enabled / initialDelayMs / maxDelayMs / maxAttempts) |

示例里的 ${MCP_TOKEN}、${LOCAL_TOKEN} 默认不会从进程环境展开;需要在插件配置里用 envAllowlist 放行,或用 env 显式提供(见下节)。examples/mcp.json 使用 MCP_ 前缀,复制为 .dsh/mcp.json(或 .mcp.json)后配置 envAllowlist: ['MCP_'] 即可直接工作。

- ${VAR} 与 ${VAR:-默认值} 会在 command、args、env、url、headers、cwd 中展开。变量来源是插件配置的 env,加上 envAllowlist 放行的进程环境;默认不继承任何进程环境变量。
- 不支持 SSE 传输(type: "sse"),会给出明确报错并跳过该服务器。
- 服务器名会规范成 [A-Za-z0-9_-]{1,32};有损规范化会追加 8 位哈希,避免重名折叠。工具名形如 mcp__<serverName>__<tool>。
- 文件允许带 UTF-8 BOM;单个服务器的字段写错只会跳过该服务器,不影响同一文件里的其他条目。
- 文件必须是常规文件且不超过 1 MB(拒绝 FIFO/设备/目录),避免同步读阻塞宿主事件循环。
- 同一目录内优先 .dsh/mcp.json;两者都存在时 .mcp.json 会被忽略并告警。开启 searchParents 时仍按目录由近到远查找,因此当前目录的 .mcp.json 会先于父目录的 .dsh/mcp.json 命中。
- 启动时会记录一条审计日志:服务器名 + 展开前的 command/args(或 url);env/headers 的值不记录。

插件配置

在 profile 的 cordis.patch.yml 里按 id 覆盖(patch 会整段替换 config,未写的字段回到 schema 默认值):

- id: workspace-mcp
name: dsh-workspace-mcp
config:
enabled: true
files: ['.dsh/mcp.json', '.mcp.json']
searchParents: false
maxParentDepth: 3
includeSubagents: false
failOnStartupError: false
startupTimeoutMs: 20000
toolCallTimeoutMs: 60000
env: {}
envAllowlist: []

| 字段 | 默认值 | 含义 |
| enabled | true | 总开关 |
| files | ['.dsh/mcp.json', '.mcp.json'] | 按顺序查找,取第一个存在的文件;同一目录两者都存在时优先 .dsh/mcp.json,并告警被忽略的 .mcp.json |
| searchParents | false | 当前目录没有时向父目录查找 |
| maxParentDepth | 3 | 向上查找的最大层数 |
| includeSubagents | false | 是否也为子 agent 挂载。默认为 false:子 agent 不会自动获得父会话的项目 MCP 工具,需要时显式打开(每台服务器会各自拉起进程) |
| failOnStartupError | false | 首次连接失败是否让会话创建失败;默认只记录告警并继续(服务器会在后台重连)。true 时会话创建失败,且该服务器不再重连 |
| startupTimeoutMs | 20000 | 每台服务器首次连接 + 工具同步的启动预算;超时只记录失败、连接在后台继续,不阻塞会话(failOnStartupError: true 时超时也算启动失败);0 表示不限制 |
| toolCallTimeoutMs | 60000 | 单个 MCP 工具调用/资源请求超时 |
| env | {} | 展开 ${VAR} 的额外变量;始终可见,优先级最高 |
| envAllowlist | [] | 允许从进程环境展开的变量名模式;空数组表示不继承。支持精确名、PREFIX_ 与 |

工作方式

- 会话创建时读取会话工作目录下的项目文件:优先 .dsh/mcp.json,没有时回退 .mcp.json。
- 每台服务器作为独立的 dsh-mcp-client 实例挂到该会话,工具随会话销毁自动移除。
- 挂载在首轮工作释放前完成(受 startupTimeoutMs 约束),所以第一次模型请求通常已经能看到工具。
- 同一会话的服务器并发启动,各自受 startupTimeoutMs 约束;单台失败不影响其他服务器。
- 默认只在顶层会话挂载;子 agent 不继承父会话的项目 MCP 工具,需要时打开 includeSubagents。

与全局 MCP 的关系

- 项目级 server 与 profile/$DSH_HOME 里配置的同名 server 可以共存:会话内看到的是项目那份。
- 同一个会话内重名会报错(与 dsh-mcp-client 的约定一致)。
- 每个会话各自持有连接:stdio 服务器会按会话启动进程。重服务器建议用 HTTP 传输或谨慎开启 includeSubagents。

已知限制

- 修改插件配置行(cordis.patch.yml)后,已存在的会话不会自动重新挂载,需要新开会话。
- 项目文件在会话创建时读取一次,运行中修改文件不会热更新。
- 会话没有 header.cwd 时(极少数无工作目录的会话)不挂载。
- 默认 failOnStartupError: false 时,「已挂载」只表示客户端实例已激活;首次连接失败会在后台重连,工具可能稍后才出现。打开 failOnStartupError 后,首次连接失败会让会话创建失败,且该服务器不再重连。
- startupTimeoutMs 超时只结束等待,服务器进程仍在后台尝试连接;它之后成功时工具会正常出现(failOnStartupError: true 时会话创建会失败)。
- 子 agent 不会自动获得父会话的项目 MCP 工具;includeSubagents: false(默认)意味着子 agent 没有这些工具,而不是复用父会话的。

安全

- 项目文件可以拉起任意 stdio 进程,等同于把代码执行权交给仓库作者。只在自己信任的仓库里使用;下面的环境变量策略是纵深防御,不能替代这一前提。
- 默认不从进程环境展开变量:${VAR} 只解析插件配置的 env 与 envAllowlist 命中的名字。需要 ${GITHUB_TOKEN} 这类写法时,显式配置 envAllowlist: ['GITHUB_TOKEN'](或 ['MCP_']);被拦下的变量会告警并提示用 env / envAllowlist 显式提供。
- 凭据一律用 ${VAR} 引用,不要把明文提交到仓库;审计日志记录的是展开前的 command/args(或 url),因此变量值不会进日志——但直接写在 args 里的明文仍会被记录。
- 每次启动会记录服务器名与启动方式,便于事后回答「这个仓库跑了什么」;env/headers 的值不记录。
- 用 searchParents 时注意上层目录可能属于其他项目;默认只在顶层会话挂载,减少服务器进程数量。
- 项目文件读取限制为常规文件且不超过 1 MB,避免 FIFO 或超大文件阻塞宿主。

兼容性

- DSH >=0.1.7-0 <0.3.0(peer 范围,安装时按运行时版本校验)。
- Node.js >=22。
- 依赖的 @deepseek-ai/dsh-* 均为可选 peer,由 Harness 安装目录提供,不重复安装。

开发

开发环境、测试、本地验收与发布流程见 DEVELOPMENT.md。

License

MIT
预览分享卡片长什么样 ↓lihuabd/dsh-workspace-mcp
分享 · DeepSeek Harness Hub
lihuabd/dsh-workspace-mcp

按会话所在项目自动挂载并断开 MCP 服务器

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部