dsh-plugin-mcp
模型与 MCP 活跃维护

dsh-plugin-mcp

menotbobbybrown/dsh-plugin-mcp

该插件遵循通用MCP协议标准,可作为MCP生态服务与dsh的桥接层,安装后即可让dsh直接调用MCP协议支持的工具、数据资源,无需额外复杂适配配置。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
TypeScript
主要语言
None
开源协议
182 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:menotbobbybrown/dsh-plugin-mcp
git clone https://github.com/menotbobbybrown/dsh-plugin-mcp.git
git clone git@github.com:menotbobbybrown/dsh-plugin-mcp.git
README.md main

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.
  • 🔒 Enterprise Security Engine: Automatic secrets redaction (API keys/bearer tokens), command injection guards, and path traversal defenses.
  • 🚦 Circuit Breaker & Rate Limiting: Fault tolerance prevents runaway loops and token quota exhaustion on failing servers.
  • 📜 Security Audit Logging: Structured JSON logging of all tool invocations, permissions verdicts, and safety events.
  • 🔍 Semantic Tool Search: TF-IDF token relevance scoring ensures only relevant tools are injected into prompt context.
  • 🗜️ Context Spillover Guard: Truncates massive outputs (>30k chars) and stores them as local artifacts with structured previews.
  • 🛠️ 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')).

⚡ 1-Line Docker Quickstart

Launch DeepSeek Harness + MCP bridge + PostgreSQL + Filesystem with 1 command:

# Clone and boot the complete stack
git clone https://github.com/menotbobbybrown/dsh-plugin-mcp.git
cd dsh-plugin-mcp

# On Linux/macOS:
./scripts/quickstart.sh

# On Windows PowerShell:
.\scripts\quickstart.ps1

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

💻 CLI Commands (dsh-mcp)

Manage MCP servers seamlessly from the terminal just like Claude Code:

# Browse verified built-in server catalog
npx dsh-mcp catalog

# 1-Click install popular servers (GitHub, Postgres, SQLite, Brave Search, etc.)
npx dsh-mcp install github --scope user
npx dsh-mcp install postgres --scope project
npx dsh-mcp install sqlite --scope project

# List all configured MCP servers and their active scopes
npx dsh-mcp list

# Add a custom user-global MCP server (~/.dsh/mcp.json)
npx dsh-mcp add custom_srv --scope user -- npx -y my-mcp-server

# Add a project-local MCP server (.dsh/mcp.json)
npx dsh-mcp add postgres --scope project -- npx -y @modelcontextprotocol/server-postgres postgresql://localhost:5432/mydb

# Add an SSE remote MCP server
npx dsh-mcp add weather --transport sse -- https://weather-mcp.example.com/sse

# Test connection, latency, and tool discovery
npx dsh-mcp test github

# Remove an MCP server from configuration
npx dsh-mcp remove github --scope user

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