前言¶
DeepSeek Harness(dsh)是 DeepSeek 開源的智能體運行時,官方倉庫把它概括成一句話:一切皆插件。模型適配、工具、會話、沙箱和網頁界面,都可以在配置層增刪,不必改核心源碼。項目目前仍是開發者預覽,接口會繼續變。社區裏已經出現獨立的插件目錄站點,把 GitHub 上帶 dsh-plugin 話題的倉庫集中展示;需要說明的是,這類目錄與 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。
把外部能力接到 MCP(Model Context Protocol)上,是 DSH 裏很常見的擴展方式。不少遠程 MCP 走的是 Streamable HTTP,並且用 OAuth 保護入口:第一次連接要打開瀏覽器登錄,之後用令牌維持會話。內置的 @deepseek-ai/dsh-mcp-client 能完成工具發現、命名、調用和重連,但倉庫 README 寫明:這條原生連接流程還缺 PKCE、動態客戶端註冊、瀏覽器授權和令牌持久化。
dsh-oauth-mcp-client 就是補這一段的插件。它在原生客戶端之上接上 OAuth 2.1 授權碼流程,默認連到 Springbrand 生產 MCP Gateway,也可以在 Web 界面再加其他同樣支持 OAuth 與 Streamable HTTP 的服務。本文按社區目錄詳情頁、GitHub 倉庫 README(中英文)、package.json、springbrand.cordis.yml 與源碼,以及官方 deepseek-ai/deepseek-harness 交叉覈對後整理。
這是什麼¶
dsh-oauth-mcp-client 是一款面向 DeepSeek Harness 的開發與運行時插件,由 GitHub 組織 springbrand-lab 維護。README 寫明出品方是 SpringBrand,定位爲面向商業服務的 AI 輔助服務市場。許可證是 MIT,主要語言是 TypeScript。package.json 裏的包名是 @dsh-external/dsh-oauth-mcp-client,版本 0.1.0。社區目錄把它歸在「開發與運行時」。倉庫創建於 2026-08-13,最近一次推送是 2026-08-14;截至 2026-08-18,GitHub 顯示 8 星,目錄頁上的數字是 6,星標會變,以倉庫頁面爲準。
它解決的問題很具體:給受 OAuth 保護的 Streamable HTTP MCP 服務器做一次瀏覽器登錄,把令牌交給 DSH 的 credential service 保存,再把遠端工具註冊進當前 Harness。src/connection.ts 和 src/tools.ts 基於 MIT 許可下的官方 @deepseek-ai/dsh-mcp-client 改造,工具發現、命名、執行和重連行爲儘量與內置客戶端保持一致。
倉庫自帶的默認配置會連接 Springbrand 生產 MCP Gateway(https://connector.springbrand.ai/mcp)。這不是通用 MCP 管理器:它不負責本地 stdio 進程,也不提供靜態 Bearer token 模式。服務端必須同時支持 OAuth 和 MCP Streamable HTTP。
核心功能¶
倉庫 README 列出的能力可以分成幾塊,下面只寫已經交叉覈對過的部分。
-
OAuth 2.1 授權碼 + PKCE。首次連接會打開系統默認瀏覽器完成登錄和同意。回調監聽綁在本機 loopback(
127.0.0.1),路徑是/oauth/callback;callbackPort爲0時由操作系統選空閒端口。源碼裏用xdg-open/open/rundll32拉起瀏覽器,授權超時默認 300000 毫秒(5 分鐘)。 -
動態客戶端註冊。OAuth 客戶端元數據由插件生成,
token_endpoint_auth_method爲none,授權類型包含authorization_code和refresh_token。客戶端信息和令牌一起寫入 DSH credential service,不落在插件倉庫裏。 -
Streamable HTTP 與自動重連。傳輸層是 MCP Streamable HTTP。連接丟失後按指數退避重連,默認開啓。單次工具調用超時默認 60000 毫秒。
failOnStartupError默認爲true:第一次授權、連接或工具同步失敗時,插件激活會直接失敗。 -
MCP 工具發現、註冊和調用。遠端工具按 DSH 慣例註冊成
mcp__<serverName>__*。默認連接的命名空間是springbrand,README 用來自檢的兩個工具是:
-mcp__springbrand__search_capabilities
-mcp__springbrand__execute_capability -
Web 界面管理連接。
package.json聲明瞭dsh.client.platform爲web,並注入設置頁相關的 client 插件。打開 設置 → 插件 → MCP 連接,可以看到即時狀態和已經註冊的能力。頁面上的「添加並登錄」會把連接永久寫入~/.dsh/profiles/web/cordis.patch.yml,重啓後仍然在,不需要臨時的--patch。 -
默認帶上 Springbrand 連接。bundle 補丁文件
springbrand.cordis.yml會同時掛上 Web 管理頁和一條名爲springbrand-mcp-oauth的連接。把這個 bundle 加進 profile 時,默認 MCP 連接也會一起加上,不必再單獨做一次 MCP 註冊。
配置字段以 README 和 springbrand.cordis.yml 爲準:
| 字段 | 說明 | 默認值 |
|---|---|---|
serverName |
註冊到 DSH 的工具命名空間 | springbrand |
url |
HTTPS Streamable HTTP MCP 地址 | https://connector.springbrand.ai/mcp |
credentialRef |
DSH credential 引用名 | SPRINGBRAND_MCP_OAUTH_PRODUCTION |
scope |
可選 OAuth scope | 由服務端發現 |
callbackPort |
本地回調端口;0 表示自動選擇 |
0 |
authorizationTimeoutMs |
瀏覽器授權超時 | 300000 |
toolCallTimeoutMs |
單次 MCP 工具調用超時 | 60000 |
failOnStartupError |
首次連接失敗時終止激活 | true |
reconnect |
指數退避重連策略 | 已啓用 |
serverName 必須匹配 ^[A-Za-z0-9_-]{1,32}$,同一個 DSH 進程裏不能重複。源碼還要求:URL 必須是 HTTPS(本機 loopback 開發可用 HTTP),地址裏不能帶用戶名密碼,也不能自行配置 Authorization header——這條頭由 OAuth 客戶端管理。
安裝與啓用¶
社區目錄詳情頁給出的安裝命令是:
dsh plugin add github:springbrand-lab/dsh-oauth-mcp-client
如需可復現安裝,目錄頁建議固定 commit 哈希:
dsh plugin add github:springbrand-lab/dsh-oauth-mcp-client#<commit>
倉庫 README 目前寫得更保守:這個倉庫沒有發佈到 npm,推薦先克隆、構建,再把本地目錄裝進 web profile。
git clone https://github.com/springbrand-lab/dsh-oauth-mcp-client.git
cd dsh-oauth-mcp-client
corepack enable
pnpm install
pnpm build
然後:
PLUGIN_DIR="$PWD"
npx --yes @deepseek-ai/dsh@latest plugin --profile web add "$PLUGIN_DIR"
npx --yes @deepseek-ai/dsh@latest web
兩條路徑不要混着理解。目錄命令是社區目錄頁的原文;README 則強調當前要以本地 checkout 安裝,因爲包還不在 npm 上。實際裝之前以倉庫 README 爲準,裝完再看 Web 界面裏有沒有出現 MCP 連接頁。
前置條件按 README 覈對如下:
- Node.js 22.19 或更高版本
- Git
- 首次 OAuth 登錄所需的瀏覽器
- 使用 web profile(
npx @deepseek-ai/dsh web)
目錄頁有一條固定提示:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前應檢查源代碼倉庫和許可證。
首次啓動會打開瀏覽器做 Springbrand 登錄和授權。授權成功後,打開 設置 → 插件 → MCP 連接,即可查看即時狀態和已經註冊的能力。
典型用法¶
默認連接裝好並完成授權後,可以直接讓 Agent 搜索 Springbrand 的 capability 目錄。README 給的例子是:
搜索 Springbrand 市場中的資源,並列出前 10 個。
正常調用流程是:先調 search_capabilities,再把返回的完整 name 交給 execute_capability。README 舉的完整名是 platform:springbrand@0:springbrand.resources.list,不要改用較短的 action_id(例如 springbrand.resources.list)。插件會把這條工具選擇規則寫進 Agent 的 system prompt,用戶按自然語言提需求即可,不必手動指定工具名。
如果要接其他 OAuth MCP 服務,打開 設置 → 插件 → MCP 連接,填寫唯一的服務名和 HTTPS MCP 地址,點 添加並登錄,在自動打開的瀏覽器裏完成 OAuth。頁面隨後顯示即時狀態和實際註冊的工具。點 移除 會卸載對應工具,並在永久 profile 裏刪除或停用該連接。
Web 頁面是默認配置方式。如果需要手寫,把連接加到同一個文件 ~/.dsh/profiles/web/cordis.patch.yml:
- insert:
- id: my-oauth-mcp
name: '@dsh-external/dsh-oauth-mcp-client'
config:
serverName: my-mcp
url: https://mcp.example.com/mcp
credentialRef: MY_MCP_OAUTH
failOnStartupError: true
serverName 會成爲工具名的一部分,例如 mcp__my-mcp__search。對端必須支持 OAuth 和 MCP Streamable HTTP;第一次連接同樣會打開瀏覽器授權。
做加載級自檢時,README 還提供了 headless 寫法:把當前 checkout 裝進 headless profile 後啓動一次對話,出現提示再完成 OAuth:
PLUGIN_DIR="$PWD"
npx --yes @deepseek-ai/dsh@latest plugin --profile headless add "$PLUGIN_DIR"
npx --yes @deepseek-ai/dsh@latest --profile headless "hi"
適用場景與注意事項¶
適合已經在用 dsh web,並且需要把受 OAuth 保護的遠程 Streamable HTTP MCP 接到智能體循環裏的人。比較對口的情況包括:默認使用 Springbrand 市場裏的 capability;或者自己有一個同樣走 OAuth 2.1 + Streamable HTTP 的 MCP 網關,希望用瀏覽器登錄一次、之後由 DSH 憑據服務保管令牌。
使用前有幾條邊界需要看清楚。
這個插件補的是 OAuth 客戶端,不是通用 MCP 管理面板。它不拉起本地 stdio 進程,也不提供「只填環境變量裏的 Bearer token」那種靜態認證。對端如果不支持 OAuth,或不走 Streamable HTTP,這條連接路徑對不上。
OAuth 狀態由 DSH credential service 保存,回調只監聽本地 loopback。不要在配置裏寫 Authorization header,也不要把 access token、refresh token 或導出的 credential 數據提交進倉庫。URL 除了本機 loopback 開發,必須使用 HTTPS。
failOnStartupError 默認爲 true。第一次授權沒完成、瀏覽器超時,或工具同步失敗時,插件會拒絕激活,而不是帶着半殘連接繼續跑。授權超時默認五分鐘,需要可交互的本機瀏覽器。
插件以當前 dsh 進程的權限運行。安裝社區插件前,應先看源碼和許可證;需要可復現環境時,把安裝命令釘到具體 commit。社區目錄是獨立站點,安裝命令以目錄頁和倉庫原文爲準,不要憑插件名自行拼接。DeepSeek Harness 仍處於開發者預覽,核心插件和 API 還會變,裝完如果對不上界面文案,以當時倉庫 README 爲準。
小結¶
dsh-oauth-mcp-client 在 DeepSeek Harness 原生 MCP 客戶端之上補上了 OAuth 2.1:授權碼 + PKCE、動態客戶端註冊、瀏覽器登錄、本地回調、令牌持久化和斷線重連。裝進 web profile 後,默認連上 Springbrand 生產 MCP Gateway,也可以在 設置 → 插件 → MCP 連接 裏再加其他同樣支持 OAuth 與 Streamable HTTP 的服務。它是社區 MIT 項目,當前未發佈到 npm;裝之前檢查倉庫,令牌按 DSH 憑據來保管,不要寫進配置文件。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-oauth-mcp-client/
GitHub:https://github.com/springbrand-lab/dsh-oauth-mcp-client