dsh-project-mcp:爲項目級會話配置 MCP 服務器

DSH(DeepSeek Harness)的常規配置方式是在 cordis.patch.yml 中定義 MCP 服務器,這會導致同一個配置文件下的所有會話共享相同的 MCP 服務器。當需要在特定項目中使用特定的 MCP 服務(例如 Rider、Playwright 或 Tracker)時,這種全局配置方式會帶來干擾。dsh-project-mcp 插件引入了項目級配置平面,允許項目在本地聲明 MCP 服務器,這些服務器僅對在該項目下工作的會話生效。

該插件由用戶 borgez 維護,採用 MIT 許可證。它通過讀取項目根目錄下的配置文件,將聲明爲 localFiles 的 MCP 服務器掛載到會話中,實現了配置的隔離與按需加載。

安裝與啓用

安裝該插件需要先構建或打包,然後通過 dsh plugin 命令添加到 Web GUI 配置中。

pnpm pack
mv dsh-project-mcp-<version>.tgz ~/.dsh/packages/
dsh plugin --profile web add file:$HOME/.dsh/packages/dsh-project-mcp-<version>.tgz

安裝完成後,必須重啓 Web GUI 才能生效。

配置文件與優先級

插件默認讀取項目根目錄下的 .dsh/mcp.json 文件。通過配置 localFiles 和 globalFiles,可以控制讀取文件的順序和範圍。

  • globalFiles:列出在項目文件之前讀取的全局文檔,默認爲空列表 []。
  • localFiles:列出項目自身的文檔,默認爲 ['.dsh/mcp.json']。

讀取順序遵循全局優先於本地的原則。如果多個文檔中存在同名服務器,後讀取的文檔會覆蓋先前的配置。

// <project>/.dsh/mcp.json
{
  "mcpServers": {
    "rider": {
      "type": "http",
      "url": "http://127.0.0.1:64343/stream",
      "headers": { "IJ_MCP_SERVER_PROJECT_PATH": "/abs/path/to/project/src/App" }
    },
    "playwright": { "command": "npx", "args": ["-y", "@playwright/mcp@latest"] },
    "tracker": {
      "command": "uvx",
      "args": ["yandex-tracker-mcp@latest"],
      "env": { "TRACKER_TOKEN": "${YANDEX_TOKEN}" }
    }
  }
}

變量與環境變量

插件支持在配置中使用 ${VAR} 和 ${input:NAME} 語法進行變量替換。這些變量值的查找順序如下:

  1. <project>/.dsh/.env(需啓用 envFiles)
  2. <project>/.env(需啓用 envFiles)
  3. process.env
  4. KEY 在憑證文件中(默認爲 $DSH_HOME/.credentials.yaml)

變量支持在 command、args、env、cwd、url 和 headers 中使用。如果環境變量或 .env 文件中未定義,則該項配置會報錯。插件不會將解析後的值寫回編輯器。

會話行爲

  • 懶加載:默認啓用。只有當會話開始工作(第一次執行步驟)時,纔會掛載該項目的 MCP 服務器。這避免了會話創建時的初始化開銷。
  • 空閒釋放:如果會話在指定時間內(默認 300000ms)沒有活動,插件會釋放該會話的 MCP 掛載。
  • 錯誤處理:配置文件中的某一行損壞不會阻止其他服務器的掛載,損壞的條目會以 error 狀態顯示。

注意事項

  1. 敏感文件:當 envFiles 爲 true 時,插件會讀取項目根目錄下的 .env 和 .dsh/.env 文件。這些文件包含敏感信息,不應提交到版本控制系統。
  2. 服務器名稱限制:MCP 服務器的名稱必須匹配正則表達式 [A-Za-z0-9_-]{1,32},否則會被自動處理併發出警告。
  3. 配置格式:支持 { "mcpServers": { ... } }、{ "servers": { ... } } 或直接的對象映射。未知字段會被忽略。

總結

dsh-project-mcp 爲 DSH 提供了項目級別的 MCP 服務器管理能力。通過本地配置文件、變量替換和懶加載機制,它解決了多項目開發中 MCP 服務共享與隔離的痛點。對於需要在單一 DSH 實例中管理多個項目、且每個項目依賴不同 MCP 工具的場景,該插件提供了直接的解決方案。

GitHub 倉庫 | 插件目錄

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜