dsh-workspace-mcp:项目级 MCP 配置下沉

前言

DeepSeek Harness(DSH)原生的 MCP 配置属于 profile 级别,一次配置作用于整个 profile。在多项目开发或需要为不同项目挂载不同 MCP 服务器的场景下,这种全局配置方式不够灵活。本插件将 MCP 配置下沉到项目:在项目目录下放置配置文件,会话创建时自动读取并挂载,会话结束时自动断开。

这是什么

dsh-workspace-mcp 是一个为 DeepSeek Harness 设计的项目级 MCP 插件,由 lihuabd 维护。它读取项目目录中的 .dsh/mcp.json(或兼容的 .mcp.json),把其中声明的 MCP 服务器挂载到当前会话。桌面 GUI、dsh web、dsh headless 均受支持。

核心功能

  • 项目级配置:在项目根目录放置 .dsh/mcp.json 或 .mcp.json,按会话工作目录自动加载对应服务器的 MCP 工具。
  • 独立实例:每台服务器作为独立的 dsh-mcp-client 实例挂到会话,工具随会话销毁自动移除。
  • 并发启动:同一会话的服务器并发启动,单台失败不影响其他服务器。
  • 灵活搜索:支持向上查找父目录(默认最多 3 层),便于在子目录中引用父项目的配置。
  • 子 agent 控制:通过 includeSubagents 控制是否为子 agent 挂载项目 MCP 工具(默认关闭)。
  • 配置覆盖:在 profile 的 cordis.patch.yml 中按 id 覆盖插件配置,包括启用开关、搜索策略、超时与环境变量策略。

安装与启用

本包是一个 DSH bundle,安装后自动插入插件行。安装命令如下:

# 从 npm
dsh plugin --profile <profile> add dsh-workspace-mcp

# 直接从 GitHub
dsh plugin --profile <profile> add github:lihuabd/dsh-workspace-mcp

也可以通过桌面 GUI 安装:插件页 → 添加插件 → 输入 dsh-workspace-mcp → 选择安装源 → 安装。安装后用以下命令确认条目已进入配置树:

dsh --profile <profile> --dump-config | grep -A 4 workspace-mcp

典型用法

  1. 在项目根目录创建 .dsh/mcp.json(或 .mcp.json),内容示例:
{
  "mcpServers": {
    "cc-tools": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "headers": { "Authorization": "Bearer ${MCP_TOKEN}" }
    },
    "local": {
      "command": "node",
      "args": ["./tools/mcp-server.js"],
      "env": { "TOKEN": "${LOCAL_TOKEN}" }
    }
  }
}
  1. 在 profile 的 cordis.patch.yml 中按 id 覆盖插件配置:
- id: workspace-mcp
  name: dsh-workspace-mcp
  config:
    enabled: true
    files: ['.dsh/mcp.json', '.mcp.json']
    searchParents: false
    maxParentDepth: 3
    includeSubagents: false
    failOnStartupError: false
    startupTimeoutMs: 20000
    toolCallTimeoutMs: 60000
    env: {}
    envAllowlist: []
  1. 打开会话后,工具名形如 mcp__<serverName>__<tool>。项目级 server 与 profile/$DSH_HOME 里配置的同名 server 可以共存,会话内以项目配置为准。

适用场景与注意

  • 适合需要为不同项目挂载不同 MCP 服务器的场景,避免全局配置冲突。
  • 插件以当前 DSH 进程权限运行,项目文件可以拉起任意 stdio 进程,等同于把代码执行权交给仓库作者。只在自己信任的仓库里使用。
  • 默认不从进程环境展开变量:${VAR} 只解析插件配置的 env 与 envAllowlist 命中的名字。需要 ${GITHUB_TOKEN} 这类写法时,显式配置 envAllowlist: ['GITHUB_TOKEN'](或 ['MCP_*'])。
  • 文件必须是常规文件且不超过 1 MB,不支持 SSE 传输。

短结尾

dsh-workspace-mcp 将 MCP 配置下沉到项目,让不同会话能按需加载对应 MCP 工具。完整文档见:https://github.com/lihuabd/dsh-workspace-mcp

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

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

Xiaoye