dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Remote MCP servers for DeepSeek Harness: settings page, connection management, and mcp__<server>__<tool> registration in one plugin
Remote MCP servers for DeepSeek Harness — a settings page, connection management, and tool registration in one plugin (host half + browser half, one package, one loader row).
streamable-http, legacy sse, and auto — try streamable first, then fall back to SSE and record which one actually worked.mcp__<serverName>__<toolName>, so the model can call it directly.toolAllow per server (empty = all tools).@modelcontextprotocol/sdk 1.30+, declared as a peer dependency).This package is not on npm yet; install it from a checkout:
# from the Harness plugin manager, with the absolute package directory
plugin_manager install_bundle /path/to/dsh-mcp-hub
# or with the CLI
dsh plugin add /path/to/dsh-mcp-hub
Then restart DSH once. The MCP entry appears in Settings (between Agent presets and Undo).
The
package.jsondeclares@deepseek-ai/*and@modelcontextprotocol/sdkunderpeerDependencieson purpose: a plugin installed as a workspace link resolves host packages only for names declared there.
Servers live in this plugin's own volatile config, written by the Settings service:
- id: mcp-hub
name: dsh-mcp-hub
config:
servers:
- id: weather
name: weather # tool namespace: mcp__weather__<tool>
enabled: true
transport: auto # auto | http | sse
url: https://example.com/mcp
headers: {} # e.g. { Authorization: "Bearer ..." }
timeoutMs: 15000 # handshake / tools/list budget
toolCallTimeoutMs: 60000 # per tool call
toolAllow: [] # empty = expose every tool
# connection layer against the bundled mock fixture (7 assertions)
node --import ./test/sdk-hook.mjs test/connect.test.mjs
# tool adapter (15), failure diagnostics (10), panel render smoke test (12)
node --import ./test/sdk-hook.mjs test/tools.test.mjs
node test/diagnose.test.mjs
node test/render.test.mjs
node test/secrets.test.mjs
# the fixture itself, both transports
cd mock && PORT=8731 node server.mjs
If the MCP SDK is not resolvable from the checkout, point the tests at it:
DSH_MCP_SDK_BASE=/path/to/@modelcontextprotocol/sdk/dist/esm \
node --import ./test/sdk-hook.mjs test/connect.test.mjs
The repository root is the plugin package (index.js host half, client.js browser half, lib/ transports and tool projection), so it installs directly from a GitHub URL. mock/ is a dependency-free MCP fixture and tools/ holds the uninstall helper.
Releases are automated and gated on CI — no personal access token is stored anywhere:
version in package.jsonmaintest matrix (node 22 + 24) must pass; then the release job packs the tarball, writes SHA256SUMS, and creates the tag plus the GitHub releaseIf that version is already tagged the release job skips, so ordinary commits never publish. It authenticates with GitHub's own per-run GITHUB_TOKEN.
stdio, no local processes.remove_bundle (or dsh plugin remove) clears the dependency and the bundle selection and leaves the - id: mcp-hub config row plus the link: symlink behind. node tools/uninstall.mjs refuses to run while the plugin is still installed, then removes both leftovers and verifies the profile is clean. --dry-run, --keep-config (keep the server list for a reinstall) and --run-cli are supported._2, _3, …) and shown in the panel; a name that cannot be freed is reported instead of silently dropped.Authorization: !!js \Bearer ${process.env.MCP_TOKEN}``. The panel preserves such expressions across edits (it re-attaches them from the user layer), but it cannot create them for you.MIT — see LICENSE.