前言¶
在 DeepSeek Harness(DSH)里接 MCP 服务器,内置的 @deepseek-ai/dsh-mcp-client 只支持在配置里写静态 headers,没有 OAuth,也不支持本地 stdio 进程。远程服务要 OAuth 登录、本地工具要用 npx / uvx 起子进程时,就得自己改配置或绕路。
dsh-mcp-manager 是社区维护者 hyqhyq3 发布的 DSH 插件,在 Web UI 的 Settings → MCP 页面集中管理 MCP 服务器:HTTP 远程服务可走浏览器 OAuth 或静态 Bearer token,本地服务可走 stdio,工具按 mcp__<name>__* 命名注册到 DSH 工具表。下面介绍它的定位、能力与用法。
这是什么¶
dsh-mcp-manager(GitHub:hyqhyq3/dsh-mcp-manager,当前版本 0.6.0,MIT 许可证)是面向 DSH web profile 的 MCP 服务器管理插件。它通过 cordis.patch.yml 自动注入,无需手改 cordis.patch.yml。
分类上属于 admin-security:OAuth 凭据与服务器配置落在本地状态文件,静态 token 只记环境变量名、不落盘明文。
核心功能¶
OAuth 与静态 token 认证¶
HTTP 类型服务器支持两种认证:
- OAuth(authorization code + PKCE):支持 RFC 7591 动态客户端注册、
refresh_token轮换,重启后自动重连。在 UI 点 去认证 (Authenticate),浏览器完成授权后工具立即注册。回调地址为http://127.0.0.1:<port>/mcp-manager/callback/<id>,OAuth 提供方须允许 loopback redirect;来源取自浏览器当前访问 DSH GUI 的 host/port。 - 静态 Bearer token:配置里填写持有 token 的环境变量名(Codex 风格的
tokenEnv),token 本身不写入配置文件。
此外支持自定义 HTTP 头:headers 写直接值,headerEnv 从环境变量读取,对应 Codex 的 http_headers / env_http_headers。
stdio 本地进程¶
stdio 类型可直接执行 npx、uvx、python 等命令,插件通过子进程 stdin/stdout 走 JSON-RPC;进程退出后会重连并回收。Windows 10/11 上通过 cmd.exe 启动,以正确解析 npx.cmd 等 shim。
就地编辑与工作区隔离¶
可在 UI 中重命名服务器、在 stdio 与 HTTP 之间切换、改认证或 headers,无需删后重建。
全局服务器在任意工作区可见;工作区级服务器写在 <workspace>/.dsh/dshmm/mcp.json,其工具只注册到该工作区会话。工作区配置里可用 exclude 屏蔽指定全局服务器。示例:
{
"mcpServers": {
"filesystem": { "type": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "."] },
"unity-mcp": { "type": "http", "url": "http://localhost:8090/", "authMode": "static", "tokenEnv": "UNITY_MCP_TOKEN" }
},
"exclude": ["github"]
}
手改该文件会热加载;JSON 无效时显示错误,上一份有效配置继续生效。
工具注册与按需代理¶
默认关闭「On-demand MCP tool calls」时,每个已连接服务器的工具作为一等工具暴露,命名与内置客户端一致,例如服务器名 odin:
mcp__odin__search_tools mcp__odin__describe_tool
mcp__odin__execute_tool mcp__odin__list_tool_scopes
开启按需模式后,模型侧只看到三个代理工具:mcp_search_tools、mcp_describe_tool、mcp_execute_tool。原始 mcp__* 名不会出现在请求里,直接调用会被拒绝。mcp_search_tools 默认最多返回 10 条匹配(硬上限 20),按服务器名、工具名、描述打分。
notifications/tools/list_changed 触发时,stdio 与 Streamable HTTP 服务器只对新增、删除或 schema 变更的工具做增量刷新。
状态持久化在 ~/.dsh/mcp-manager.json(服务器配置、OAuth 客户端注册与 token;静态 token 仅存环境变量名)。
安装与启用¶
环境要求:
- DSH
webprofile(npx @deepseek-ai/dsh web) - Node.js
^22.19或>=24,且pnpm在PATH上
官方安装命令:
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:hyqhyq3/dsh-mcp-manager
安装后重启 dsh --profile web 并刷新页面。包内声明了 dsh.bundle.patch,插件会自动激活。
典型用法¶
- 打开 DSH Web UI 的 Settings → MCP。
- 点 + Add MCP server(之后可用 编辑 / Edit 修改):
- Scope(作用域):user为全局;workspace绑定单个工作区,配置写入该工作区的.dsh/dshmm/mcp.json。
- HTTP:填写名称(成为mcp__<name>__*前缀)、URL、认证模式(OAuth 或 static token)、可选 headers。
- stdio:填写名称、命令、参数(每行一个)、环境变量、可选工作目录。 - OAuth 服务器:点 去认证 → 浏览器登录 → 回调后工具立即注册。
- 静态 token 服务器:填写环境变量名(如
MCP_BEARER_TOKEN),保存后 stdio 会立即拉起并连接。 - 可选:在页面顶部开启 On-demand MCP tool calls;该设置按 profile 持久化,现有会话在下一次请求时生效。
状态徽标包括 connected (N tools)、needs-auth、authorizing、error、disabled。可对每条服务器执行认证、编辑、启用/禁用、删除。Disable 会注销工具并断开连接,配置与 OAuth token 保留;Enable 重连且无需重新认证。禁用状态跨重启保持。
适用场景与注意¶
适合在 DSH Web 环境里统一管理多 MCP 源的场景:需要 OAuth 的远程 HTTP 服务、仅需 Bearer token 的 API、以及本地 stdio 工具链。工作区隔离适合「全局 GitHub MCP + 某项目专用 filesystem MCP」这类组合。
使用前注意:
- 插件以当前
dsh进程权限运行 stdio 子进程并读写~/.dsh/mcp-manager.json;安装前应查看 GitHub 源码 与 MIT 许可证,确认符合你的安全策略。 - OAuth 提供方必须支持 loopback redirect;静态 token 须事先在环境中导出对应变量。
- 按需代理默认关闭;若工具很多、希望压缩 Native 模式下的 schema 体积,可在 Settings → MCP 顶部开启。
SkillHub 目录页(社区站点,与 DeepSeek / 幻方无官方从属关系)当前显示该插件约 11 stars、2 forks,分类 admin-security。
链接¶
- 目录页:https://www.skillhub.cn/plugins/hyqhyq3/dsh-mcp-manager
- GitHub:https://github.com/hyqhyq3/dsh-mcp-manager
经过上面的步骤,DSH 用户可以在一个 Settings 页面完成 MCP 的添加、认证、工作区隔离与工具暴露,补齐内置 MCP 客户端在 OAuth 与 stdio 上的缺口。