前言¶
DeepSeek Harness(dsh)是 DeepSeek 开源的智能体运行时,官方仓库把它概括成一句话:一切皆插件。模型适配、工具、会话、沙箱和网页界面,都可以在配置层增删,不必改核心源码。项目目前仍是开发者预览,接口会继续变。社区里已经出现独立的插件目录站点,把 GitHub 上带 dsh-plugin 话题的仓库集中展示;需要说明的是,这类目录与 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。
日常用 dsh web 跑智能体时,很多人会把外部能力接到 MCP(Model Context Protocol)上:远程 HTTP 服务、本机用 npx / uvx 拉起的进程,都算常见接法。DSH 自带的 @deepseek-ai/dsh-mcp-client 能挂静态 headers,但仓库 README 写明了两处缺口:没有 OAuth,也没有本地 stdio 传输。需要浏览器登录的远程 MCP,或者一条命令在本机起一个 MCP 进程,都得另找办法。
dsh-mcp-manager 把这件事收进 Web 界面的 设置 → MCP 页:添加一次服务器,HTTP 可以走浏览器 OAuth 或环境变量里的静态 token,stdio 可以直接拉起本地进程,工具再按 DSH 惯例注册成 mcp__<服务器名>__*。本文按社区目录详情页、GitHub 仓库 README(中英文)、package.json,以及官方 deepseek-ai/deepseek-harness 交叉核对后整理。
这是什么¶
dsh-mcp-manager 是一款面向 DeepSeek Harness Web 界面的开发与运行时插件,由 hyqhyq3 维护,采用 MIT 许可证,主要语言是 JavaScript。社区目录把它归在「开发与运行时」,收录日期是 2026-08-06。仓库创建于 2026-08-13;截至 2026-08-18,GitHub 显示 7 星,目录页上的数字是 6,星标会变,以仓库页面为准。package.json 里的版本是 0.6.0。
它解决的问题很具体:在设置页里集中管理 MCP 服务器,补上内置客户端缺的 OAuth 与本地 stdio。HTTP 服务器支持授权码 + PKCE,并按 RFC 7591 做动态客户端注册;没有 OAuth 的服务则用环境变量名引用 Bearer token,明文不写进配置。stdio 服务器由插件自己 spawn 子进程,走 stdin/stdout 上的 JSON-RPC。工具既可以直接暴露给模型,也可以打开可选的按需 broker,把模型侧表面收成三个固定工具。
核心功能¶
仓库 README 列出的能力可以分成几块,下面只写已经交叉核对过的部分。
-
设置页管理。client 半在
settings.section槽位挂一个 MCP 页签。添加、就地编辑、启用/禁用、删除都在同一页完成:可以改名字、在 stdio 与 HTTP 之间切换、改认证方式和标头,不必删掉重建。状态徽章包括已连接 (N 个工具)、待认证、认证中、错误、已禁用。禁用会注销该服务器的工具并断开连接,配置和 OAuth token 仍保留;再启用时自动重连,不必重新登录。 -
OAuth(授权码 + PKCE)。host 半做动态客户端注册和 PKCE,回跳落在 DSH GUI 自己的 webserver 上,路径形如
http://127.0.0.1:<端口>/mcp-manager/callback/<id>。origin 从浏览器实际地址派生,GUI 用哪个 host/port 访问都可以。登录一次之后,refresh_token会轮换,重启后自动重连。每个 GUI origin 对应一次客户端注册;GUI 换地址后,下次登录会重新注册。 -
静态 Bearer token。没有 OAuth 的 HTTP 服务器走 Codex 风格的
tokenEnv:配置里只写环境变量名称(例如MCP_BEARER_TOKEN),token 本身不落盘。还可以配headers(直接值)和headerEnv(值从环境变量读),对齐 Codex 的http_headers/env_http_headers。 -
stdio 本地进程。命令可以是
npx、uvx、python等,插件负责拉起、重连,退出时回收子进程。Windows 下经cmd.exe启动,以便解析npx.cmd这类 shim。HTTP 走 Streamable HTTP(POST JSON-RPC、Mcp-Session-Id、SSE 或 JSON 响应)。 -
工具注册与按需 broker。默认把已连接服务器的工具注册成与内置客户端相同的
mcp__<服务器名>__*名称,并对 JSON Schema 做注册表支持的清洗。页面顶部有一个「按需 MCP 工具调用」开关,默认关闭;打开后,Native 模式的 agent 只看到mcp_search_tools、mcp_describe_tool、mcp_execute_tool三个 broker,原始mcp__*不再出现在模型请求里,直接调用也会被拒绝。该开关对整个 profile 生效,重启后保持。stdio 和 Streamable HTTP 收到notifications/tools/list_changed时,只更新新增、删除或 schema 变化的注册。 -
工作区隔离。全局服务器对所有工作区可见;工作区服务器写在
<工作区>/.dsh/dshmm/mcp.json,工具只注册进工作目录解析到该工作区的会话。选中某个工作区后,可以用「隐藏」屏蔽指定的全局服务器。serverName在全局和所有工作区来源之间必须唯一,重复会被标成冲突并跳过。手改mcp.json会被热重载;JSON 无效时界面报错,继续使用上一次有效配置。工作区 OAuth token 仍写在~/.dsh/mcp-manager.json,不进声明式的mcp.json。
状态文件是 ~/.dsh/mcp-manager.json:服务器配置、OAuth 客户端注册信息和 token 都在这里。静态 token 只保存环境变量名。
安装与启用¶
社区目录详情页给出的安装命令是:
dsh plugin add github:hyqhyq3/dsh-mcp-manager
仓库 README 写得更完整,因为这个插件声明了 dsh.client.platform 为 web,需要挂到 web profile:
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:hyqhyq3/dsh-mcp-manager
装完后重启 dsh --profile web 并刷新页面。包内声明了 dsh.bundle.patch,插件会自动激活,不必手改 cordis.patch.yml。
如需可复现安装,目录页建议固定 commit 哈希:
dsh plugin add github:hyqhyq3/dsh-mcp-manager#<commit>
前置条件按 README 核对如下:
- DeepSeek Harness 使用 web profile(
npx @deepseek-ai/dsh web) - Node.js
^22.19或>=24,PATH里有 pnpm - Windows 10/11 上跑 stdio 时,命令经
cmd.exe启动
目录页有一条固定提示:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证。
OAuth 还要求 MCP 服务器的授权方允许回环重定向。回调由 DSH GUI 自己的 webserver 接收,不是另开一个端口去猜。
典型用法¶
打开 DSH Web UI 的 设置 → MCP,点 + 添加 MCP 服务器。
作用域选 user 时,服务器对所有工作区可见;选 workspace 时,从第二个下拉框指定工作区,配置写入该工作区的 .dsh/dshmm/mcp.json。
HTTP 需要填名称(决定 mcp__<名称>__* 前缀)、URL、认证方式(OAuth 或静态 token),以及可选标头。OAuth 服务器保存后点 去认证,浏览器打开登录页,同意后跳回,工具会立刻注册。静态 token 只填环境变量名,例如 MCP_BEARER_TOKEN。
stdio 需要填名称、命令、逐行参数、可选环境变量和工作目录。保存后插件会立即拉起本地进程并连接。
按需模式关闭时(默认),名为 odin 的服务器会把工具直接暴露给 agent,README 给的例子是:
mcp__odin__search_tools mcp__odin__describe_tool
mcp__odin__execute_tool mcp__odin__list_tool_scopes
打开按需模式后,Native agent 只看到三个 broker:
mcp_search_tools({ query, server?, limit? }):默认最多 10 条轻量结果,硬上限 20;查询词按服务器名+2、工具名+3、描述+1计分mcp_describe_tool({ name }):返回当前会话可见工具的描述和输入 schemamcp_execute_tool({ name, arguments }):走 DSH 标准工具流水线执行;建议先 describe,但不强制
工作区配置也可以手写。README 给的 mcp.json 示例如下:
{
"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"]
}
type 缺省为 http;stdio 的 cwd 缺省为工作区根。exclude 列出要在此工作区隐藏的全局服务器名称。已在 DSH 注册的工作区,也可以在 UI 里直接增删改,效果与手改文件相同。
适用场景与注意事项¶
适合已经在用 dsh web,并且需要把 MCP 接到智能体循环里的人。比较对口的情况包括:远程 MCP 必须走浏览器 OAuth;本机用 npx / uvx / python 起一个 stdio 服务器;希望按项目隔离 MCP,而不是所有工作区共用一套全局配置;MCP 工具很多,想用按需 broker 把每轮请求里的 schema 收窄。
使用前有几条边界需要看清楚。
插件只桥接 MCP 的 tools,不桥接 resources 和 prompts。按需过滤目前只针对 DSH 默认的 native 呈现;使用 code 或 both 的 agent 会保留完整 MCP 目录,避免生成式 SDK 不完整,或误拦 Code Mode 子调用。
OAuth token 以明文 JSON 存在 ~/.dsh/mcp-manager.json 里,README 要求把这个文件当机密。静态 token 和 headerEnv 的值从环境变量读取,不落盘。工作区 OAuth token 也在同一状态文件,不写进 mcp.json。
stdio 服务器是随插件生命周期存活的常驻子进程。POSIX 下 args 按空格分词,引号可以保护含空格的参数,但没有 shell 展开。Windows 下整条命令行交给 cmd.exe,&、|、>、%VAR% 会被解释,仓库建议用绝对路径,并为含空格的参数加引号。
插件以当前 dsh 进程的权限运行。安装社区插件前,应先看源码和许可证;需要可复现环境时,把安装命令钉到具体 commit。社区目录是独立站点,安装命令以目录页和仓库原文为准,不要凭插件名自行拼接。
小结¶
dsh-mcp-manager 把 MCP 服务器的添加、认证、启停和工作区隔离收到 DeepSeek Harness 的设置页里,补上了内置客户端没有的 OAuth(PKCE + 动态客户端注册)和本地 stdio。工具默认按 mcp__<名称>__* 注册,也可以打开按需 broker,让 Native 模式只看到三个固定入口。它是社区 MIT 项目,不是官方内置能力;装之前检查仓库,OAuth 状态文件按机密保存。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-mcp-manager/
GitHub:https://github.com/hyqhyq3/dsh-mcp-manager