Chhlafiu4312/dsh-mcp-bridge
dsh-mcp-connect
Zero-dependency MCP client bridge for DeepSeek Harness: connect stdio/HTTP MCP servers and auto-register their tools for the agent.
Install
npx @deepseek-ai/dsh plugin --profile web add "github:Chhlafiu4312/dsh-mcp-bridge#main"Restart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/chhlafiu4312-dsh-mcp-bridge)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from Chhlafiu4312/dsh-mcp-bridge, cleaned of badges and images.
dsh-mcp-bridge
Connect the entire MCP ecosystem to DeepSeek Harness with one file. Zero dependencies. No SDK.
Your DSH agent gets every tool from any MCP server — filesystem, GitHub, databases, search, memory, and thousands of community servers — as native tools it can call directly:
You: Create a GitHub PR for the changes in ./app
Agent: [calls mcp_github_create_pull_request] ✓ PR #42 created
✨ Why people use it
| 🔌 One line to 1000+ tools | The MCP ecosystem is the largest tool catalog for agents. This bridge plugs all of it into DSH. |
| 🪶 Zero dependencies | Raw JSON-RPC 2.0 over stdio, ~400 lines of plain JavaScript. No SDK, no native modules. |
| 🌐 stdio + HTTP/SSE | Local servers via command, remote servers via url (bridged through mcp-remote). |
| 🔁 Auto-registration | Every tool becomes mcp_<server>_<tool> the moment the server connects. |
| 🧹 Clean lifecycle | Child processes are terminated when the plugin stops or updates. |
| 🛡️ Honest boundaries | Unsupported JSON-Schema keywords degrade to open inputs — the MCP server stays the authority. |
🚀 Quick start
A. dsh plugin add (recommended — the repo is a dsh.bundle)
dsh plugin --profile web add "github:Chhlafiu4312/dsh-mcp-bridge#main"
Then restart dsh web and configure servers via DSH_MCP_SERVERS (see below).
B. Dynamic plugin (one session, no files)
Open a DSH session, ask your agent to run the bridge via cordis_define (paste the code from plugin.js), or define it yourself — then talk to it:
// code.host body — minimal form
return {
inject: ['subprocess', 'tools', 'timer'],
apply(ctx) {
// ... paste the body of plugin.js here ...
},
}
C. Permanent (agent preset)
# 1. create your preset directory
mkdir -p ~/.dsh/.agent-presets/mcp-agent
# 2. copy the repo files in
cp plugin.js ~/.dsh/.agent-presets/mcp-agent/
cp agent.cordis.yml.example ~/.dsh/.agent-presets/mcp-agent/agent.cordis.yml
cp preset.yml.example ~/.dsh/.agent-presets/mcp-agent/preset.yml
# 3. (optional) configure your servers
export DSH_MCP_SERVERS='[
{"id":"filesystem","command":"npx","args":["-y","@modelcontextprotocol/server-filesystem","~/projects"]},
{"id":"github","command":"npx","args":["-y","@modelcontextprotocol/server-github"],"env":{"GITHUB_PERSONAL_ACCESS_TOKEN":"your_github_token"}}
]'
# 4. start a session on the `mcp-agent` preset — done
The agent instantly sees tools like mcp_filesystem_list_directory, mcp_github_create_issue, … plus mcp_status to inspect every connection.
🔧 Configuration
Servers are a JSON array. Each entry is either stdio or url:
{
"id": "my-server", // tool prefix: mcp_<id>_<tool>
"command": "npx", // executable (stdio only)
"args": ["-y", "server-pkg"], // argv after the executable
"cwd": "/abs/path", // optional working directory
"env": { "KEY": "value" }, // optional environment
"url": "https://x.example/mcp", // or: remote HTTP/SSE via mcp-remote
"disabled": false, // keep configured but inactive
"allowTools": ["search_*"], // optional: register only these tools
"denyTools": ["delete_*"], // optional: hide these tools
"timeoutMs": 120000 // optional per-server call timeout
}
…
