DeepSeek Harness Plugin

SeverusZh/dsh-skills-mcp-group-manager

Stars ★ 2 Downloads (30d) 2,352 Category UI Enhancements Added 2026-08-30 npm dsh-skills-mcp-group-manager

Group installed skills and manage MCP servers from a left-panel UI: filter the model skill catalog by enabled groups (union-deduped) and toggle MCP servers independently.

Install

# from npm (prebuilt)

dsh plugin --profile web add dsh-skills-mcp-group-manager

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:SeverusZh/dsh-skills-mcp-group-manager

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

🗂️ DeepSeek Harness Skills & MCPs Group Manager

A DSH plugin that groups Skills, filters the model skill catalog, toggles MCP servers independently, and manages everything from a left panel


✨ 功能特性 / Features

  • 🎯 Skill Groups — create / rename / delete groups, groups are collapsible; both the member and picker views are list + multi-select, supporting select-all / deselect-all after search filtering and batch add / remove.
  • 🧠 Injection Filtering — the context injects only the Skills that appear in enabled groups (union, deduplicated, one at a time); ungrouped Skills are not injected by default; switching groups refreshes the catalog live.
  • 🔌 MCP Management — enumerate all MCP servers (profile config + user-added) and toggle them independently; user-added MCPs are mounted dynamically and persisted, restored automatically on restart.
  • 💾 Persistence — ~/.dsh/mcp-skill-manager/state.json (atomic write); the next session reuses the previous group settings by default.
  • 🖥️ UI — a group-management panel on the left of the dialog (shell.overlay) + a session-header toggle (conversation.session.header.actions, with a "Skills&MCPs" label). A pure floating panel; it does not modify the product layout.

📦 安装 / Install

# 单命令安装(无需其他步骤)
dsh plugin --profile web add dsh-skills-mcp-group-manager

# 重启 web profile 进程后生效(当前 GUI 由 dsh web 提供,重启后刷新页面)

Why no extra steps? The host half-plugin has zero external package dependencies (only Node built-ins and local modules), so the link: install performed by dsh plugin add resolves directly — no symlinks or build step needed.

🗑️ 卸载 / Uninstall

Uninstalling removes the data together with the plugin.

dsh plugin --profile web remove dsh-skills-mcp-group-manager

On uninstall pnpm runs the package's postuninstall script (scripts/cleanup.mjs), which deletes the entire state directory ~/.dsh/mcp-skill-manager/ (including state.json), so groups and MCP configuration are removed together with the plugin. Manual removal also works: rm -rf ~/.dsh/mcp-skill-manager.

🧱 组成 / Structure

File Description
lib/index.js Host half-plugin: state model, skill catalog filtering (shadow provider skill-manager-filter), MCP enumeration / restrict / dynamic mount (via the loader), 12 manager_* tools, RPC route /plugins/dsh-mcp-skill-manager/rpc
lib/client.js Client half-plugin: left-side group-management panel + session-header toggle
lib/state.js Pure state logic (zero dependencies)
lib/store.js State storage (atomic write + serialized write chain + fault-tolerant read)
scripts/cleanup.mjs postuninstall cleanup script
cordis.patch.yml Bundle patch that inserts the plugin line into the host composition

🛠️ 工具 / Tools

manager_groups_list/create/delete/rename/set_enabled/add_skill/remove_skill, manager_skills_list, manager_mcp_list/toggle/add/remove.

🧩 兼容性 / Compatibility

The @deepseek-ai/dsh* range in peerDependencies determines whether the plugin passes DSH's compatibility gate. This plugin declares >=0.1.7-rc.1 (no upper bound), and has been tested on:

DSH version Status
0.1.5-rc.1 ✅ Tested
0.1.5-rc.2 ✅ Tested
0.1.6-alpha.2 ✅ Tested
0.1.7-rc.1 ✅ Tested
0.1.7-rc.2 ✅ Tested
0.2.0-rc.1 ✅ Tested

Only versions that were actually run are listed; untested versions are omitted.

v0.3.7 targets DSH 0.1.5-rc.1+, verified on 0.1.5-rc.1 / 0.1.5-rc.2 / 0.1.6-alpha.2 / 0.1.7-rc.1 / 0.1.7-rc.2 / 0.2.0-rc.1 (peer >=0.1.7-rc.1; the real dsh-tools registry probe passes; on 0.1.7-rc.2 the manager.state.get RPC returns as measured; on 0.2.0-rc.1 it passes the new compatibility gate and loads normally); for older DSH releases (0.1.0-rc.x) use the last compatible npm version, 0.3.2.

📄 许可证 / License

MIT © SeverusZh

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.