Introduction

When developing agents with DSH (DeepSeek Harness), managing multiple MCP (Model Context Protocol) services can become cumbersome. Manually maintaining configuration files, handling service mounting and unmounting, and viewing tool contracts without exposing sensitive information are common pain points.

What Is This

@sduwall/dsh-wall-mcp-manager is a DSH plugin maintained by developer sduwall. Its core purpose is to centrally manage MCP service configurations and display the tools, invocation parameters, and return contracts provided by each service. It does not implement the MCP protocol directly; instead, it uses a “reconciliation” mechanism to converge the configuration manifest into runtime MCP instances.

Core Features

This plugin provides the following capabilities:
1. Centralized Management: All MCP service configurations are managed uniformly under the dsh-wall-mcp-manager namespace.
2. Automatic Reconciliation: Mounting, updating, or unmounting operations are automatically performed based on the configuration manifest. Changes take effect without restarting DSH, and consecutive save operations are serialized.
3. Contract Display: The settings interface displays each service’s tool list, parameter definitions, and return structure.
4. Secure Credentials: Supports credential masking for environment variables and request headers. Credential values and key names never leave the host; the interface only displays “Configured / Not Configured”.

Installation and Dependencies

This plugin is built on Cordis Bundle and is part of the DSH ecosystem.
- Dependency Environment:
- DSH >= 0.1.2-alpha (recommend >= 0.1.2-alpha.2)
- Node.js >= 20 (DSH built-in Node.js version >= 22)
- Hard Dependency Services: loader, tools
- Optional Services: settings (for hot-applied configuration), webServer (for the settings interface)

Typical Usage

Define services under the dsh-wall-mcp-manager namespace in a configuration file (usually settings.yaml):

dsh-wall-mcp-manager:
  servers:
    filesystem:
      enabled: true
      transport: stdio
      description: 本地文件访问
      command: npx
      args:
        - -y
        - '@modelcontextprotocol/server-filesystem'
        - D:/workspace
      env:
        LANG: zh_CN
      secretEnv:  # 凭据类环境变量,永不出网
        API_TOKEN: xxx
      toolCallTimeoutMs: 60000
    weather:
      transport: streamable-http
      url: https://mcp.example.com/mcp
      headers:
        X-Trace: 'on'
      secretHeaders:  # 凭据类请求头
        Authorization: Bearer xxx

Key Conventions:
- Tool Naming: The public tool name inside DSH is mcp__<serverName>__<originalToolName>.
- Renaming Changes the Service: Modifying serverName resets all tools for that service, so renaming is equivalent to replacing the service.
- Credential Fields: secretEnv and secretHeaders must be explicitly configured (do not write {}); leaving them blank means no modification.

Interface and Limitations

  • Local Loopback Validation: The settings interface depends on DSH’s Web service and only allows access via 127.0.0.1 or ::1. When accessing the GUI through a remote address, configuration cannot be read or written.
  • No Credential Echo: The interface only shows whether credentials are configured; it does not display the actual values. Leaving a field blank during write operations means no modification.
  • Partial State Protection: Configuration validation failures (such as a missing command or invalid name) will only skip the applicable entry and will not cause the entire plugin to be uninstalled.

Use Cases and Security

  • Use Cases: Developers who need to frequently add, delete, or modify MCP services; who want to dynamically adjust service states without restarting DSH; and who need to intuitively view tool contracts through the interface.
  • Permissions and Security Boundaries:
  • Command Execution: Can spawn local child processes (executed with DSH’s process identity); ensure the source is trusted.
  • Network Access: Connects only through configured remote URLs; the configuration bridge only listens on the local loopback, avoiding permission leakage.
  • File Access: Does not read or write the user file system; it only reads and writes configuration in memory.

Conclusion

By using centralized configuration and hot-applied changes, this plugin reduces the management cost of MCP services and ensures security through strict credential masking. For more details, see the official catalog or the source repository.