zx2021210538/dsh-skills-mcp-manager ↗★ 0

dsh-skills-mcp-manager

在设置中统一管理全局及项目级技能与MCP服务器。 适合需要分层管理、快速检索和配置Skills与MCP服务的用户。

套件
dsh-skills-mcp-manager
相容性
待驗證
Harness 依賴範圍
*
版本
0.6.1
授權
MIT
最近更新
2026年10月24日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:zx2021210538/dsh-skills-mcp-manager

使用

入口:设置 → Skills & MCP(与内置插件页同一套设置槽位)。

  • 搜索只匹配名称,不匹配地址 / 参数 / 环境变量
  • 一份列表,没有分区标题:全局的排前面,然后按工作区顺序;卡片上的标签说明它属于谁
  • 「添加」按钮与搜索框同一行,表单紧贴列表上方(点完就能看到它要追加到的位置)
  • 没有项目筛选器:列表跨工作区展示(全局在前,然后按工作区顺序),卡片上的标签说明归属。 新条目要写到哪个工作区,在添加对话框里选
  • 卡片标签统一:全局显示「全局」,项目级显示工作区名 —— MCP 与 Skills 同一套词表
  • 卡片操作收进 … 菜单(预览 / 编辑 / 删除);技能没有启用开关——磁盘上有文件就是启用

MCP

全局 MCP项目级 MCP
存在哪profile cordis.patch.yml 的 Loader 行profile cordis.patch.yml 里带 scope 的 Loader 行
谁去连接官方 @deepseek-ai/dsh-mcp-client 直接加载这些行插件在 agent/created 时按项目路径挂载
生效范围所有会话(含 subagent)只有该项目里运行的会话 agent
增删改写回配置文件(加锁 + 原子写 + 写前校验 + 自动备份)同一个行命令路由,写回带 scope 的行
  • 卡片上的「配置文件」标签表示这一行来自 cordis.patch.yml;这种行可以编辑 / 停用 / 删除,改动通过带鉴权的 POST /dsh-skills-mcp-manager/rows 立即写回(新增/删除在点击瞬间就生效,不等轮询)

  • 展开卡片能看传输方式、地址或命令、参数、环境变量(值打码)、范围与启停状态

  • 展开卡片的「工具」一栏可以只保留你需要的工具。每个服务器的工具清单下面有三档:

    档位含义
    全部保留(默认)不做任何干预,该服务器列出的工具全部注册
    只保留勾选勾选的才注册,没勾的不会进入工具注册表(也不占 token)
    只挡勾选勾选的被挡住,其余照常注册

    被挡下的工具不只是「不显示」——它们从未注册,所以也不占用每次组装工具面的 JSON schema 体积。 实测本机 chrome-devtools 一个服务器就占 30 个工具、约 25 KB(≈5.8k tokens), 只留常用的几个收益很明显。

    两点如实说明:

    • 改动要等该服务器重新注册工具时才完全生效。规则本身是即时读取的(改完保存即可, 不用重启),但已经注册进注册表的工具无法被插件注销,所以已存在的工具不会当场消失。 想立刻看到效果:把这张卡片**「停用」再「启用」**(几秒即可)——停用会销毁该服务器的桥接、 连带注销它的工具,启用时重新连接并重新注册,于是全部工具重新过一遍过滤;或者重启 DSH。
    • 过滤靠劫持工具服务的 register 实现——因为 dsh-mcp-client 自身没有白名单字段, 而 ctx.tools.restrict() 要求 scoped 上下文(全局调用会抛错)、且只遮罩不注销。 这是唯一能真正把工具挡在注册表外的接缝。装不上时面板会显示原因,而不是假装在工作。
  • 停用只是把该行的 enabled 置 false,不删你的配置

  • 连接与重连(添加/编辑 MCP 时的最后一组输入,全局与项目级都支持):直接对应 @deepseek-ai/dsh-mcp-client 自己的配置字段

    表单里填的落到 config 的默认值作用
    连不上时拒绝激活failOnStartupErrorfalse勾上后:首次连接或工具同步失败会让插件激活失败(不勾则照常启动,只是没有该服务器的工具)
    工具调用超时(ms)toolCallTimeoutMs60000单次 tools/call 的超时。导入/分析这类分钟级操作会被默认 60 秒打断(本机实测一次 Ghidra 导入+全量分析约 158 秒),按需调大
    重连首次延迟(ms)reconnect.initialDelayMs500第一次重连等待多久,之后逐次翻倍
    重连最大延迟(ms)reconnect.maxDelayMs30000退避延迟的上限
    重连最大次数reconnect.maxAttempts10单次断线最多连续尝试几次,超出则放弃
    输入框预填真实默认值,落库也写成显式值(500 / 30000 / 10):表单显示的就是实际生效的,
    不用去翻 dsh-mcp-client 的源码才知道这一行怎么重连。清空输入框会回到默认值,而不是删掉键。
    failOnStartupError 例外——false 与「键不存在」完全等价,写它只是噪音,所以只在勾选时写入。
    填了非法值(非整数、超范围)会被拒绝并提示——因为写进去会让整行加载失败
  • 导入 MCP:选来源 → 扫描 → 预览「哪些文件存在、识别出几个、几个形态不支持」→ 确认。全局与项目级都写成配置文件行(项目行带 scope)

技能

  • 列表 = 磁盘扫描结果:$DSH_HOME/skills、~/.agents/skills、以及各项目的 .agents/skills / .dsh/skills。磁盘文件是唯一真源,config.skills[] / 对账镜像已删除(旧条目会在升级时一次性写成文件)
  • 「添加技能」写入 //SKILL.md:区域选全局或项目,名字同时是目录名
  • 预览/编辑按需通过 GET //skill?path= 读取正文(只允许读扫描到的文件;正文不进 profile patch)
  • 重命名会同时移动目录并改写 frontmatter 里的 name(否则面板和文件夹会对不上)
  • 删除是两步确认:先把目录备份到同级的 .smp-backup--,再删除;备份会保留,需要时手动改回原名即可

状态与失败

在途操作在卡片上显示进度(保存中… / 删除中… / 切换中…),期间该卡片的其它按钮不可点;操作失败会就地显示原因(例如「该技能不在当前扫描结果里」)。删除若 15 秒没有回执,会停止转圈并提示重试。