在 DeepSeek Harness(DSH)的開發中,Host 組合層往往需要連接外部工具(如 MCP 服務器)或加載 Agent 插件包,同時也可能需要將 DSH 自身的能力反向暴露給 MCP 客戶端。dsh-cordis-universal-adapter 提供了一個 Host 組合層的連接器,實現了這兩端的互通。
核心功能¶
該插件主要解決 DSH 與外部 MCP 生態之間的雙向數據流轉問題:
- 消費外部資源:支持加載外部 MCP 服務器(stdio / Streamable HTTP)和 Agent Plugins 1.0 包。它會在 DSH 的上下文中將外部工具註冊爲原生工具(命名格式
mcp:<serverId>:<toolName>)。 - 反向暴露工具:通過
export配置,將 DSH 中已註冊的工具反向導出爲標準 MCP 服務器,供其他 MCP 客戶端調用(命名格式dsh:<toolName>)。 - 雙向通信:支持 Inbound(正向接入)和 Outbound(反向導出)兩種模式。
- 連接管理:使用狀態機管理連接狀態,支持
start、stop、update等生命週期操作,並支持語義路由選擇工具。
安裝與啓用¶
使用 DSH 的插件管理命令安裝:
dsh plugin --profile web add github:helibeiqi/dsh-cordis-universal-adapter
安裝後,插件會根據配置文件(通常爲 cordis.patch.yml)自動加載定義的服務器或導出配置。
典型用法¶
1. 加載外部 MCP 服務器¶
在 cordis.patch.yml 中配置需要連接的外部 MCP 服務器。例如,加載社區提供的 filesystem MCP 服務器:
# cordis.patch.yml
plugins:
dsh-cordis-universal-adapter:
servers:
- id: filesystem
transport: stdio
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
配置後,DSH 中將出現 mcp:filesystem:read_directory 等工具,Agent 可直接調用。
2. 反向導出 DSH 工具¶
將 DSH 原生工具暴露爲 MCP 服務器,供 Claude Desktop 或其他 MCP 客戶端使用:
plugins:
dsh-cordis-universal-adapter:
export:
enabled: true
transport: stdio
namespace: dsh
啓用後,DSH 進程會提供一個 stdio 端點,外部工具可以通過 npx @modelcontextprotocol/inspector 連接並調用 DSH 工具。
依賴與限制¶
環境依賴¶
- Node.js:需要版本
>= 22.19。 - DSH 依賴:
@deepseek-ai/cordis>= 0.1.0@deepseek-ai/dsh-tools>= 0.1.0
功能限制¶
- 不實現沙箱:外部 MCP 服務器的隔離依賴其宿主進程邊界(如 stdio 子進程或遠程 HTTP 服務),插件本身不提供沙箱機制。
- 返回值要求:反向導出的工具返回值必須是 JSON 可序列化值,不支持二進制或流式輸出。
- HTTP 認證:Streamable HTTP 認證僅支持靜態頭配置。
- API 穩定性:相關依賴(如
@deepseek-ai/dsh-tools)處於 Developer Preview 階段,接口可能發生破壞性變更。
適用場景與注意¶
該插件適合需要在 DSH Host 層集成外部工具生態,或需要將 DSH 能力集成到其他 MCP 客戶端的場景。
在使用前,請確認以下幾點:
1. 檢查目標外部 MCP 服務器的安全性,因爲它將直接在 DSH 進程權限下運行。
2. 注意 API 的版本鎖定,避免因依賴升級導致的不兼容。
3. 啓用語義路由(router.enabled)會增加 LLM 調用開銷。
結尾¶
dsh-cordis-universal-adapter 是一個連接 DSH 與 MCP 生態的橋樑。它通過 Host 組合層的架構,使得開發者既能方便地調用外部工具,又能將 DSH 的能力反哺給其他客戶端。