Introduction¶
DSH emphasizes the principle that “everything is a plugin”. When integrating MCP servers into DSH, manually maintaining configurations, checking mounting status, and managing start/stop and key references can be cumbersome. @fishlikewater/dsh-mcp-manager provides an “MCP Servers” entry in the DSH settings page. The host side hot-mounts or unmounts @deepseek-ai/dsh-mcp-client instances based on the configuration. The following introduces its features, installation methods, and important notes.
What is this¶
- Package name:
@fishlikewater/dsh-mcp-manager - Maintainer:
fishlikewater - License: MIT
- Node Requirement:
>=18
Positioning: MCP Server Manager.
It lists, adds, edits, and deletes MCP servers in the DSH settings page and persists the configuration to the mcp namespace (mcp.servers) in settings.yaml. The host side then dynamically mounts @deepseek-ai/dsh-mcp-client instances based on these configurations.
Provided by the host side at runtime:
@deepseek-ai/cordis ^4.0.1@deepseek-ai/dsh-mcp-client ^0.1.0-rc.6
Plugin dependencies:
@deepseek-ai/schemastery ^3.18.1
Core Features¶
Settings Page Management¶
The settings page allows listing, adding, editing, and deleting MCP servers and displays the mounting status.
Each server has an enabled toggle:
- Off (Disabled): Immediately stops the corresponding instance and removes the tools.
- On (Enabled): Remounts and registers the tools.
The toggle state persists with the configuration and remains after restarting DSH.
Transport Method¶
Supported:
stdio: local commandstreamable-http: remote URL
Real Mounting Status¶
Asynchronous events such as connection failure, reconnecting, reconnect success, and giving up on reconnection are reflected in real-time on the settings page, rather than simply displaying “mounted”.
Concurrent Save Protection¶
GET and POST carry a rev revision number to serve as an optimistic lock.
If the configuration has been modified in another window, the save request will return 409 and prompt for a refresh to avoid silent overwriting.
Server Options¶
Each server can be configured with:
toolCallTimeoutMs: tool call timeoutfailOnStartupError: reports an error on startup failure
Key References¶
Values for env / headers support:
env:NAMEcred:NAME
They are resolved at mount time; only the reference text is saved in settings.yaml.
Headless Profile¶
In a headless profile without a webServer service, the plugin skips the HTTP interface and only handles instance management.
Installation and Activation¶
First, ensure that dsh CLI and pnpm are installed; the dsh plugin command forwards to pnpm.
Install from npm:
dsh plugin --profile web add @fishlikewater/dsh-mcp-manager
Install from a local checkout:
dsh plugin --profile web add ./path/to/dsh-mcp-manager
Verify the composition tree:
dsh --profile web --dump-config
If the configuration is correct, you should see the mcp-manager line in the output.
Changes take effect after restarting the dsh process. Then, refresh the browser page and open “Settings → MCP Servers”.
Uninstall:
dsh plugin --profile web remove @fishlikewater/dsh-mcp-manager
Typical Usage¶
Initial Example¶
examples/mcp-servers.example.yaml provides an example of the mcp namespace in settings.yaml. You can merge it into:
$DSH_HOME/settings.yaml
and then adjust it from the settings page.
HTTP Interface¶
The settings page uses the following interfaces:
| Method | Path | Description |
|---|---|---|
| GET | /api/mcp/servers |
Returns { rev, servers, status } |
| POST | /api/mcp/servers |
Request body is { rev?, servers: [...] }, performs a full replacement and triggers remounting |
When rev does not match the current revision, return 409 and prompt for a refresh.
Save and Hot Reload¶
After saving, the configuration is written to the mcp namespace in settings.yaml and triggers the host side to remount.
After deleting or disabling a server, the corresponding instance stops and tools are removed; after enabling, it remounts.
Applicable Scenarios and Notes¶
Suitable for scenarios where you need to maintain multiple stdio or streamable-http MCP servers in DSH and want to start/stop, view status, use key references, and avoid conflicts between multiple windows.
Notes:
- The plugin runs with the permissions of the current
dshprocess. You should check the source code, dependencies, and license before installing. - The license is MIT.
- You need to restart the
dshprocess after installing or making changes to the plugin code; however, saving the configuration itself can take effect hot. - The package name uses the scoped version
@fishlikewater/dsh-mcp-manager; the unscopeddsh-mcp-manageris already taken by someone else. - The navigation icon on the settings page depends on the class name hash of the shell. If the selector fails after a DSH upgrade, it will fall back to the default gear icon, which does not affect functionality.
Conclusion¶
@fishlikewater/dsh-mcp-manager centralizes the configuration, start/stop, status, and key references of MCP servers in the DSH settings page, reducing manual maintenance costs.
GitHub:
https://github.com/fishlikewater/dsh-mcp-manager