dsh-workspace-mcp
by momojie-s
DSH 插件:按 workspace(session cwd) 自动加载/卸载 MCP server——每个项目自己的 .dsh/mcp.servers.yml 只在自己的会话生效,MCP 工具注册到 agent scope,随 agent 生灭自动回收,不同项目的 MCP 互不干扰。
安装
dsh plugin --profile web add github:momojie-s/dsh-workspace-mcpGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
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_*前缀名)+ ymlenv覆盖层——需要父环境变量(如PYTHONPATH)的 server 直接工作;ymlenv是覆盖层不是完整环境 - 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 # 应看到对应层
编译 npm install && npm run build,profile 的 cordis.patch.yml 手动加行(name 用 file:/// 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
配置
插件级(patch config 字段):
| 字段 | 默认值 | 说明 |
|---|---|---|
configFile |
.dsh/mcp.servers.yml |
相对 workspace 根的配置文件路径 |
verbose |
false |
输出连接/注册详细日志,排查用 |
reconnect.enabled |
true |
断线/启动失败是否自动重连 |
reconnect.initialDelayMs |
500 |
首次重连延迟,此后指数翻倍 |
reconnect.maxDelayMs |
30000 |
退避封顶;连接存活超此值则重置尝试预算(偶发崩的能无限恢复,crash-loop 的被掐掉) |
reconnect.maxAttempts |
10 |
一次断线周期内最大连续失败次数,耗尽后卸载该 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;MCP 配置详解与踩坑见合集仓库 docs/usage/mcp.md。
原始 README: https://github.com/Momojie-S/dsh-workspace-mcp/blob/main/README.md ↗
同类插件
查看全部 →
dsh-anchored-standard
两阶段 DeepSeek Harness 预设:先 Minimal 对齐的 bootstrap,再切完整 Standard 工具(Project2 98/99)

PicGo-Core
极致的图片上传引擎,CLI 与 API 双支持

awesome-deepseek-harness
DeepSeek Harness(DSH)及其优秀社区插件的精选指南。

awesome-deepseek-harness
DeepSeek Harness (DSH)生态系统:来自dsh-external/hub和公共dsh-plugin主题的精选插件、工具和基础设施。

AI-Novel-Writer
本地优先 AI 小说创作工作台,提供 Windows/macOS 桌面版与 DeepSeek Harness 插件开发预览,支持角色、大纲、章节蓝图、审稿修稿和本地模型。

mcp-for-stata
MCP-for-Stata:把 Stata 集成进你的 agent