前言¶
在 DSH 中,MCP servers 通常可以配置在 host 或 preset 层,适合通用能力。但如果你只想让某个项目的会话看到该项目的 MCP tools,比如项目专属的 GitHub server 或本地 API,而又不影响其他项目,可以把配置下放到项目根目录。
下面介绍 dsh-project-mcp-bridge。它在项目根目录发现 .dsh/mcp.json 后,会为该项目的会话注册其中声明的 MCP servers 的 tools。
这是什么¶
dsh-project-mcp-bridge 由 KYinCode 维护,是一个 DeepSeek Harness 客户端桥接插件。
它的主要作用是消费 MCP servers:读取 .dsh/mcp.json 中声明的 server,并在 DSH 会话中注册这些 server 提供的 tools。它不是 MCP server,也不是 official DeepSeek package。
项目根目录没有 .dsh/mcp.json 时,该项目的会话不受影响;文件存在后,对应项目会话自动获得其中声明的 MCP tools。
许可证为 MIT。
核心功能¶
dsh-project-mcp-bridge 的核心能力如下:
- 以
.dsh/mcp.json是否存在作为 opt-in 开关。 - 工具命名格式为
mcp__<serverName>__<toolName>。 - 支持
stdiotransport,可使用command、args、env、cwd。 - 支持
streamable-httptransport,可使用url、headers。 - 使用
mcpServersJSON shape,与 Claude Code、Cursor 和 VS Code 的该配置形状一致。 - 保存
.dsh/mcp.json后,运行中的项目会话会 re-resolve 配置并 fully rebuild 项目 MCP surface。 - 连接按 agent/会话隔离,不池化;首次调用工具时 lazy connect。
- 支持 per-call timeout 和 idle timeout,默认
toolCallTimeoutMs为60000,idleTimeoutMs为300000;idleTimeoutMs设为0表示永不 disconnect。 - 同
serverName与上层 preset/host 连接冲突时,默认跳过上层;配置override: true可强制使用项目连接,上层连接仍保持。
安装与启用¶
正常安装¶
正常使用时,用 DSH CLI 安装到 web profile:
dsh plugin --profile web add dsh-project-mcp-bridge
安装后重启一次 dsh web:
dsh web
这一步是为了让 bundle layers 在启动时完成组合。之后修改 .dsh/mcp.json 可以热重载,不需要为每次配置变更重启 dsh web。
热安装 dev path¶
如果你要本地迭代这个插件本身,并希望改动不经过 restart 生效,可以按 user patch row 方式安装。该路径不要使用 dsh plugin add,否则会在 bundle 注册之外再重复一行。
先切到 profile 目录:
cd ~/.dsh/profiles/web
安装包到 profile 的 node_modules:
pnpm add dsh-project-mcp-bridge
再向 ~/.dsh/profiles/web/cordis.patch.yml 追加:
- insert:
- id: dsh-project-mcp-bridge
name: 'dsh-project-mcp-bridge'
这里的 name 是包名,不是 file:// 路径。该路径适合本地开发迭代;日常使用优先用上面的 bundle 安装方式。
典型用法¶
声明一个 stdio MCP server¶
在 MyProject/.dsh/mcp.json 中声明 GitHub server:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}
保存后,MyProject 下的会话就可以调用:
mcp__github__create_issue
env 和 headers 中的 ${NAME} 占位符会从 host process environment 展开。
声明一个 streamable-http MCP server¶
如果 MCP server 暴露为 HTTP endpoint,可以配置 url 和 headers:
{
"mcpServers": {
"local-api": {
"url": "http://localhost:3000/mcp",
"headers": {
"Authorization": "Bearer ${MCP_TOKEN}"
},
"override": true
}
}
}
这个示例中,override 设为 true。如果上层 preset/host 已经提供同名的 local-api,插件会强制使用项目里的这条连接;上层连接仍保持,项目 tools 在同名工具可见性上胜出。
常用配置字段¶
配置字段名与 dsh-mcp-client 保持一致:
serverName:必填,即mcpServers的 JSON key,作为工具命名空间;必须匹配[A-Za-z0-9_-]{1,32}。command:stdiotransport 的启动命令。args:stdiotransport 的参数。env:stdiotransport 的额外环境变量。cwd:stdiotransport 的子进程工作目录;相对路径相对项目根目录解析。url:streamable-httptransport 的 MCP server URL。headers:streamable-httptransport 的额外 headers。toolCallTimeoutMs:单次调用超时,默认60000。idleTimeoutMs:空闲断开时间,默认300000;设为0表示永不断开。override:当上层已提供同serverName时,是否强制使用项目连接,默认false。transport:通常不需要手写;有command时推断为stdio,有url时推断为streamable-http。二者必须恰有一个。
冲突与热重载¶
与上层 MCP 的冲突¶
工具注册到 agent scope layer,可见性优先级是:
project > preset > host
当 preset/host 层已经提供同 serverName 的 MCP row 时,默认行为是跳过项目配置中的这个 server,保证项目会话仍能启动。
如果你确实希望项目连接覆盖上层同名 server,可以设置:
"override": true
注意,override 不会关闭上层连接。项目连接会加在上层之上,上层连接仍然保持;同名工具由 agent layer 的项目注册项遮蔽,模型实际调用项目连接。工具名本身不携带来源标记。
不同 serverName 或不同 tool name 可以共存。
官方 dsh-mcp-client 的 host row 与 preset row 之间如果出现重复 serverName,会 fail mount,要求选择唯一 serverName。dsh-project-mcp-bridge 在项目层与上层冲突时默认 skip,而不是让整个 mount 失败。
热重载¶
保存 .dsh/mcp.json 后,该项目的运行中会话会重新解析配置,并 fully rebuild 项目 MCP surface:
- 新增 server:执行 schema sync,注册新 tools。
- 删除 server:注销 tools,并关闭对应连接。
- 修改 server:全量 rebuild,注销旧 tools、关闭连接、重新读取、重新注册。
- 删除配置文件:卸载该项目的所有 MCP tools。
配置文件轮询约 500ms,debounce 300ms。保存后不需要新开 session。
适用场景与注意¶
适合以下情况:
- 希望按项目声明 MCP servers,而不是全部放在 host 或 preset 层。
- 希望复用 Claude Code、Cursor、VS Code 中已有的
mcpServers配置形状。 - 需要
stdio或streamable-http两类 MCP server。 - 在 DSH web profile 中按项目隔离 MCP tools。
- 本地迭代插件,希望走 user patch row 热安装路径。
使用前建议注意:
- 它不是 official DeepSeek package,安装前应检查源码、依赖与
MIT许可证。 - 插件会读取项目配置,并可能启动
command或连接url;它会运行在当前dsh进程权限下。 env和headers中的${NAME}会从 host process environment 展开,不要把敏感信息写到你不能控制暴露范围的位置。command和url必须恰有一个,否则会无法推断 transport。serverName必须满足[A-Za-z0-9_-]{1,32}。
资源¶
- GitHub:
https://github.com/KYinCode/dsh-project-mcp-bridge - 目录页:
https://www.skillhub.cn/plugins/KYinCode/dsh-project-mcp-bridge