MCP server manager for DeepSeek Harness settings: add streamable-http or stdio servers, paste Postman-style headers, test connectivity, and toggle each tool so disabled ones never reach the model.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-mcp-tools
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:hxlog/dsh-mcp-tools
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
All-in-one MCP server management with per-tool switches. Disabled tools never reach the model: no context cost, no accidental calls.
✨ Features
| Capability | Details |
|---|---|
| Server management | Two transports: streamable-http (URL + headers) and stdio (command / args / env / cwd); fill fields or paste {"mcpServers": { ... }} to import many at once. |
| Postman-style secrets | Headers are key/value rows, not a JSON textarea; a default x-mcp-key row is provided, values are masked and can be revealed per row, duplicate names error inline. |
| Real per-tool control | Every tool is a chip; disable it and it disappears from the model's tool list entirely (not "registered then errors"). Search, select all, invert, disable all — hover for the full description. |
| Connectivity test & event log | Temporary connection: initialize → tools/list → close, reporting latency / protocol version / tool count without touching the live server. The "Recent events" log records connects, reloads, tests and failures. |
| Server toggle & config copy | Turning a server off disconnects it and unregisters all its tools (config kept); one click copies that server's mcpServers snippet. |
| Native DSH look | Reuses --dsw-* design tokens, flat rows and 32px inputs; light/dark and zh/en adapt automatically. The client is a classic script — no build step. |
🚀 Install
Requires DeepSeek Harness 0.2.x (Web GUI dsh web or DSH Desktop) and Node.js ≥ 22.13. Available on npm: dsh-mcp-tools.
⚠️ This is a DeepSeek Harness plugin, not a plain npm library:
npm i dsh-mcp-toolsonly downloads the package — it still has to be installed into a DSH profile as below.
From the Plugins page (recommended)
- Open DSH Web (or DSH Desktop) → Plugins in the sidebar (Desktop: Settings → Plugins).
- Choose Install, enter
dsh-mcp-tools, and confirm. - Enable the new bundle, refresh the page, then open Settings → MCP.
From the CLI
dsh plugin --profile web add dsh-mcp-tools # Web
dsh plugin --profile desktop add dsh-mcp-tools # Desktop
Upgrading the package requires a restart of
dsh web/ reopening DSH Desktop.
⚡ Quick start
- Settings → MCP → Add server: for remote servers enter the URL and paste the secret into the header row (default
x-mcp-key). - Hit Test connection — expect something like
connected · 95 tools · 478 ms— then save and flip the server switch on. - Let the model call the tools; DSH registers them as
mcp__<server>__<tool>. Disable unused tools to shrink the tool schema in every request.
🖼 More screenshots
| Dark mode | Some tools disabled |
|---|---|
Paste mcpServers JSON |
Tool tooltip |
|---|---|
🧩 How it works
DeepSeek Harness Web (dsh web)
├── Host plugin (lib/) ← cordis bundle patch, reuses the native MCP client
│ ├── manager.js connect, register tools, enable/disable
│ ├── store.js ~/.dsh/dsh-mcp-tools/state.json (atomic writes, watches external edits)
│ └── routes.js /mcp-tools/api/*
└── Client bundle (client/client.js)
└── Settings section "MCP" (id: mcp, order: 18) — classic script, no build
- Enable/disable happens at registration time, not call time: disabled tools never appear in the model's tool list.
- State lives in
~/.dsh/dsh-mcp-tools/state.json, written atomically; external edits are watched and hot-applied. - REST API:
GET /mcp-tools/api/state,POST /servers/{test,save,delete,toggle,refresh},POST /tools/{toggle,bulk},POST /import,POST /reload,GET /logs. See docs/API.md.
🔒 Security
- Headers are stored in plain text in the local state file — local only; never commit or sync it to a public location.
- Use a dedicated, least-privilege key for every MCP server.
- No network requests beyond the MCP servers you configure, and no telemetry; deleting a server removes its tools from subsequent requests.
🛠 Development
git clone https://github.com/hxlog/dsh-mcp-tools.git
cd dsh-mcp-tools
node --check client/client.js
npm run selftest
Link the source tree into a profile instead of installing a copy (Windows example):
rmdir "C:\Users\<you>\.dsh\profiles\web\node_modules\dsh-mcp-tools"
mklink /J "C:\Users\<you>\.dsh\profiles\web\node_modules\dsh-mcp-tools" "D:\path\to\dsh-mcp-tools"
- Client changes: just refresh the page; the bundle is served from disk, no build.
- Host changes: touch the profile's
cordis.patch.yml(e.g. append a comment) to trigger HMR; once the log showsMCP 管理器已启动it is active. - The panel is a single classic script and may only
requirereactand@deepseek-ai/dsh-client-ui-primitives.
❓ FAQ
| Question | Answer |
|---|---|
| No MCP section in Settings | The bundle is probably not enabled — confirm on the Plugins page, refresh, restart dsh web if needed. |
| Tools missing in a session | Make sure the server switch is on and the tool chips are enabled; disabled tools are never registered. |
| Connection test fails | Check the URL, that the server speaks streamable-http (not plain SSE), and the header names; network/proxy problems surface here too. |
| Where is the state file? | ~/.dsh/dsh-mcp-tools/state.json; delete it to reset to empty — it is recreated on next start. |
📄 License
MIT · Powered by DeepSeek Harness
Links
More in this category
Tencent/WeKnora#dsh-weknora★ 35014
Four read-only tools over a WeKnora knowledge base: list knowledge bases, hybrid passage search, reassemble one document's chunks in order, and WeKnora's own cited RAG or ReAct-agent answer with a resumable session id.
superdesigndev/treg★ 5944
Tool catalog for agents: search ~2,600 external endpoints (SEO and SERP, backlinks, social, people and company enrichment, ad libraries, scraping) by the task you want done, read each one's parameters and per-call price, then call it with the credential injected server-side. Ships the skill plus an MCP row that stays disabled until TREG_TOKEN is set.
T-Auto/dsh-ops★ 3709
Provides bash, PowerShell 7, and high-performance Rust tools for DSH on Windows to reduce token usage.
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1141
Tencent CloudBase backend for DeepSeek Harness — scaffold and deploy full-stack apps from chat, render query results as table cards with paging, sorting and CSV export, preview a deployment on its domain, and call the CloudBase MCP toolset (`mcp__cloudbase__*`) with device-code login.
sixtysevenlf/dsh-blender-plugin★ 1019
Lets a DSH agent drive a local Blender over a direct TCP channel with 16 tools: viewport frames, custom-angle renders, Python execution, headless and job offload, transaction rollback, and a planning layer of 186 ops across 28 families.
anysearch-team/anysearch-dsh★ 634
AnySearch-powered real-time web and vertical search provider for DeepSeek Harness.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.