前言¶
給 DeepSeek Harness(下稱 dsh)接 MCP server,最直接的路徑是官方的 @deepseek-ai/dsh-mcp-client:它在啓動時連接 server,把每個聲明的工具註冊成原生 mcp__<server>__<tool> 函數。代價是 schema 成本——server 一多,成百個工具定義會隨每次請求進入上下文,不管這一輪用不用得上。
dsh-mcp-adapter 是針對這個問題的另一種接法:只註冊一個 mcp 代理工具,server 懶啓動,模型按需 search / describe / call。DSH 的理念是「一切皆插件」,這個插件就是這套思路下的社區實現。下面介紹它的定位、核心功能、配置方法和注意事項。
這是什麼¶
dsh-mcp-adapter 是 NexusAgentX 開發的 dsh 插件,當前版本 0.6.3,MIT 許可證,要求 Node >= 20。設計上沿用 pi-mcp-adapter(MIT)的契約,倉庫附有 NOTICE 文件。
它是獨立插件,與 DeepSeek AI 沒有關聯。一句話定位:一個代理工具替代全量 MCP schema 註冊,用按需搜索、描述、調用換取上下文開銷。
核心設計¶
單一代理工具¶
插件只向模型註冊一個 mcp 工具,動作靠參數區分:search 找工具、describe 看某個工具的 schema、tool 加 args 真正調用。上下文裏始終只有一個工具定義,schema 成本從「每次請求 × 全部工具」變成「調用時才拉取」。
懶啓動與元數據緩存¶
server 不在啓動時全部連上。lifecycle 支持 lazy(默認)/ eager / keep-alive / lazy-keep-alive;idleTimeout 控制空閒 server 多久後關閉,單位分鐘,默認 10,設 0 關閉。
配合懶啓動的是元數據緩存:在真正 live connect 之前,search 就能用。模型可以先搜到工具名,再決定要不要連接。
雙面插件¶
這是個雙面插件:Host 半註冊工具與命令,Web 客戶端半提供 /mcp 彈窗與 MCP 工具卡片。卡片用與官方 Skill / Tool 行同一套 DisclosureRow / StateDot / SearchBlock 組件,視覺上和第一方一致。
安裝與啓用¶
1、執行官方安裝命令:
dsh plugin --profile web add dsh-mcp-adapter
2、重啓 dsh web,並硬刷新瀏覽器。此時 Host 半的工具與命令、Web 半的 /mcp 彈窗都已就位。
3、在 Chat 輸入框敲 /mcp,進入配置菜單。
有個容易踩的坑提前說明:Settings → Plugins 下沒有 MCP 表單。官方插件設置是 allowlist,外部插件不能在那裏註冊卡片。配置入口只有兩個——Web 的 /mcp 菜單,或直接寫 JSON 文件。
配置方式¶
Web /mcp 菜單¶
菜單裏可以查看 Status / Sources / Prompts;對已有 server 執行連接、OAuth 授權、停用、移除;內置五個預設一鍵寫入項目 .mcp.json:DeepWiki、Context7、Notion、GitHub、Chrome DevTools。
添加自定義 server 也走這裏,寫入項目 .mcp.json 並在進程內重載:
/mcp add docs url=https://mcp.example.com/mcp
/mcp add fs command=npx args=-y,@modelcontextprotocol/server-filesystem,/tmp
或直接用預設:
/mcp add-preset <deepwiki|context7|notion|github|chrome-devtools>
文件配置¶
想和其他 MCP 宿主(比如 Cursor)共用同一批 server,直接寫標準 .mcp.json:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@1.6.0"]
}
}
}
插件做多級文件發現,後讀的文件優先:
| 文件 | 用途 |
|---|---|
~/.config/mcp/mcp.json |
用戶全局共享配置 |
~/.agents/mcp.json / ~/.agents/mcp/mcp.json |
用戶全局工具無關配置 |
.mcp.json |
項目級共享配置(Web 添加 / 移除寫在這裏) |
$DSH_HOME/mcp.json |
dsh 全局覆蓋(默認 ~/.dsh/mcp.json) |
.dsh/mcp.json |
dsh 項目覆蓋 |
/mcp disable 和 /mcp enable 只向 .dsh/mcp.json 寫 disabled 字段,不會複製憑據。
宿主配置發現¶
插件能發現 Cursor / Claude Code / Codex / OpenCode / Windsurf / VS Code 等宿主的配置(dsh-mcp-adapter init 和 /mcp list 會檢測),但默認不加載。要啓用,把 settings.hostConfigDiscovery 設爲 "on",或在 imports 裏列出:
{
"imports": ["cursor"],
"settings": {
"hostConfigDiscovery": "off",
"toolPrefix": "server",
"idleTimeout": 10
},
"mcpServers": {}
}
server 級選項¶
每個 server 可以單獨配置生命週期、過濾和認證:
{
"mcpServers": {
"my-server": {
"command": "npx",
"args": ["-y", "some-mcp-server"],
"lifecycle": "lazy",
"idleTimeout": 10,
"requestTimeoutMs": 30000,
"directTools": ["search"],
"includeTools": ["search", "get_*"],
"excludeTools": ["admin_*"],
"searchKeywords": {
"search": ["find", "lookup"]
}
}
}
}
幾個值得單獨說明的字段:
directTools:true或工具名列表,把熱路徑工具提升爲原生 dsh 工具,高頻工具可以繞過代理這一跳;includeTools/excludeTools/searchKeywords:工具過濾,支持 glob 與搜索關鍵詞;approveTools:true或 glob,命中的工具在 Chat Ask 對話框確認後才執行;socket:rmcp-mux Unix domain socket,與command/url互斥。
認證與傳輸¶
傳輸層走 Streamable HTTP,遇到 404 / 405 自動回退 SSE。認證兩種方式:OAuth 的 token 存入 OS credential store;bearer 通過 bearerToken / bearerTokenEnv 配置。
OAuth 流程模型側通過兩個動作驅動:
mcp({ action: "auth-start", server: "notion" })
mcp({ action: "auth-complete", server: "notion", args: { redirectUrl: "..." } })
Web 菜單裏也可以對單個 server 直接發起 Authorize。
模型側用法¶
安裝後模型側的接口集中在 mcp 一個工具上。典型序列是先搜、再看、後調用:
mcp({ search: "screenshot" })
mcp({ describe: "chrome-devtools_take_screenshot" })
mcp({ tool: "chrome-devtools_take_screenshot", args: { format: "png" } })
需要提前建連時用 connect:
mcp({ connect: "chrome-devtools" })
args 可以是 JSON 對象,也可以是 JSON 字符串。
兩個進階能力:
mcpScript:在一次 JavaScript 請求內循環、搜索、調用多個 MCP 工具,適合單次請求串聯多步的場景;- MCP prompts:
mcp({ prompt: "create_plan", server: "agent-board", args: "harden retry policy" })。
CLI 與人機命令¶
獨立 CLI 提供兩個子命令:
dsh-mcp-adapter init
dsh-mcp-adapter status
init 檢測各宿主配置,status 查看插件與 server 狀態。
Chat 側 /mcp 命令族的完整列表:/mcp、/mcp status、/mcp list、/mcp json、/mcp setup、/mcp prompts、/mcp add-preset、/mcp add、/mcp connect、/mcp auth、/mcp enable、/mcp disable、/mcp remove。
適用場景與注意¶
適合的場景:
1、掛多個 MCP server,但不想讓全部工具 schema 常駐上下文;
2、希望和其他宿主共用一份 .mcp.json;
3、敏感工具需要調用前人工確認(approveTools);
4、少數高頻工具希望走原生路徑(directTools)。
注意事項:
1、不要和 @deepseek-ai/dsh-mcp-client 掛同一批 server,會雙重連接並爭搶名稱;
2、宿主特定配置默認不加載,需要時顯式開啓 hostConfigDiscovery 或寫進 imports;
3、elicitation / sampling / MCP UI apps 在 dsh host 尚未支持;
4、插件以當前 dsh 進程的權限運行,安裝前建議檢查倉庫源碼與許可證——本項目 MIT,代碼開在 GitHub。
經過上面的步驟,一個 dsh 實例就能按需接入任意數量的 MCP server,而上下文裏始終只有 mcp 一個工具定義。這是這個插件的核心價值。
鏈接¶
- GitHub:https://github.com/NexusAgentX/dsh-mcp-adapter
- 社區目錄頁:https://www.skillhub.cn/plugins/NexusAgentX/dsh-mcp-adapter(社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係)