dsh-mcp-workspace-scope:按目錄限制 DeepSeek Harness 的 MCP 工具注入

前言

在 DeepSeek Harness(DSH)中,MCP 客戶端是以進程全局的方式註冊工具的。這意味着 @deepseek-ai/dsh-mcp-client 會將所有 MCP 服務器的工具列表注入到 ctx.tools,並以 mcp__<serverName>__<toolName> 的形式存在。因此,即使一個會話僅用於處理 Jira 任務,它也可能攜帶了三個數據庫服務器和一個瀏覽器驅動,不僅佔用了上下文窗口,還可能被誤調用。

dsh-mcp-workspace-scope 插件通過目錄維度對 MCP 工具注入進行限制。它允許你定義一個目錄白名單,子目錄自動繼承該規則,同時提供會話級別的臨時開關,在規則之外按需啓用服務。

插件簡介

  • 名稱: dsh-mcp-workspace-scope
  • 維護者: felix-lj-ct
  • 類別: admin-security
  • 許可: MIT

該插件通過隱藏工具和拒絕調用兩種機制,在保持 MCP 服務運行的同時,爲每個項目提供清晰的工具邊界。

核心功能

  • 目錄級白名單: 定義每個目錄允許使用的 MCP 服務器列表,子目錄自動繼承父級規則。
  • 雙重拒絕機制: 不僅隱藏工具,還在調用時進行拒絕(guard),提供硬性邊界。
  • 會話級臨時開關: 在 Composer 中提供 Pill 組件,允許在當前會話中臨時啓用或禁用特定服務器。
  • 狀態誠實讀出: 顯示服務器的運行時狀態,能夠識別“已允許但已死”的服務器。
  • 可視化編輯器: 提供設置頁面的規則編輯器,支持從已知工作區下拉選擇。

安裝與啓用

安裝插件需要指定 profile(例如 web)。安裝後需要重啓 profile 才能生效。

dsh plugin --profile web add dsh-mcp-workspace-scope

重啓 profile:

dsh --profile web

安裝後,插件會在 profile 的 cordis.patch.yml 中掛載 Host 層。默認配置文件路徑爲 ~/.dsh/mcp-workspace-scope.json。若不存在該文件,插件將不生效,所有會話仍將注入所有 MCP 服務器。

規則配置

規則文件採用 JSON 格式,包含 default 和 rules 兩個頂層字段。

  • default: 控制未匹配到任何規則的目錄(即根目錄或未被顯式覆蓋的路徑)的行爲。可以是 "*"(注入全部)、[](注入全部禁用)或一個服務器名稱數組。
  • rules: 數組,每一項包含 path(目錄)和 servers(允許的服務器列表)。

配置示例 (~/.dsh/mcp-workspace-scope.json)

{
  "default": "*",
  "rules": [
    {
      "path": "D:/work/frontend",
      "servers": ["playwright", "context7"]
    },
    {
      "path": "D:/work/master-data-management",
      "servers": ["atlassian", "bigquery"]
    }
  ]
}

匹配規則

  • 子目錄繼承父目錄規則。
  • 採用最長路徑匹配優先原則。
  • 相同長度的規則中,後定義的優先。
  • 規則修改會立即應用於正在運行會話(可通過配置 applyToRunningSessions 凍結此行爲)。

使用與交互

  1. 啓用/禁用: 在 Composer 中,會話旁邊會出現 MCP Scope Pill。點擊 Pill 可以在當前會話中臨時啓用或禁用特定服務器,無需修改全局規則。
  2. UI 編輯: 在設置頁面的 “MCP scope” 區域,可以直接通過 UI 編輯器添加規則、選擇目錄和服務器。

限制與注意

  • 不可憑空啓用: 該插件僅支持“減法”操作,不能啓用在 profile 中已被禁用的服務器。
  • 內存佔用: 被隱藏的服務器仍在運行並佔用內存。若需完全停止服務,應將其移至 Agent Preset。
  • 子代理隔離: 子代理的範圍由其自身的工作目錄決定,不繼承父代理的限制。
  • 運行時重載: 規則變更(無論是通過 UI 保存還是直接編輯文件)會立即重新計算並應用於當前會話。

總結

dsh-mcp-workspace-scope 解決了 DSH 環境中 MCP 工具污染上下文的問題。它通過目錄繼承和會話級開關,幫助開發者構建更乾淨的上下文邊界。

  • GitHub 倉庫: https://github.com/felix-lj-ct/dsh-mcp-workspace-scope
  • 插件目錄: https://www.skillhub.cn/plugins/felix-lj-ct/dsh-mcp-workspace-scope
羽毛球分组比赛记分
小程序二维码

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

小夜