Back to home@menotbobbybrown

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)

npm version License: MIT DeepSeek Harness

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, or websocket.
  • 📁 Multi-Scope Configurations: Automatically loads user global (~/.dsh/mcp.json), project local (.dsh/mcp.json), and profile-level configurations.
  • 🛡️ Execution Permissions: Granular allow, ask, and deny permission 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