Introduction

When using MCP in DeepSeek Harness, the model needs to know which tools are available to call. Existing approaches usually register the complete toolset of each MCP server into the prompt context; as servers and tools increase, this overhead increases with the number of available tools.

ben7am1n/dsh-mcp-proxy provides an alternative: registering only two proxy tools, mcp_discover and mcp_call, using lazy connection and a disk-based tool directory cache to handle subsequent discovery and invocation.

Plugin Positioning

dsh-mcp-proxy is a DSH plugin released by ben7am1n under the MIT license.

The core problem it solves is: when configuring multiple MCP servers, avoiding putting the complete schema of all tools into the context of every request.

Core Features

Two Proxy Tools

The plugin exposes two tools to the model:

  • mcp_discover: Search the tool directory by keywords to get server names, tool names, descriptions, and parameter names.
  • mcp_call: Specify the server and tool name, and invoke the tool by passing parameters as-is.

This means it does not register the complete toolset of every MCP server into the prompt.

Lazy Connection and Disk Cache

The plugin does not connect to MCP servers upon startup, but only when first discovered or first called.

It uses a tool directory cache on disk. It can answer even during cold starts; when a server is temporarily unavailable, it can still provide the discovery results of already connected servers.

Server Declaration

The plugin supports declaring MCP servers of type stdio or streamable-http via configuration.

servers defaults to an empty list.

Installation and Activation

The Node requirement declared in package.json is:

^22.19.0 || >=24.0.0

First, install the plugin:

dsh plugin --profile web add dsh-mcp-proxy

When activating specific MCP servers, you need to override the default row in the configuration and declare the servers list. Since servers defaults to an empty list, the plugin does not enable MCP servers for the user by default.

Typical Usage

  1. Use mcp_discover to find tools:
mcp_discover

It searches the tool directory by keywords and returns the server, tool name, description, and parameter names of the matched entries.

  1. Use mcp_call to invoke a tool:
mcp_call

It executes the call according to the server and tool name you specify, passing parameters as-is.

Trust Boundaries and Control

The plugin runs with the permissions of the current dsh process; each MCP server command is trusted executable code running outside the agent sandbox.

The plugin itself does not add approval gates. If you need to restrict mcp_call, it is recommended to reuse the tool control points in DSH:

tools/pre-execute
ctx.tools.guard()

You can also combine permission presets to place security policies in a unified location.

Applicable Scenarios and Considerations

Suitable for scenarios where many MCP servers are configured, but only a subset of tools are used in a single task.

Be aware of the costs associated with the proxy form:

  • If the model does not know the tool name, it adds one round trip for tool discovery.
  • Before tool invocation, the model sees parameter names rather than the full JSON schema.

Before installation, it is recommended to check the source code, license, Node version requirements, and the MCP server commands you intend to write to servers.

Conclusion

The value of dsh-mcp-proxy is compressing the persistent prompt cost of MCP tools to just two proxy tools while retaining the ability to discover and invoke them on demand.

GitHub:

  • https://github.com/ben7am1n/dsh-mcp-proxy