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 command
  • streamable-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 timeout
  • failOnStartupError: reports an error on startup failure

Key References

Values for env / headers support:

  • env:NAME
  • cred: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 dsh process. You should check the source code, dependencies, and license before installing.
  • The license is MIT.
  • You need to restart the dsh process 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 unscoped dsh-mcp-manager is 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