DeepSeek Harness plugin

dsh-workspace-mcp

DSH 插件: 按 workspace(session cwd) 自动加载/卸载 MCP server, 工具注册到 agent scope

Jump to install

Source facts

Repository
Momojie-S/dsh-workspace-mcp
Latest update
Aug 16, 2026
Category
Tools & Capabilities
GitHub stars
4
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/Momojie-S/dsh-workspace-mcp
Plugin: dsh-workspace-mcp
Author: Momojie-S

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

@momojie-s/dsh-workspace-mcp

DSH 插件:按 workspace(session cwd) 自动加载/卸载 MCP server——每个项目自己的 .dsh/mcp.servers.yml 只在自己的会话生效,MCP 工具注册到 agent scope,随 agent 生灭自动回收,不同项目的 MCP 互不干扰。

环境要求

  • DSH >= 0.1.0-rc.6(已验证至 0.1.1-rc.2

用法

项目根放 .dsh/mcp.servers.yml

servers:
  my-server:
    transport: stdio
    command: npx
    args: ["-y", "some-mcp-server@latest"]
    env: {}
  remote:
    transport: streamable-http
    url: https://example.com/mcp
    headers:
      Authorization: "Bearer <token>"

字段与 @deepseek-ai/dsh-mcp-client 对齐(transport / command / args / env / url / headers / toolCallTimeoutMs / reconnect)。

  • agent 创建即连接注册(agent/created),首个模型请求就含这些工具;headless "create 后立刻发消息" 的竞速场景第 1 步可能没有,第 2 步必有
  • 断线自动重连(移植官方 dsh-mcp-client 的 supervisor):启动失败与中途断线均按指数退避重连并重新注册工具;重连期间旧工具保持注册(调用会失败),server 恢复后自动换新。stdio = 重新 spawn,http = 重新握手
  • 会话失效自愈(≥0.2.1,官方 client 尚无此能力):streamable-http server 重启/会话驱逐后的 Session not found 类错误自动判定断线并换代重连,无需手动"强制重连"
  • stdio 环境继承(≥0.3.0,与全局 MCP 一致):子进程拿到 scrubbed 父环境(剥 KEY|PASSWORD|SECRET|TOKEN 命中名与 DSH_* 前缀名)+ yml env 覆盖层——需要父环境变量(如 PYTHONPATH)的 server 直接工作;yml env 是覆盖层不是完整环境
  • server 声明受支持的 outputSchema 时进入 structuredContent 输出契约;非法工具列表 / 注册名冲突整代拒绝/回滚(≥0.3.0,官方对齐)
  • server 发 toolListChanged 通知时自动重同步工具列表
  • 改配置文件由 chokidar 监听,保存即重载;无该文件的目录不加载任何 MCP

安装

本插件是组合包dsh.bundle),用 dsh plugin 安装进 profile,自动追加配置层,无需手编 patch:

# GitHub(私仓需 git 凭据;pnpm ≥10 首次 add 会提示授权构建,按提示把包键
# 写进 ~/.dsh/profiles/web/pnpm-workspace.yaml 的 allowBuilds 后重新 add)
dsh plugin --profile web add github:Momojie-S/dsh-workspace-mcp

# 或 tarball(pnpm pack 产物,无授权要求)
dsh plugin --profile web add momojie-s-dsh-workspace-mcp-0.2.0.tgz

验证层就位后重启 DSH:

dsh web --dump-config | Select-String workspace-mcp   # 应看到对应层

<details><summary>开发模式:源码直连(改代码 → 重启验证)</summary>

编译 npm install && npm run build,profile 的 cordis.patch.yml 手动加行(namefile:/// URL 指向 lib/index.js):

- insert:
    - id: workspace-mcp
      name: file:///D:/code/workspace/deepseek-harness-101/plugins/dsh-workspace-mcp/lib/index.js
      config:
        configFile: '.dsh/mcp.servers.yml'
        verbose: true

</details>

配置

插件级(patch config 字段):

字段默认值说明
configFile.dsh/mcp.servers.yml相对 workspace 根的配置文件路径
verbosefalse输出连接/注册详细日志,排查用
reconnect.enabledtrue断线/启动失败是否自动重连
reconnect.initialDelayMs500首次重连延迟,此后指数翻倍
reconnect.maxDelayMs30000退避封顶;连接存活超此值则重置尝试预算(偶发崩的能无限恢复,crash-loop 的被掐掉)
reconnect.maxAttempts10一次断线周期内最大连续失败次数,耗尽后卸载该 server 全部工具;改配置文件或重启恢复

per-server 覆盖(.dsh/mcp.servers.yml,同名项优先于插件级):

servers:
  flaky:
    transport: stdio
    command: npx
    args: ["-y", "some-mcp"]
    reconnect:
      enabled: true
      initialDelayMs: 1000
      maxAttempts: 5

验证

项目根放 .dsh/mcp.servers.yml 配一个测试 server(如 MCP 官方 server-everything),在会话里让 agent 列工具:

mcp__<serverName>__<toolName>

工具出现即生效;切到无配置的目录,这些工具不再出现,即隔离生效。

断线重连的可执行验证(不经 DSH host):

npm test   # 杀 server 子进程 → 自动重连恢复;启动失败 → 退避重试 → 放弃卸载;Session not found → 换代重连;官方对齐五项(env 继承/输出契约等)

---

设计文档见 [docs/design/overview.md](docs/design/overview.md);MCP 配置详解与踩坑见合集仓库 docs/usage/mcp.md