Bundle
dsh-mcp-servers
DeepSeek Harness bundle that exposes Model Context Protocol (MCP) servers — stdio, streamable HTTP and legacy SSE — as native Harness tools, with a settings UI, live status, auto-reconnect, and backup/restore via local files or WebDAV.
- Source
- meltartica
- License
- MIT
- Updated
- Updated 3 days ago
Readme
# dsh-mcp-servers Expose [Model Context Protocol](https://modelcontextprotocol.io) servers as tools inside [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness). A dsh **bundle** with both a server half (connects to MCP servers, registers their tools) and a client half (a settings UI in the web app). Made with DeepSeek V4 Flash. ## Features - **stdio, streamable http, and legacy SSE** transports — one shared endpoint field, tabs in the UI - **Tools registered automatically** under `mcp__<serverId>__<toolName>` — the same server-qualified shape the official `@deepseek-ai/dsh-mcp-client` and Claude Code use (e.g. server id `shadcn` → `mcp__shadcn__get_component`); names are normalized to `[A-Za-z0-9_-]`, capped at 64 chars, and get a deterministic 12-hex hash suffix when normalization/truncation would collide - **`tools/list_changed` re-sync** — when a server signals its tool list changed, the generation re-registers in place (old tools stay live until the new set registers) - **Live status dots** — green when connected, red with the reason on failure; auto-reconnects with backoff when a connection drops (idle SSE streams, crashed processes) - **Test button** per card — probes connect + tool listing against the current draft without registering anything - **Edit cards** — type tabs, command/args textarea, env variables (or http headers) as key/value rows with show/hide values, paste `.env` from the clipboard, enabled switch - **Tabs**: All / Local / Remote / Backup & Restore - **Backup & Restore**: export/import the server list as JSON (with inline preview), and optional **WebDAV sync** (push/pull, https-only, Basic auth) plus an optional **daily automatic backup at 12:00 PM** — password stored server-side as a secret, never sent back to the browser ## Install Requires DeepSeek Harness with the `dsh` CLI. ```sh # from a directory containing this repo (or publish it, then use the bare name); # <name> is the profile you boot, e.g. `web` dsh plugin --profile <name> add ./dsh-mcp-servers dsh --profile <name> ``` Then open Settings → **MCP Servers**, add a server, hit **Test**, and **Save**. ### Other install methods From a built tarball (`npm run pack` produces `dsh-mcp-servers-<version>.tgz`): ```sh dsh plugin --profile <name> add ./dsh-mcp-servers-<version>.tgz ``` Rebuild after changes with `npm run build` — profiles load the built `dist/` and `client/client.js`, not the sources. ## Configuration ### stdio server | field | example | | --- | --- | | type | `stdio` | | command | `npx` | | command args | `-y`<br>`@modelcontextprotocol/server-everything` (one per line, first line is the command) | | env | key/value rows, e.g. `API_KEY` / your token | ### http / sse server | field | example | | --- | --- | | type | `http` (streamable) or `sse` (legacy event-stream) | | url | `https://example.com/mcp` or `https://example.com/sse` | | headers | key/value rows (e.g. `Authorization` / `Bearer …`) | ### Backup & Restore - **Local file**: export the current config (all servers, endpoints, env, headers) as JSON, import it back, or preview what would be exported. - **WebDAV**: URL, username, password (https only), Push/Pull. Toggle **Back up daily at 12:00 PM** to auto-push every day at noon local time. ## Development ```sh npm install # note: .npmrc sets legacy-peer-deps (two framework rc lines) npm run build # server dist/ + client bundle npm run check # typecheck (server + client) + sanitizer test npm run pack # build + produce dsh-mcp-servers-<version>.tgz npm run publish:npm # build + publish to npm (run `npm login` first) ``` Versioning is build-based: `1.<YYMMDD>.<build>` (e.g. `1.260817.1`); the counter increments on every build and resets each day. The client UI follows the Harness design system: primitives are host-injected externals (`@deepseek-ai/dsh-client-ui-primitives`) and native controls use `--dsw-*` theme tokens with hex fallbacks. ## Notes / limitations - Tool input schemas are whitelist-stripped to the Harness-supported JSON Schema subset (`src/sanitize.ts`); unsupported keywords (`minLength`, `format`, `anyOf`, schema-form `additionalProperties`) are dropped. - MCP results render as text; image/resource blocks collapse to JSON/text, not rich blocks. - WebDAV requires an https endpoint; credentials in the URL are rejected (passed separately). - Config/WebDAV routes are loopback-only.
Install
dsh plugin --profile web add github:meltartica/dsh-mcp-servers
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-mcp-servers from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.