Passer au contenu principal
J

dsh-mcp-skill-list

jiajinyuan/dsh-mcp-skill-list

Inventory of the MCP servers, skills and hooks a DSH profile has, plus a conversation tab reporting every tool, skill and MCP server a session actually called.

Installer

dsh plugin --profile web add github:jiajinyuan/dsh-mcp-skill-list

README

dsh-mcp-skill-list

🇬🇧 English · 🇨🇳 简体中文

License: MIT Platform: DSH web Dependencies: none

🔎 Two things a DSH profile never tells you at a glance: what this machine is wired to, and what a session actually used. This plugin answers both.

🧭 What it does

  1. 🔌 What is this machine wired to? — every configured MCP server, every skill on disk, every hook they declare.
  2. 📊 What did this session actually use? — every TOOL / MCP / SKILL / HOOK the conversation called, summarised per session and per turn.

It ships two surfaces, both rendered as real React inside DSH slots (no iframe):

SurfaceWhere
🧩 Inventory panelSidebar icon + main panel, three tabs: MCP / SKILL / HOOK
🧰 Usage tabConversation top bar, right after Trajectory (轨迹), labelled 工具

🧩 Inventory panel (left sidebar)

  • 🔌 MCP — server name, transport (stdio / streamable-http), the startup command line or endpoint URL, environment variable names only, and whether tools from that server are currently registered.
  • 🎒 SKILL — name, description, whenToUse, the provider that supplied it, its SKILL.md path, and how many hooks it declares.
  • 🪝 HOOK — every hook declared by a skill's frontmatter, plus anything in ~/.claude/settings.json, <cwd>/.claude/settings.json and settings.local.json, plus the eight events the host can hook into.

📋 Every name has a copy button.

🧰 Usage tab (conversation top bar)

Two levels, switched by a segmented control:

  • 📊 Session summary — every tool the session called, with call counts, error counts and the number of turns it appeared in. Sub-tabs split TOOL / SKILL / MCP / HOOK; the hook tab also estimates how many times each hook would have fired.
  • 🪜 Turn detail — one collapsible card per turn: the prompt that opened it, its call count, and the tools / skills / MCP servers that turn used.

🧠 MCP tools are recognised by their mcp__<server>__<tool> names and grouped back to their server, so you see which MCP server did the work, not just an opaque tool name.

🔌 Data sources

Everything is read, never written.

FactWhere it comes from
🔌 MCP serversprofile Loader entries whose module is @deepseek-ai/dsh-mcp-client
🩺 MCP connectivitytools.schemas() filtered by the mcp__ prefix
🎒 Skillsthe skills service snapshot, backed by a disk scan of ~/.agents/skills, ~/.dsh/skills, <cwd>/.agents/skills, <cwd>/.dsh/skills
🪝 Hookshooks: frontmatter inside SKILL.md, plus Claude Code settings files
📊 Session usagethe session event log via sessionQuery (tool/call, tool/result, turn/start, …)

🔒 Secrets stay home. Environment variables are reduced to their key names before they ever leave the host process; values are never serialised, never sent to the browser, never logged.

📦 Install

From the plugin market, one click. Or from a DSH session:

plugin_manager install_bundle, target: dsh-mcp-skill-list

From a checkout:

plugin_manager install_bundle, target: <absolute path to this directory>

✅ Requirements

  • 🖥️ DSH runtime with the web platform (the panel is a web client plugin).
  • 📦 No third-party runtime dependencies: the host half imports only node:fs/promises, node:os and node:path; the client half requires only react from the browser module table.

🗂️ Layout

index.js           🖥️  host half — two same-origin read-only routes
client.js          🌐  client half — slots, components, both surfaces
cordis.patch.yml   ⚙️  bundle patch inserting the plugin row
locale/{zh,en}.json   🈯  interface dictionaries
icon.svg           🎨  sidebar icon

Two routes are registered on the host:

  • GET /api/dsh-mcp-skill-list/inventory — 🧩 MCP servers, skills, hooks
  • GET /api/dsh-mcp-skill-list/usage?sessionId=… — 📊 per-session and per-turn usage

🛡️ Both reject non-loopback origins and cross-site requests.

🌐 UI language

The interface follows the DSH language setting out of the box — Simplified Chinese and English dictionaries are bundled in locale/{zh,en}.json, no extra configuration needed.

📄 License

MIT

Plugins associés