用 dsh-mcp-manager 在 DeepSeek Harness 設置頁管理 MCP 服務器

前言

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 列出的能力可以分成幾塊,下面只寫已經交叉覈對過的部分。

  1. 設置頁管理。client 半在 settings.section 槽位掛一個 MCP 頁籤。添加、就地編輯、啓用/禁用、刪除都在同一頁完成:可以改名字、在 stdio 與 HTTP 之間切換、改認證方式和標頭,不必刪掉重建。狀態徽章包括 已連接 (N 個工具)待認證認證中錯誤已禁用。禁用會註銷該服務器的工具並斷開連接,配置和 OAuth token 仍保留;再啓用時自動重連,不必重新登錄。

  2. 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 換地址後,下次登錄會重新註冊。

  3. 靜態 Bearer token。沒有 OAuth 的 HTTP 服務器走 Codex 風格的 tokenEnv:配置裏只寫環境變量名稱(例如 MCP_BEARER_TOKEN),token 本身不落盤。還可以配 headers(直接值)和 headerEnv(值從環境變量讀),對齊 Codex 的 http_headers / env_http_headers

  4. stdio 本地進程。命令可以是 npxuvxpython 等,插件負責拉起、重連,退出時回收子進程。Windows 下經 cmd.exe 啓動,以便解析 npx.cmd 這類 shim。HTTP 走 Streamable HTTP(POST JSON-RPC、Mcp-Session-Id、SSE 或 JSON 響應)。

  5. 工具註冊與按需 broker。默認把已連接服務器的工具註冊成與內置客戶端相同的 mcp__<服務器名>__* 名稱,並對 JSON Schema 做註冊表支持的清洗。頁面頂部有一個「按需 MCP 工具調用」開關,默認關閉;打開後,Native 模式的 agent 只看到 mcp_search_toolsmcp_describe_toolmcp_execute_tool 三個 broker,原始 mcp__* 不再出現在模型請求裏,直接調用也會被拒絕。該開關對整個 profile 生效,重啓後保持。stdio 和 Streamable HTTP 收到 notifications/tools/list_changed 時,只更新新增、刪除或 schema 變化的註冊。

  6. 工作區隔離。全局服務器對所有工作區可見;工作區服務器寫在 <工作區>/.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.platformweb,需要掛到 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>=24PATH 裏有 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 }):返回當前會話可見工具的描述和輸入 schema
  • mcp_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,不橋接 resourcesprompts。按需過濾目前只針對 DSH 默認的 native 呈現;使用 codeboth 的 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

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

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

小夜