# dsh-mcp-ui Visual MCP server configuration for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): manage [Model Context Protocol](https://modelcontextprotocol.io/) servers right from the DSH Web settings UI. It wires the official `dsh-mcp-client` plugin instances for you — **save and it just works, no config files to hand-edit**. [中文文档](README.zh.md) ## Features - 🖥️ **Settings card UI** — manage servers under Settings > Plugins > Plugin Config > **MCP Servers**, same card style as other DSH plugins - 🔌 **Both transports** — stdio (local process) and streamable-http (remote URL) - 📝 **Full field coverage** — serverName, command/args/env/cwd, url/headers, tool-call timeout, startup-failure policy, auto-reconnect (toggle / delay / cap / attempts) - 🔄 **Hot sync** — saving mounts/unmounts the corresponding `dsh-mcp-client` instances host-side, **no dsh restart needed** - 🛡️ **Safe** — server list lives in `~/.dsh/settings.yaml`; secrets in `env` can be referenced as environment variables ## Install ```sh # from GitHub dsh plugin --profile web add github:quan-v/dsh-mcp-ui ``` > Published to npm later — once available, `dsh plugin --profile web add dsh-mcp-ui` also works. Restart `dsh web`, then find the **MCP Servers** card under Settings > Plugins > Plugin Config. ## Usage 1. Open the settings card, click **+ Add Server** 2. Fill in a unique `serverName` (model-facing tools are named `mcp____`) 3. Pick a transport (stdio / streamable-http / SSE) and fill the matching fields 4. Click **Save** — the host connects automatically and the server's tools become callable by the model ## Config storage The server list lives in the `mcp-ui:` section of `settings.yaml`, sibling to other plugin settings: ```yaml mcp-ui: servers: - serverName: github transport: stdio command: npx args: - -y - '@modelcontextprotocol/server-github' env: GITHUB_TOKEN: ${GITHUB_TOKEN} toolCallTimeoutMs: 60000 failOnStartupError: false reconnect: enabled: true initialDelayMs: 500 maxDelayMs: 30000 maxAttempts: 10 ``` ## Relationship with dsh-mcp-client This plugin does **not** implement the MCP protocol. It does two things: 1. Provides the settings card and stores your configuration in `settings.yaml` 2. Watches config changes host-side and mounts/unmounts `@deepseek-ai/dsh-mcp-client` instances via `ctx.plugin()` The official `dsh-mcp-client` handles the actual connections, tool discovery, and `mcp__server__tool` naming. ## Changelog ### 1.0.1 (2026-08-22) - Fix: add explicit `key` to the `settings.plugin.item` slot registration. DSH 0.1.1+ requires keyed slots to declare `options.key`; without it the plugin fails to load with `keyed slot "settings.plugin.item" requires options.key`. ## License MIT