dsh-plugin-mcp
Universal Model Context Protocol (MCP) Bridge Plugin for DeepSeek Harness (dsh) — Everything is a Plugin
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 21, 2026
- Updated
- Aug 21, 2026
Introduction
dsh-plugin-mcp
Universal Model Context Protocol (MCP) Bridge Plugin for DeepSeek Harness (
dsh)
dsh-plugin-mcp is an official-standard plugin for DeepSeek Harness that seamlessly connects your DeepSeek agents to the entire ecosystem of Model Context Protocol (MCP) servers with full Claude Code-level feature parity.
See our complete ROADMAP.md for current features and upcoming milestones.
Features
- 🔌 Universal MCP Support: Run any MCP server over
stdio,sse, orwebsocket. - 📁 Multi-Scope Configurations: Automatically loads user global (
~/.dsh/mcp.json), project local (.dsh/mcp.json), and profile-level configurations. - 🛡️ Execution Permissions: Granular
allow,ask, anddenypermission rules for tool safety. - 🛠️ Automatic Tool Bridging: Dynamically registers MCP tools into the DSH tool registry with JSON Schema validation.
- 📂 Resource & Prompt Bridge: Exposes MCP resources and prompt templates directly into agent context.
- ⚡ Resilient Execution: Isolated server lifecycles, per-server timeout controls, and non-blocking error handling.
- 🏷️ Clean Namespacing: Automatic tool name prefixing (
github_create_issue,postgres_query) to avoid name collisions across servers. - 🧩 Cordis Native: Built directly on Cordis lifecycle hooks (
ctx.provide,ctx.on('ready'),ctx.on('dispose')).
Installation
In DeepSeek Harness (dsh)
# Add from GitHub
dsh plugin --profile web add "github:menotbobbybrown/dsh-plugin-mcp"
# Or install via npm
dsh plugin --profile web add dsh-plugin-mcp
Configuration
Add the plugin to your dsh.config.yaml:
plugins:
mcp:
prefixToolNames: true
prefixDelimiter: "_"
defaultTimeoutMs: 60000
servers:
# GitHub MCP Server
github:
type: stdio
command: npx
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_TOKEN}"
# Local Filesystem MCP Server
filesystem:
type: stdio
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "./workspace"]
# PostgreSQL Database MCP Server
postgres:
type: stdio
command: npx
args: ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost:5432/mydb"]
# Remote MCP Server via SSE
remote_service:
type: sse
url: "https://mcp.example.com/sse"
headers:
Authorization: "Bearer ${API_KEY}"
Programmatic Usage (Cordis API)
import { Context } from 'cordis';
import * as McpPlugin from 'dsh-plugin-mcp';
const ctx = new Context();
ctx.plugin(McpPlugin, {
servers: {
github: {
command: 'npx',
args: ['-y', '@modelcontextprotocol/server-github'],
},
},
});
// Access registered MCP tools & services
const tools = await ctx.mcp.getAllTools();
const statuses = ctx.mcp.getStatuses();
Development & Testing
# Install dependencies
npm install
# Run unit tests
npm test
# Build package
npm run build
License
MIT © DeepSeek Harness Community