Imzl-zl / dsh-mcp-manager-ui

Listed

MCP server management UI for DeepSeek Harness Web — floating panel, JSON import, and profile-backed persistence.

mainTool View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:Imzl-zl/dsh-mcp-manager-ui

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit c69d5ddSynced Aug 18, 2026

dsh-mcp-manager-ui

LINUX DO

DeepSeek Harness Web 的 MCP 管理面板。它在 Web Host 中运行一份,通过右下角悬浮按钮管理当前 Web profile 的 MCP 配置。

界面预览

管理面板

MCP 管理面板

连接详情与操作

MCP 连接详情

新增 MCP

新增 MCP

功能

  • 查看 MCP 状态、传输方式、连接参数和工具列表
  • 启用、禁用、重连、添加、编辑和移除 MCP
  • 跟随 DSH 深色/浅色主题,并适配窄屏和移动宽度
  • 支持 DSH rc.7 的完整 MCP 连接字段:commandargsenvcwdurlheaders、调用超时、启动失败策略和重连策略
  • 导入 Claude、Cursor、Cline、Roo 等使用的 mcpServers JSON,以及 VS Code 的 servers JSON
  • JSON 导入支持“合并(同名更新)”和“替换当前 Web profile 管理的 MCP”,写入前提供预览
  • 结构化修改 Web profile 的 cordis.patch.yml,保留其他插件条目、注释和 !!js 环境变量表达式
  • Host Remote 与 Web 客户端均随插件生命周期加载和卸载

兼容性

项目已验证版本
DeepSeek Harness0.1.0-rc.7
Node.jsDSH rc.7 自带/支持的运行时
平台Windows;Linux/macOS 使用同一 DSH Web 契约

DSH 宿主 API 通过 peerDependencies 声明为 >=0.1.0-rc.7 <0.1.0-rc.8,开发和测试环境精确锁定 0.1.0-rc.7。每个后续 RC 都需要重新验证并更新兼容窗口,不会未经测试自动跟随 latest

安装

使用 DSH 插件命令安装。不要把 mcp-manager-ui 再手工插入 Web profile 的 cordis.patch.yml

# 正式使用固定 release tag。
dsh plugin --profile web add github:Imzl-zl/dsh-mcp-manager-ui#v1.1.3

安装、升级、卸载和本地开发流程见 安装与升级

安装后重启 dsh web。插件命令会同时完成两件事:

  1. 把包加入 Web profile 的 dependencies
  2. dsh-mcp-manager-ui 加入 dsh.profile.bundles

仓库自己的 cordis.patch.yml 已经声明唯一的 Host 条目:

- insert:
    - id: mcp-manager-ui
      name: dsh-mcp-manager-ui

不要在以下位置重复这段条目:

  • ~/.dsh/profiles/web/cordis.patch.yml
  • 任意 Agent preset 的 agent.cordis.yml
  • 额外的 --patch 文件

本插件也不需要全局安装 @deepseek-ai/dsh-tool-cordis。需要临时开发 Cordis 插件时,直接新建“创造模式”会话。

卸载:

dsh plugin --profile web remove dsh-mcp-manager-ui

JSON 兼容范围

DSH rc.7 原生支持两种 MCP transport:

  • stdiocommandargsenvcwd
  • streamable-httpurlheaders

导入器会识别 httpstreamable-httpstreamableHttp 等常见别名,并把 ${TOKEN}${env:TOKEN} 转成 DSH 的 !!js process.env.TOKEN 表达式。DSH 当前不支持的 SSE、WebSocket、OAuth、headersHelperenvFile 等字段会明确报错或提示,不会静默生成不可用配置。

其他 Agent 的 directTools 可以是 truefalse 或缺失。DSH 没有间接工具模式并始终把 MCP 工具注册为 mcp__<server>__<tool>,因此导入器采用保守映射:true 转成 disabled: falsefalse 转成 disabled: true,缺失时不干预现有启停状态;同时存在显式 disabled 时以后者为准。预览会逐项提示这些转换。

“替换”只替换当前 Web profile 的 cordis.patch.yml 中由 @deepseek-ai/dsh-mcp-client 声明的条目,不会删除其他 bundle 或 Agent preset 自带的 MCP。

完整格式、两种导入模式、启停映射和密钥处理见 JSON 导入

文档

开发流程

  1. 在“创造模式”中用 cordis_inspectcordis_definecordis_run 做临时验证。
  2. 将确认后的实现写入本仓库。临时动态插件不会自动生成源码文件,也不会在 DSH 重启后恢复。
  3. 停止临时动态版本,避免它与仓库版本同时注册 UI 或 Remote。
  4. 使用本地路径执行 dsh plugin --profile web add ...,验证正式 bundle。
  5. 运行测试并启动 Web 做真实操作验证。
npm test
dsh --profile web --dump-config
dsh web

包结构

  • package.json:声明 dsh.bundle 和 Web dsh.client
  • cordis.patch.yml:插入唯一的 Host 插件实例
  • lib/index.jsmcpManager Host Remote
  • lib/mcp-config.js:JSON 规范化与 YAML patch 结构化读写
  • lib/mcp-observability.js:连接状态判定与 mcp-client 日志格式化
  • lib/client.js:响应式 Web UI、Remote 客户端和生命周期清理
  • lib/typert.js:Remote 契约描述

lib/ 是预构建产物,GitHub、tarball 和 npm 安装均不需要执行构建脚本。

连接状态语义

@deepseek-ai/dsh-mcp-client 不对外暴露连接成功/失败事件,连接状态只出现在它的日志里。因此面板采用两条独立事实拼出状态:

  • 已连接(connected):只有该 server 的工具已注册(mcp__<server>__* 数量 > 0)才判定为已连接。插件 fiber 处于 ACTIVE 只说明 mcp-client 在跑,不能证明握手成功——failOnStartupError: false(默认)时连接失败也会让 fiber 保持 ACTIVE。
  • 连接失败(failed):fiber 活着但没有工具注册,且 mcp-client 最近日志(通过 ctx.logger.exporter 订阅并按 mcp-client(<serverName>) 过滤)中出现 error/warn。失败原因会展示在详情页,例如 connection attempt failed: ECONNREFUSEDadb forward missing
  • 工具数为 0 且没有任何失败日志时如实显示连接中/等待,不猜测成功。

面板在详情页和编辑表单中默认掩码敏感值(URL 凭据、args、env、headers),点击眼睛图标后经 Host 的 reveal 接口读取有效运行值并在会话内临时显示;编辑时若未实际修改输入,保存仍保留原配置引用,不会把环境变量密钥写回 profile。该读取只对当前 Web profile 管理的 server 开放。

设计约束

dsh-mcp-manager-ui 是 Web Host 单实例插件。固定的 Remote namespace 和 UI slot id 是有意设计;重复加载属于配置错误,插件会明确失败,而不是静默忽略。多个 MCP server 则由 @deepseek-ai/dsh-mcp-client 的不同 serverName 实例管理。

相关链接

License

MIT

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
DocumentationDetected

Repository information

Language
JavaScript
License
MIT
Latest release
v1.1.1
Last updated
Aug 18, 2026, 6:14 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.