In the DeepSeek Harness (DSH) development workflow, managing MCP servers (@deepseek-ai/dsh-mcp-client) typically involves manually editing configuration files, handling YAML syntax, and restarting the Web process for changes to take effect. The dsh-mcp-manager plugin provides a Web interface for this process, supporting CRUD operations and real-time connection status monitoring, and enabling zero-restart updates through a hot-reload mechanism.
Core Features¶
The plugin adds a dedicated MCP Services page to the DSH Web settings panel, with the following capabilities:
- Settings entry: The page is located under
Settings → MCP Services, at the same level as General Settings, Models, and Plugins. - Full CRUD: Supports both stdio and streamable-http transport protocols. Forms allow configuring command-line parameters (command/args/cwd/env) or the URL and Headers of an HTTP server.
- Real-time connection status: Each list row displays the server connection status and the number of registered tools. A manual refresh button is provided, and the background also uses a 30-second polling mechanism.
- No restart required: After a configuration change, the plugin rewrites the profile’s
cordis.patch.yml. The host performs a transactional hot reload through Cordis HMR, anddsh-mcp-clientreconnects in place. - YAML safety: The built-in parser automatically handles YAML reserved characters (such as
-yand@pkg/name), ensuring that the generated configuration file is always parsed correctly.
Installation and Activation¶
Before use, make sure the DSH Web profile is installed (default: web).
- Install dependencies: Run the installation command in the profile directory.
cd "$DSH_HOME/profiles/web"
pnpm add dsh-mcp-manager
- Add configuration: Add the plugin entry to the profile’s
cordis.patch.yml.
- insert:
- id: mcp-manager
name: dsh-mcp-manager
- Activate: Restart
dsh web(or wait for HMR hot mounting to take effect), then refresh the browser to see theMCP Servicesentry in the settings menu.
Typical Usage¶
Web Interface Operations¶
The settings page displays the server list as a table with the following columns:
- Server: Displays the server name and configuration ID.
- Status: Green indicates connected (shows the tool count), and gray indicates disconnected (hover to view details).
- Env: Displays environment variable key names (specific values are visible in edit mode).
- Actions: Edit (opens a form containing the full configuration) or Delete (requires confirmation).
Clicking the Refresh button next to the title immediately probes the connection status of all servers.
HTTP API¶
The plugin provides same-origin HTTP endpoints that can be called from scripts or external programs:
- List servers:
GET /mcp-manager/servers
Returns the server list and connection status (connected,toolCount). - Create or update:
POST /mcp-manager/servers
Submit a JSON body. Ifidexists, update the server; otherwise, create a new one. - Delete:
DELETE /mcp-manager/servers/:id
Deletes the server configuration for the specified ID.
Write operations are serialized through a single queue to prevent concurrent editing conflicts.
Notes¶
- Configuration storage: The plugin does not maintain a separate server store. Managed servers are the
@deepseek-ai/dsh-mcp-clientconfiguration lines in thecordis.patch.ymlfile. - Profile target: By default, it manages the
webprofile. You can change the plugin configuration itemconfig.targetProfileto manage another profile. - Windows compatibility: On Windows, starting some MCP servers (such as
@modelcontextprotocol/server-filesystem) withnpxmay fail due to npm configuration warnings or cmd binary-path resolution issues. It is recommended to use the full command path directly or switch to streamable-http transport.
With dsh-mcp-manager, developers can maintain MCP servers directly from the Web interface, avoiding manual YAML file editing and process restarts. For more details, see the GitHub repository.