← Back to home@tang-coder-hub

dsh-mcp-hub

通用 MCP 服务器管理页(仅官方组件):在 DSH 设置里增删改任意 MCP 服务(stdio / streamable-http),一键写入 profile 注册块,可探测连通性与工具列表。内置 GitHub 官方 MCP Server 预设。

Stars
0
Language
JavaScript
Created
Oct 1, 2026
Updated
Oct 1, 2026

Introduction

dsh-mcp-hub — 通用 MCP 服务器管理页

CI License: MIT Node

在 DSH 的「设置 → MCP 服务器」里增删改任意 MCP 服务(stdio 或 streamable-http), 校验通过后一键写入 profile 的注册块,重启后即可在会话里使用。

只用官方组件:承载连接的是 DSH 自带的 @deepseek-ai/dsh-mcp-client, 本插件不做任何协议实现,只负责配置的表单化、校验与落盘。

页面是目录优先的:上面一排服务卡片(GitHub、Notion、Linear、Sentry), 点一下就添加;然后出现凭证面板,带一个「在浏览器打开凭证页」的按钮跳到厂商自己的 token 创建页;粘贴回来保存,再「应用到 DSH」。

内置四个预设,全部指向厂商自己发布的端点:

服务端点凭证
GitHubhttps://api.githubcopilot.com/mcp/fine-grained PAT
Notionhttps://mcp.notion.com/mcpInternal Integration Token
Linearhttps://mcp.linear.app/ssePersonal API Key
Sentryhttps://mcp.sentry.dev/mcpAuth Token

目录刻意保持很小 —— 只收录厂商文档里明确给出的端点,不猜、不代填。 要接别的服务,用底部的「自定义 / 高级」表单,stdio 与任意 URL 都能填。

用法

  1. 设置 → MCP 服务器 → 目录里点一个服务
  2. 凭证面板里「↗ 在浏览器打开凭证页」→ 创建 → 粘贴回来 → 保存
  3. (可选)「探测」—— 真的发一次握手,成功列出工具数量,401 明确说凭证无效
  4. 点 应用到 DSH → 重启 DSH
  5. 会话里工具以 mcp__<服务名>__<工具名> 出现

凭证以明文写在 profile 的补丁文件里(这是官方客户端的工作方式),页面会提醒你。 想要更安全,可以用只读 scope 的 token,或只授权你真正需要的仓库。

探测

  • stdio:作为子进程启动,跑 initialize + tools/list,读它的 stdout
  • streamable-http:发一次真正的 JSON-RPC 握手;非 200 会带上状态码, 401/403 明确提示凭证无效,超时单独报 timeout

工程约束(前一个插件踩过的坑,这里都有回归测试)

坑约束
loader 条目按 id 寻址,profile 补丁层在 bundle 层之后应用,重名会静默替换插件自己的 bundle id 是 mcp-hub,生成的行全部落在 mcp-hub__<服务名> 命名空间下,结构上不可能相撞
官方客户端要求 env/headers 是 {[key]: string}所有值在宿主侧强制转字符串,YAML 标量一律加引号
桌面宿主不导出 DSH_PROFILE_DIRprofile 目录从 process.argv 找,判定来源显示在页面上
serverName 必须全局唯一,否则官方客户端启动即抛错列表内查重 + 与官方 pattern 一致
应用被无效配置阻止时不能留下半个块apply 前整体校验,任一失败就整体拒绝且不写盘

验证

node scripts\verify.mjs

60 项检查,全部离线(不需要 DSH 在运行),包括:

  • 生成的 YAML 用真实解析器回读,逐字段断言类型(上次 false/1 被解析成布尔和数字导致校验失败,就是这里抓出来的)
  • 两个 id 不相同的回归断言
  • stdio 探测真的启动了一个假 MCP 服务并列出工具
  • HTTP 探测打到一个本地假服务,200 与 401 两条路都走
  • 应用被无效配置阻止时,profile 不被触碰
  • profile 目录在缺少 DSH_PROFILE_DIR 时仍能找对