npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@dsh-mixxed/dsh-client-ui-settings-mcp

v0.7.0

Published

MCP server manager for DeepSeek Harness: manage MCP servers from the Web settings page, stored globally in $DSH_HOME/ui-settings-mcp.json, connected/disconnected at runtime.

Readme

@dsh-mixxed/dsh-client-ui-settings-mcp

English | 中文 · npm version · License: MIT

在 DeepSeek Harness 的 Web 设置页里直接管理 MCP 服务器——运行时添加、编辑、启用/停用、重连、删除,带实时状态、自动重连和配置文件热同步。

功能简介

  • Web 设置页 UI — 独立的"MCP 服务器管理"页面:服务器卡片(实时状态)、添加/编辑表单、两步确认的删除保护。
  • 运行时连接 — 服务器即时连接/断开;工具以 mcp__<serverName>__<tool> 全局注册,所有会话的 agent 都能调用。
  • 工具列表 — 服务器卡片可展开,查看该服务器当前暴露的工具名称与描述。
  • 实时状态 — 可达性探测让关闭的服务器显示 离线 而不是陈旧的"已连接";卡住的连接 30 秒后判为超时。
  • 自动重连 — 初始连接失败按指数退避重试(3s → 60s);点"刷新"立即重试一次。
  • 启用/停用 — 一键停用立即断开并卸载工具;重新启用即自动重连。
  • 配置热同步$DSH_HOME/ui-settings-mcp.json 被实时监听,外部修改约 1 秒内生效,无需重启。
  • 主题与多语言 — 自动跟随 DSH 浅色/深色主题(含外观插件对 --dsw-alias-* token 的覆盖);UI 内置简体中文 / English

截图

MCP 服务器管理设置页

安装

如果你是人类

方式一:npm 安装(最简单):

dsh plugin --profile web add @dsh-mixxed/dsh-client-ui-settings-mcp

本包声明了 dsh.bundle,因此 dsh plugin add 安装后会自动把它追加到 profile 的 dsh.profile.bundles 层栈——下次启动时插件行自动挂载,无需手动编辑 cordis.patch.yml

从旧版本(未声明 bundle)升级:请删除 $DSH_HOME/profiles/<name>/cordis.patch.yml 中旧的 ui-settings-mcp 挂载行——bundle 层现在会提供它,两者并存会挂载两次。

方式二:源码安装:

  1. 克隆并构建:

    git clone https://github.com/dsh-mixxed/dsh-client-ui-settings-mcp.git
    cd dsh-client-ui-settings-mcp && npm install && npm run build   # lib/ 由 esbuild 生成(发布时 prepack 自动构建)
  2. 包含克隆目录的父目录安装到 profile(无需写绝对路径):

    dsh plugin --profile web add ./dsh-client-ui-settings-mcp

    本地包同样声明了 dsh.bundle,上面的自动挂载同样生效。

然后重启 dsh web,并强制刷新浏览器页面(Ctrl+Shift+R)以加载新的 __DSH_BOOT__,然后打开 设置 → MCP 服务器 添加你的第一个服务器。

注:Web 面的 cordis.patch.yml 热重载未启用(DSH 共享 HMR 行是关的),改配置后需重启;插件集变更(新增行)也需要重启,客户端 pkgMeta 缓存才能发现新包。

如果你是一个 AI agent

请按顺序执行,不要跳步:

  1. 通读本 README(尤其是"功能简介"、"已知限制"和本节)。
  2. 安装包(优先 npm):在目标 profile 下运行 dsh plugin --profile <profile> add @dsh-mixxed/dsh-client-ui-settings-mcp(或在 $DSH_HOME/profiles/<profile>npm install @dsh-mixxed/dsh-client-ui-settings-mcp,再用下面的源码方式处理文件布局)。
    • 源码兜底:克隆本仓库 → cd dsh-client-ui-settings-mcpnpm install --ignore-scripts && npm run build(产出自包含的 lib/index.js + lib/client.js,运行时零依赖)→ 在克隆目录的父目录执行 dsh plugin --profile <profile> add <克隆目录路径>(或把目录链接到 $DSH_HOME/profiles/<profile>/node_modules/@dsh-mixxed/dsh-client-ui-settings-mcp——Windows 用目录 junction,POSIX 用符号链接)。
  3. 无需手动挂载行 — 包声明了 dsh.bundledsh plugin add 会自动把它加入 profile 的 bundle 层(可用 dsh --profile <profile> --dump-config 验证 ui-settings-mcp 行已出现)。
  4. 重启 dsh web(Web 面配置热重载未启用),并提示用户强制刷新浏览器以看到设置页新入口。
  5. 验证GET http://127.0.0.1:3080/ui-settings-mcp/api/health 应返回 {"ok":true,"name":"ui-settings-mcp","version":"<x.y.z>",...}

使用简介

打开 设置 → MCP 服务器

  • 服务器卡片:显示名称、传输方式、状态徽章和端点;停用的卡片变灰。
  • 工具列表:点击卡片上的"查看工具 (n)"展开该服务器的实时工具名称与描述。
  • 启用/停用开关:停用立即断开并卸载该服务器的工具。
  • 重连:自动等待连接结果并刷新(等待时间可配置,默认 15 秒)。
  • 编辑:可改传输方式 / URL / 命令 / Headers(serverName 不可修改);保存后原地热更新连接。
  • 删除:位于编辑页顶部,两步确认(3 秒窗口)。
  • 添加streamable-http(URL + 可选 Headers)或 stdio(命令 + 参数),可设连接等待超时。

状态说明

| 状态 | 含义 | |---|---| | 已连接 (n 工具) | 工具已注册 | | 连接中 | 正在握手 / 重连 | | 服务器离线 | 曾连接成功,但服务器进程当前不可达(探测结果) | | 连接错误 | 初始连接失败(显示原因)或 30 秒连接超时 | | 已停用 | 已关闭——不连接、无工具 |

配置文件

$DSH_HOME/ui-settings-mcp.json —— 所有 profile/会话共享:

{
  "version": 1,
  "servers": [
    { "serverName": "my-server", "transport": "streamable-http", "url": "http://127.0.0.1:8080/mcp", "enabled": true }
  ]
}

文件被实时监听:手工修改(增/删/改/启停)约 1 秒内生效;POST /ui-settings-mcp/api/reload 可随时手动触发。

HTTP API

| 方法 | 路径 | 用途 | |---|---|---| | GET | /ui-settings-mcp/api/health | 存活 + 版本 + 存储路径 | | GET | /ui-settings-mcp/api/servers | 服务器列表(含探测后的实时状态) | | GET | /ui-settings-mcp/api/servers/<name> | 单个服务器 | | POST | /ui-settings-mcp/api/servers | 添加并连接 | | POST | /ui-settings-mcp/api/servers/<name>/update | 更新配置并热重连(serverName 不可改) | | POST | /ui-settings-mcp/api/servers/<name>/toggle | 启用/停用({"enabled": true|false}) | | POST | /ui-settings-mcp/api/servers/<name>/reconnect | 断开后重连 | | DELETE | /ui-settings-mcp/api/servers/<name> | 断开并删除 | | POST | /ui-settings-mcp/api/reload | 从磁盘重新读取配置文件 |

安全

/ui-settings-mcp/* API 可以启动 stdio 服务器——即执行任意命令——因此按绑定地址做了访问控制:

  • 默认仅 loopbackdsh web 绑到 127.0.0.1(默认)时 API 开放,符合单用户本机定位。
  • 网络暴露防护。当 dsh web 绑到非 loopback 地址(--host 0.0.0.0)时,管理器会输出红色错误日志并拒绝所有 /ui-settings-mcp/* 请求(403)——stdio 服务器可执行任意命令,因此不提供远程管理通道。
  • 单个 MCP server 的认证(如 Authorization 头)在添加/编辑表单的 Headers 字段里按服务器单独配置;管理 API 本身不需要令牌。

开发

npm install      # 仅构建期依赖
npm run build    # esbuild:lib/index.js(host,全内联)+ lib/client.js(浏览器)
npm run watch    # 监听 client bundle(配合 dsh-client-hmr)

发布:改 package.jsonversion 后运行 npm publishprepack 脚本会在打包前自动构建 lib/;发布包含 lib/cordis.patch.ymldsh.bundle patch 层)、两份 README 和 LICENSE)。

运行时零依赖:host 半内联了 @deepseek-ai/dsh-mcp-client、MCP SDK 和 cross-spawn;浏览器半是 DSH 客户端模块系统托管的闭包工厂 bundle。

已知限制

  • 初始失败是退避重试而非即时failOnStartupError 开启,首次连接失败显示 error 并最多每 60 秒重试一次;连接成功后由 mcp-client 自带重连处理断线。
  • 可达性探测是 HTTP 层 — 对 streamable-http 服务器发 GET(2.5 秒超时,任何 HTTP 响应都算可达);stdio 服务器不探测。
  • 仅桥接 tools — MCP Resources/Prompts 未桥接(与官方 mcp-client 一致)。
  • 管理仅限 loopback/ui-settings-mcp/* 没有用户体系或远程管理通道;web 服务器绑到非 loopback 地址时所有请求被拒绝(见"安全"一节;stdio 服务器可执行任意命令)。
  • 部分 MCP 服务器只允许一个活动客户端(如 Godot MCP)——第一连接未释放时,第二连接会被拒绝并报错。

许可证

MIT