DSH Hub

Chhlafiu4312/dsh-mcp-bridge

dsh-mcp-connect

BundleWorkflow2 GitHub stars· updated 2026-08-16

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

dsh-mcp-connect DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/chhlafiu4312-dsh-mcp-bridge.svg)](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+ toolsThe MCP ecosystem is the largest tool catalog for agents. This bridge plugs all of it into DSH.
🪶 Zero dependenciesRaw JSON-RPC 2.0 over stdio, ~400 lines of plain JavaScript. No SDK, no native modules.
🌐 stdio + HTTP/SSELocal servers via command, remote servers via url (bridged through mcp-remote).
🔁 Auto-registrationEvery tool becomes mcp_<server>_<tool> the moment the server connects.
🧹 Clean lifecycleChild processes are terminated when the plugin stops or updates.
🛡️ Honest boundariesUnsupported 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
}

Related plugins