前言¶
在 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