dsh-scan-mcp
Manifest valid★ 1Scans MCP servers configured in Claude Code, Codex and CodeBuddy and probes real connectivity via stdio and streamable-http initialize handshakes, with enable/disable toggles and a /mcp control panel.
dsh-scan-mcp
Windows MCP Hub for DeepSeek Harness — scans the MCP servers configured in your local coding agents
(Claude Code / Codex / CodeBuddy), probes real connectivity with an actual MCP initialize handshake
(both stdio and streamable-http transports), and lets you enable/disable each server from the UI.
Features
- Auto-scan — reads MCP configs from Claude Code (
~/.claude.json), Codex (~/.codex/config.toml) and CodeBuddy (~/.codebuddy/mcp.json), with cross-agent deduplication (same MCP shown once, sources merged). - Real connectivity probe — starts the actual process (stdio) or performs a real MCP
initializehandshake over HTTP (streamable-http, JSON and SSE responses, configurableheaderspassthrough). Online (green) / offline (red) at a glance, with the concrete failure reason and latency. - Enabled-only probing — only enabled MCPs are ever connected. Disabled servers show as offline
(
已停用(未启用,不检测连接)) and are never probed; re-enabling auto re-tests. - Per-server reconnect — re-test one server without a full rescan (disabled servers: button greyed out).
- Sliding toggles — all servers enabled by default; toggle any off/on. State persists to
~/.dsh/dsh-scan-mcp.json(survives restarts). /mcppopup panel — type/mcpin any session to open a modal control panel (not an AI reply).- Settings section — Settings → Windows MCP 控制中心 (card layout).
- Model tool — exposes
mcp_discovered_catalog(scan + connectivity, read-only).
Requirements
- Windows (the scanned agent configs live under the Windows user home)
- DeepSeek Harness (DSH) with a web profile (
dsh web) - Node.js ≥ 20 (the host half uses the built-in
fetchfor streamable-http probes)
Installation
Pick one of the following commands (replace <profile-name> with your DSH profile name, e.g. web):
# 1. From npm (recommended)
dsh plugin --profile <profile-name> add dsh-scan-mcp
# 2. From GitHub
dsh plugin --profile <profile-name> add https://github.com/chenbin-dev/dsh-scan-mcp.git
# 3. Local development
dsh plugin --profile <profile-name> add /path/to/dsh-scan-mcp
Then restart the profile (e.g. stop and run dsh web again). The plugin is a static bundle:
it survives DSH restarts and needs no per-session approval prompt.
Usage
- In any session, type
/mcp→ the MCP control panel pops up:- Summary row: deduped MCP count · online · offline · disabled · diagnostics
- Each row: name, transport (
stdio/streamable-http) · endpoint, ● online / ● offline, failure reason, Reconnect button (greyed out when disabled), sliding toggle - Header: refresh scan / close
- Or open Settings → Windows MCP 控制中心 for the same data in card layout.
- The model can also call the
mcp_discovered_catalogtool for the full catalog.
Scan sources
| Agent | Config file | Format |
|---|---|---|
| Claude Code | ~/.claude.json | JSON mcpServers object |
| Codex | ~/.codex/config.toml | TOML [mcp_servers.<name>] sections |
| CodeBuddy | ~/.codebuddy/mcp.json | JSON |
Missing/unreadable files show up in the panel's diagnostics counter and don't break the rest of the scan.
Want more sources? Edit the SOURCES array at the top of src/index.js (or open a PR / an issue).
Transport support
- stdio — spawns
commandwithargs(plusenv), sendsinitializeover stdin, waits for the JSON-RPC response on stdout. - streamable-http —
POSTinitializetourlwithContent-Type: application/jsonandAccept: application/json, text/event-stream; parses both plain JSON and SSE (data:line) responses; forwards the config'sheaders(e.g.Authorization) verbatim.
Privacy & Security
- The plugin only ever shows environment variable / header NAMES — it never reads or displays credential values; tokens stay in your original agent configs.
- Probing is a handshake only (
initialize): no MCP tools are ever invoked, no MCP process is left running (each probe is terminated when done), and disabled servers are never probed at all. - The state file
~/.dsh/dsh-scan-mcp.jsonstores only MCP ids and their toggle state — no credentials.
Troubleshooting
A server stays offline? Click Reconnect on its row to see the exact reason:
ERR_MODULE_NOT_FOUND— usually a corrupted npm/npx cache. Runnpm cache clean --force(or delete the offending directory under%LocalAppData%\npm-cache\_npx\<hash>), then reconnect.npm ... 404— the package name does not exist; fix it in your agent config (e.g. sequential-thinking is@modelcontextprotocol/server-sequential-thinking).连接超时(stdio) — the process did not answerinitializewithin 20s (common when network/proxy is required).HTTP 状态 404/405(该地址可能不是 MCP 端点)— theurlis not an MCP endpoint or the server does not implement MCP.网络不可达 / 连接超时(streamable-http) — cannot reach the endpoint; check network/proxy.未识别到 MCP initialize 响应— non-JSON/SSE reply; the endpoint may need aheadersauth field.
Development
dsh-scan-mcp/
├── package.json # plugin metadata (dsh.bundle.patch / dsh.client)
├── cordis.patch.yml # bundle patch — inserts the plugin row (id: wmcp)
└── src/
├── index.js # Host half: scan + handshake probes + HTTP RPC + tool + /mcp command
└── client.js # Client half (browser): settings page + popup panel + command trigger
- Host half is a plain ESM module (
export { name, inject, apply }) using Node built-ins only (child_process,fs,fetch); peer dependency@deepseek-ai/dsh-toolsis provided by the host. - Host ↔ Client talk over HTTP RPC:
POST /__scan-mcp/scan|test|setEnabled. - Probe results are cached 30s; up to 3 concurrent probes; 20s stdio / 12s HTTP timeouts.
- Syntax check:
node --check src/index.js && node --check src/client.js(npm test).
License
Compatibility
Versions
| Latest version | Published | Size |
|---|---|---|
| 0.1.0 | — | — |
| 0.1.1 | — | — |
Comments
Loading…
Similar plugins
by YunzhouLi-hub
Host-wide MCP server panel: imports the servers declared in Claude Desktop, Claude Code, Cursor and Codex CLI configs, searches six upstream catalogs and installs from whichever of them declares an in
★ 11
MIT
JavaScript
Oct 30, 2026
dsh plugin --profile web add dsh-overall-mcpby zhengjy01
MCP server manager for DeepSeek Harness: add, edit, enable and test stdio / Streamable HTTP MCP servers from the Web settings page and from agent tools, connected and disconnected at runtime without restarting DSH
★ 0
MIT
JavaScript
Sep 29, 2026
dsh plugin --profile web add @zhengjunyao/dsh-mcp-managerby hlyyh21201-prog
DSH plugin: manage MCP servers from the Web settings panel (list, start/stop, edit, probe by real handshake) and import configs from Codex TOML, mcpServers JSON and VS Code mcp.json.
★ 0
MIT
JavaScript
Oct 16, 2026
dsh plugin --profile web add @yyh/dsh-mcp-hubby shiliu153
DeepSeek Harness bundle: manage MCP servers — list, probe, add from pasted project references, toggle, remove, rotate credentials. Official dsh-mcp-client contract compliant.
★ 0
NOASSERTION
JavaScript
Oct 14, 2026
dsh plugin --profile web add @dsh-contrib/dsh-mcp-managerby Emilia-awa
Embedded MCP server letting external agents (Hermes, Claude Code, etc.) drive DeepSeek Harness over StreamableHTTP: sync/async task execution, a three-tier file sandbox, a Web-backed approval bridge,
★ 6
↓ 539/wk
GPL-3.0
JavaScript
Oct 6, 2026
dsh plugin --profile web add hermes-dsh-bridgeby CoderKuo
Manage the MCP servers of a DeepSeek Harness profile: status, switch, edit, export; add from the official MCP Registry, by hand (tested first), or with AI; find local software that can be connected
★ 3
↓ 101/wk
MIT
JavaScript
Oct 14, 2026
dsh plugin --profile web add dsh-mcp-console