DSH Hub
dsh-mcp cover

ArvinQi/dsh-mcp

dsh-mcp

UIWorkflow8 GitHub stars· updated 2026-08-26

dsh-mcp is a community DeepSeek Harness plugin. Read the repository README before installing.

Install

npx @deepseek-ai/dsh plugin --profile web add dsh-mcp

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-mcp DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-mcp.svg)](https://dshhub.dev/plugins/dsh-mcp)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from ArvinQi/dsh-mcp, cleaned of badges and images.

dsh-mcp — MCP 管理界面 + tool search:稳定工具列表、命中缓存、不撑爆上下文

English | 简体中文

为什么用 dsh-mcp?

解决的核心问题:

  • MCP 工具全量注入烧 token:接入多个 MCP 服务器后工具可达上百个,每轮全量注入开销巨大。search 按需检索模式让模型通过 mcp_tool_search 热注入所需工具,大幅节省 token。
  • 工具列表反复更新破坏缓存tools/list_changed 通知会让同名工具被反复注销/重注册,系统提示词工具列表抖动、prompt cache 频繁失效。工具列表稳定化让未变化的工具保留原注册,最大化 cache 命中。
  • 没有可视化管理入口:服务器配置、启停、工具勾选全靠手工改文件。Settings → MCP 一站式可视化完成。

功能优势:

  • 可视化管理:服务器列表 / 新建 / 编辑 / 删除 / 测试连接 / 启停 / 刷新,全 UI 操作
  • 进程级环境变量:全局 KV 配置(默认展开、支持批量添加),服务器请求头 value 写 变量名${变量名} 即可在连接时自动替换为配置值(如 Authorization: Bearer ${TOKEN}
  • JSON 全量配置:「JSON 维护配置」面板以一段 JSON 数组查看/编辑全部服务器配置,应用即保存(新增/更新/删除)
  • 工具级精细控制:每个服务器展开工具列表,默认全选,可取消勾选只加载需要的部分
  • 图片结果透传:MCP 工具返回的图片(截图/图表等)经附件服务投影为图片引用进入模型上下文,带严格预检与有界降级文案(PR #4)
  • 双注入模式search(按需检索,省 token)与 full(全量注入)
  • 零 npm 依赖:直接对接 DeepSeek Harness 内部能力,安装即用
  • OAuth 认证支持streamable-http 服务器若走 MCP OAuth(授权码 + PKCE),连接时自动打开浏览器授权;token 与 client 信息持久化、由 SDK 自动刷新(24 小时内活跃自动续期),失效后自动重新授权
  • 三种安装方式:npm / GitHub git 源 / 本地 link;中英文界面与文档

功能

  • 托管 MCP 服务器注册表(host):持久化定义(storage-domain mcp_servers)、按服务器挂载 @deepseek-ai/dsh-mcp-client 实例、环境变量注入(明文入定义、secret 走 credentials)、 连接探测(test)。
  • Web 设置管理页(client):Settings → MCP,列表/编辑/删除/测试服务器。
  • OAuth 认证(host,lib/oauth.js):streamable-http 服务器遇 401 + OAuth 挑战时自动走 授权码 + PKCE 流程,打开浏览器授权、回环回调收码、token 持久化并按需自动刷新; 测试连接与挂载共用同一份 token。
  • Remote 自挂载:client 半部在 apply() 里自行 ctx.remote.$mount() 挂载 mcpManager 命名空间(原实现依赖 api-remotes 的 in-box 修改,独立版不再需要任何 in-box 包改动)。

结构

dsh-mcp/
├── package.json          name=dsh-mcp;dsh.client 声明;零 npm dependencies
├── lib/
│   ├── index.js          host 半部(McpManagerService,源自 mcp-manager 构建产物)
│   ├── mcp-client.js     vendored MCP 客户端(源自 @deepseek-ai/dsh-mcp-client,含工具列表稳定扩展)
│   ├── oauth.js          MCP OAuth 客户端提供者(授权码 + PKCE、回环回调、token 持久化)
│   ├── probe.js          vendored 连接探测(源自 mcp-client/src/probe.ts)
│   ├── transport.js      vendored 传输工厂(源自 mcp-client/src/transport.ts)
│   └── client.js         浏览器半部(esbuild 打包,ModuleLoader wire format)
├── src/client/           浏览器半部源码(TSX + CSS Modules + 本地 types + remote-contribution)
└── scripts/build.mjs     构建脚本(esbuild 取自 DSH checkout,见下)

构建

node scripts/build.mjs
  • esbuild 从 DSH 源码 checkout 解析:$DSH_SOURCE 未设置时尝试 ~/.dsh/source/current
  • 运行时依赖(@deepseek-ai/*zod@modelcontextprotocol/sdk)不装 npm 包, 从 $DSH_HOME/profiles/node_modules(DSH profiles 模块 fallback,$DSH_HOME 默认 ~/.dsh)解析;构建时经 nodePaths 指向同一目录。
  • CSS Modules 由 esbuild onLoad 插件处理:样式注入 <style data-plugin="dsh-mcp" data-file="…">,默认导出 identity 类名映射。

安装使用

1. 安装

方式一:npm(发布到 npm 后)

dsh plugin --profile web add dsh-mcp

方式二:GitHub git 源

dsh plugin --profile web add github:ArvinQi/dsh-mcp
# 或
dsh plugin --profile web add git+https://github.com/ArvinQi/dsh-mcp.git

方式三:本地开发(link)

dsh plugin --profile web add link:<本仓库绝对路径>

注意:本地 link: 安装时,插件目录内含 node_modules -> $DSH_HOME/profiles/node_modules symlink(本机开发用,不入库),否则 link: 安装的 symlink 被 realpath 后无法解析 @deepseek-ai/*

2. 注册与生效(三种方式通用)

$DSH_HOME/profiles/web/cordis.patch.yml$DSH_HOME 默认 ~/.dsh)追加:

- insert:
    - id: dsh-mcp
      name: dsh-mcp

⚠️ 这一步必须手动完成:dsh-mcp 未声明 dsh.bundledsh plugin add 只负责把包装进 profile,不会自动进入运行组合。漏掉注册行则插件完全不生效。

然后重启 dsh web,并硬刷新浏览器Cmd/Ctrl + Shift + R):

Related plugins