
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
dsh-mcp-manager-ui
Advanced tools
Responsive MCP management UI for DeepSeek Harness Web — floating panel, JSON import, and profile-backed Host Remote management.
中文 | English
DeepSeek Harness Web 的 MCP 管理面板:右下角悬浮按钮或侧栏「MCP」入口,点开就能看连接状态、加服务器、改配置——面板浮在会话之上,不打断正在进行的对话。
这条线已并入
dsh-toolbox-ui(MCP + 技能)。 它把本项目的 MCP 面板与技能面(含技能市场)合在同一个面板里,是超集。dsh-mcp-manager-ui自 1.5.4 起只做一件事——把已有安装送过去:dsh plugin update # 拿到 1.5.5 # 重启宿主后面板顶部出现「迁移」按钮:点一下即装 dsh-toolbox-ui 并卸掉本包新用户直接装后继包:
dsh plugin --profile web add dsh-toolbox-ui@^1.6.1。

.dsh/mcp.json)


.dsh/mcp.json,只该项目会话可见;项目里还能「屏蔽」某个全局 MCPconfig.toml)、OpenCode(含 .jsonc)、pi、Claude Desktop、Cursor、Windsurf、VS Code、Gemini CLI、Roo Code 与跨工具的共享配置,逐个列出,点一条即导入;也能粘贴 Claude/Cursor/Cline/Roo 的 mcpServers 或 VS Code 的 servers JSON。写入前预览,支持「合并(同名更新)」与「替换」.dsh/mcp.json 同格式,可直接放进另一个工作区)。详见工作区之间复制与导出DSH_MCP_MANAGER_DISABLE_UPDATE_CHECK 关闭)。点了「升级」才动,不会自动升级;升级由 DSH 官方的 pluginManager 执行,装完提示重启宿主生效。用 link: / file: / github: 装的本地开发副本不给按钮(那会把链接换成 npm 包)# 推荐:npm 安装 —— 之后 `dsh plugin update` 会在 ^1.x 内自动升到最新小版本
dsh plugin --profile web add dsh-mcp-manager-ui@^1.5.5
# 或固定 GitHub release tag(不会自动跨版本,升级要换 tag 重新 add)
dsh plugin --profile web add github:Imzl-zl/dsh-mcp-manager-ui#v1.5.5
装完重启 dsh web。升级:
dsh plugin --profile web update dsh-mcp-manager-ui
卸载(不会删除 profile 里已有的 MCP 条目):
dsh plugin --profile web remove dsh-mcp-manager-ui
细节、本地开发安装与故障排查见 安装与升级。
不要把
mcp-manager-ui手工插进 profile 的cordis.patch.yml、Agent preset 或额外的--patch文件——插件命令已经完成这件事,重复装配会明确报错。
两个入口,同一个面板:
面板浮在会话之上,关掉它(右上角「关闭」或 Esc)不会影响会话。
两个入口都能单独关掉:面板右上角「入口」里选 悬浮按钮 + 侧栏入口(默认)/ 仅悬浮按钮 / 仅侧栏入口。不能两个都关——面板只能从这两个入口打开,所以这是一个三选一,而不是两个独立的开关。选择存在浏览器本地(localStorage),换浏览器或清缓存要重选一次。
顶部标签页在「全局」与各项目之间切换:
| 标签页 | 存哪 | 谁可见 | 改动何时生效 |
|---|---|---|---|
| 全局 | Web profile 的 cordis.patch.yml | 所有项目 | DSH 热加载,通常立即生效 |
| 某项目 | 该项目 .dsh/mcp.json | 只该项目会话 | 写盘即生效(见下) |
serverName 按作用域判重:不同项目之间、全局与项目之间可以同名,各自独立连接;同一作用域内不能重名。
在列表行或详情页里:
disabled,项目写 .dsh/mcp.json);mcp-client 的重连预算耗尽后必须靠它恢复);exclude,该项目的新会话不再看到它——全局实例仍在跑,所以不影响其他项目。三条路,都从面板顶部工具栏进:
command/args/env/cwd(stdio)或 url/headers(HTTP),可设调用超时、启动失败策略与重连策略;常用服务器有预设模板可一键套用。项目标签页里,「此项目的 MCP」标题右侧有两个入口(都只作用于当前项目):
exclude(屏蔽了哪些全局 MCP)不跟着搬:那是那个项目自己的意图,不是配置数据。.dsh/mcp.json 同格式),可复制或下载成文件。用于备份、跨机器迁移或分享给同事。导出内容是完整配置:字面写死的凭据(URL 里的 token、字面 header / env 值)会原样出现在里面,请按密钥对待;用 ${VAR} 引用的位置保持引用写法,不会被解析成明文。这份文件可以直接放进目标工作区的 .dsh/mcp.json,也可以用「导入 MCP」粘贴回来(粘贴只读 mcpServers,exclude 需要手动设)。目标工作区必须在 DSH 里注册过(也就是出现在面板顶部标签里的那些)——「复制到…」不接受任意目录,这条限制在 Host 侧强制,不只是界面不显示。
详情页列出该 MCP 当前注册的工具;展开可看完整输入 Schema。凭据类字段默认掩码,点眼睛图标会向 Host 读取有效运行值(已解析过的环境变量)并临时显示,再点一次恢复;已显示的值可一键复制。编辑时若没实际改动输入,保存仍保留原来的引用写法,不会把密钥写回配置文件。
| 作用域 | 修改后何时生效 |
|---|---|
| 全局 | DSH 热加载,通常立即生效(含运行中的会话) |
| 项目 | 写盘即生效:新增立刻挂上存活会话、删除立刻撤掉工具、改动就地重载连接(工具名不变) |
项目 MCP 由本项目所有会话共用一份连接,配置写在 .dsh/mcp.json。面板保存的那一刻就会对齐到正在运行的会话,不需要重开会话,也不需要重启 Host;手工编辑该文件则在下一次会话挂载时被采纳。
连接跟配置走,不跟会话走:最后一个会话结束不会拆掉连接,它只进入空闲等待,下一次会话直接复用——这样"要用的时候"它已经就绪(这也是宿主自己的契约:工具必须在首轮之前出现)。两个旋钮写在 server 条目里:
idleTimeoutMs(空闲保留多久,默认 5 分钟,0= 永不回收)与readyTimeoutMs(挂载时等就绪的总预算,默认 5s,0= 不等)。字段速查与边界见 设计与限制。状态怎么看:项目行把两件独立的事分开说,不合成一个状态。
- 连接在不在:
已连接 · 当前无会话使用(连接保留,下次直接用)/已连接 · N 个会话在用/连接中…/连接失败/尚未建立连接(新会话自动挂载)。- 几个会话在用:见上一行的
N 个会话在用;不再出现「待会话挂载」那种把两者压成一句、容易被读成"还没连上"的写法。重连是必需出口:mcp-client 的自动重连有次数上限,耗尽后它会注销工具并停止,只能靠重载配置或重启宿主恢复(它的 README 明写)。项目 MCP 又不是常驻服务,所以面板的「重连」按钮会拆掉旧连接、按当前配置重建,并重新投射给存活会话。
面板里显示「已禁用」,但模型调用报 unknown tool "mcp__xxx__..."
那个 MCP 被禁用了,所以它没有注册任何工具。在面板里点「启用」即可(全局会写 profile 补丁并热加载,项目写 .dsh/mcp.json、写盘即生效)。
那一行显示「挂载失败」「连接失败」或「作用域隔离失败」,怎么区分?
三类是不同的事,详情页会给出具体原因:挂载失败 = 会话挂载阶段(agent/created 监听器)就没挂上(变量求值为空、failOnStartupError 下启动失败、工具注册被拒);连接失败 = mcp-client 连不上或重连耗尽(原因取自它的日志);作用域隔离失败 = 连接正常但工具不在共享作用域层(宿主里出现了两份 @deepseek-ai/dsh-scope)。排查与原理见 设计与限制。
项目行那些状态文案分别是什么意思?
它们把两件独立的事分开说:连接在不在 —— 已连接 · 当前无会话使用(连接保留,下次直接用)(最后一个会话结束了,连接按空闲策略留着)/ 已连接 · N 个会话在用 · M 工具 / 连接中… / 连接失败 / 尚未建立连接(新会话自动挂载);几个会话在用 —— 就是那句里的 N 个会话在用。旧版本的「待会话挂载」正是把这两件事压成一句,所以容易被读成"还没连上"。
怎么升级?为什么面板没提示?
从 npm 装的直接 dsh plugin --profile web update dsh-mcp-manager-ui 就会升小版本,也可以直接点面板提示条上的「升级」(同一件事,免去敲命令)。面板的提示条只查 GitHub Releases、每天最多一次、可关闭、不会自己动;固定 tag 安装的用户不会自动跨版本,需要用新 tag 重新 add(见 安装与升级)。
改动会不会碰到我的其他配置?
不会。全局改动只动 profile 补丁里由 @deepseek-ai/dsh-mcp-client 声明、且由本插件管理的条目,保留其他插件条目、注释与 !!js 表达式;导入「替换」也只替换这一部分,不会删除其他 bundle 或 Agent preset 自带的 MCP。
卸载后我配置的 MCP 会消失吗?
卸载插件不会删除 profile 里已有的 @deepseek-ai/dsh-mcp-client 条目;项目的 .dsh/mcp.json 也留在原处(它本来就是普通 JSON 文件)。
| 项目 | 已验证 |
|---|---|
| DeepSeek Harness | 0.1.5-rc.1 及以上(已验证至 0.2.0-rc.2) |
| Node.js | DSH 自带/支持的运行时 |
| 平台 | Windows;Linux/macOS 使用同一 DSH Web 契约 |
只支持 0.1.5 起(更早的版本缺少「按注册作用域判 serverName 唯一性」与「setup 传入 agent」两个能力),不为旧版本保留降级分支。原因与依赖细节见 设计与限制。
npm test # 全部测试(含真机集成用例)
dsh --profile web --dump-config # 看 profile 的有效配置
dsh web # 起 Web 做真实操作验证
npm test 里除替身用例(验证插件内部自洽)外,还有一组真机集成用例:真 cordis + 真 dsh-tools + 真 dsh-scope + 真 dsh-mcp-client + 一个真 stdio MCP 子进程,覆盖「同项目两个会话共用一份连接、工具投射进会话层、不泄漏到全局、子进程随最后一个会话退出」。CI(push 到 main / PR,以及推 tag 发版)跑的是同一条门槛,发版流程见 安装与升级。
MIT
FAQs
Responsive MCP management UI for DeepSeek Harness Web — floating panel, JSON import, and profile-backed Host Remote management.
The npm package dsh-mcp-manager-ui receives a total of 559 weekly downloads. As such, dsh-mcp-manager-ui popularity was classified as not popular.
We found that dsh-mcp-manager-ui demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.