dsh-mcp-manager:爲 DSH 補齊 OAuth 與 stdio 的 MCP 管理插件

前言

在 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 類型服務器支持兩種認證:

  1. 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。
  2. 靜態 Bearer token:配置裏填寫持有 token 的環境變量名(Codex 風格的 tokenEnv),token 本身不寫入配置文件。

此外支持自定義 HTTP 頭:headers 寫直接值,headerEnv 從環境變量讀取,對應 Codex 的 http_headers / env_http_headers

stdio 本地進程

stdio 類型可直接執行 npxuvxpython 等命令,插件通過子進程 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_toolsmcp_describe_toolmcp_execute_tool。原始 mcp__* 名不會出現在請求裏,直接調用會被拒絕。mcp_search_tools 默認最多返回 10 條匹配(硬上限 20),按服務器名、工具名、描述打分。

notifications/tools/list_changed 觸發時,stdio 與 Streamable HTTP 服務器只對新增、刪除或 schema 變更的工具做增量刷新。

狀態持久化在 ~/.dsh/mcp-manager.json(服務器配置、OAuth 客戶端註冊與 token;靜態 token 僅存環境變量名)。

安裝與啓用

環境要求:

  • DSH web profile(npx @deepseek-ai/dsh web
  • Node.js ^22.19>=24,且 pnpmPATH

官方安裝命令:

npx -p @deepseek-ai/dsh dsh plugin --profile web add github:hyqhyq3/dsh-mcp-manager

安裝後重啓 dsh --profile web 並刷新頁面。包內聲明瞭 dsh.bundle.patch,插件會自動激活。

典型用法

  1. 打開 DSH Web UI 的 Settings → MCP
  2. + Add MCP server(之後可用 編輯 / Edit 修改):
    - Scope(作用域)user 爲全局;workspace 綁定單個工作區,配置寫入該工作區的 .dsh/dshmm/mcp.json
    - HTTP:填寫名稱(成爲 mcp__<name>__* 前綴)、URL、認證模式(OAuth 或 static token)、可選 headers。
    - stdio:填寫名稱、命令、參數(每行一個)、環境變量、可選工作目錄。
  3. OAuth 服務器:點 去認證 → 瀏覽器登錄 → 回調後工具立即註冊。
  4. 靜態 token 服務器:填寫環境變量名(如 MCP_BEARER_TOKEN),保存後 stdio 會立即拉起並連接。
  5. 可選:在頁面頂部開啓 On-demand MCP tool calls;該設置按 profile 持久化,現有會話在下一次請求時生效。

狀態徽標包括 connected (N tools)needs-authauthorizingerrordisabled。可對每條服務器執行認證、編輯、啓用/禁用、刪除。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 上的缺口。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜