在 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 的能力反哺给其他客户端。