前言¶
在 DSH 里做智能体开发时,工具链往往只盯着磁盘上的文件:读路径、跑 shell、看 git 状态。JetBrains 系 IDE meanwhile 维护另一套「真相」——未保存缓冲区、inspection 结果、项目级构建与调试能力。两边不对齐时,常见现象是 IDE 里一片红,而 DSH 侧检查仍报「没问题」;或者 IDE 重启后,工具列表还在,每次调用却 session not found。
dsh-mcp-jetbrains 是 DeepSeek Harness(DSH)社区插件(维护者 darkwithlight,目录分类为联网工具),定位是连接管理器:把 IDE 2025.2 起内置、默认启用的 MCP Server 以客户端形式挂到 DSH,让模型直接调用 IDE 侧的诊断、构建、读文件、数据库、终端、调试等 MCP 工具。DSH 侧不向 IDE 安装额外组件;名字用 jetbrains 而非 idea,是因为同一套连接方式也适用于 CLion、PyCharm 等。
装插件前建议通读仓库中的 SAFETY.md:接入 IDE MCP 等于把 IDE 能做的事交给模型,其中包括终端命令与数据库操作。
这是什么¶
一句话:dsh-mcp-jetbrains 在 DSH Web profile 里管理一条或多条到本机 JetBrains IDE MCP 的 streamable-http 连接,并在可选策略下把框架的 read / write / edit 强制路由到 IDE 执行。
项目原则(README 原文):读不到 IDE 结论时不得伪装成「检查通过」,应显式报未知或不可用。
- 仓库:darkwithlight/dsh-mcp-jetbrains
- 社区目录:SkillHub 插件页
- 许可证:MIT(package.json 版本 0.10.0)
核心功能¶
下面按 README 已列能力归纳,均为插件自述并经文档结构核实。
多 IDE 连接与健康维护¶
每条连接对应一个 MCP 客户端子插件;配置写入插件自有存储(见下文路径),不写入 profile 的 cordis.patch.yml,改连接后无需重启 DSH。
后台定期健康探测,区分 TCP 连不上(IDE 未开)与会话 404 / 工具面变化(连接失效)。失效时只重挂受影响连接。MCP 调用失败时会先拉服务端工具清单做自诊断:区分工具名问题与连接问题;仅传输类失败会就地重挂并最多重试一次。
Host 保留最近 50 条自动动作,设置页展示前 5 条,便于回答「为何自动重连」。
读写走 IDE(ideIo)¶
设置页顶部开关对应存储字段 ideIo.enabled,默认开启。开启后在工具调用层拦截 DSH 的 read / write / edit,改走 IDE 的 read_file / create_new_file / apply_patch。
路由规则:目标文件绝对路径与各启用连接的 projectPath 做最长前缀匹配;多条并列匹配则失败;无匹配且仅一条启用连接时使用该连接(诊断标记 fallback: true)。无法路由时明确失败,不静默写磁盘;报错会提示关开关、补连接或修正 projectPath 三种方向。
尚未配置任何连接时,开关仍可开着;首次 read / write / edit 会先向用户提问(粘贴 IDE「复制配置」JSON 自动建连并重试、或声明本次不代执行、或取消)。README 强调第二条 deliberately:避免模型误以为磁盘写入来自 IDE。
edit 路径先用 search_text 定位再 apply_patch,并有读取与 patch 次数预算上限。
IDE 侧「路由模式」与工具面¶
IDE MCP Server 的「工具暴露」若处于仅路由模式,tools/list 只暴露 execute_tool,其余工具通过字符串参数 --name value 间接调用,例如:
mcp__idea__execute_tool → get_file_problems --filePath src/main.ts
README 注明:工具面是连接建立时的快照;IDE 内切换暴露模式后须重新连接才能看到新工具列表。本机实测该模式下 IDE 实际约有 66 个工具(以你本机为准)。
安装与启用¶
前提¶
- JetBrains IDE 2025.2+(内置 MCP Server 插件,默认启用),且 IDE 侧 MCP 地址可从本机访问。
- DSH 使用 web profile 安装与配置(下文命令均带
--profile web)。
插件以当前 DSH 进程权限运行;安装前请自行查看源码与 MIT 许可证,并阅读 SAFETY.md。
从 npm 安装(推荐)¶
dsh plugin --profile web add dsh-mcp-jetbrains
安装完成后重启 DSH(例如 dsh web),打开 设置 → JetBrains IDE 连接 添加连接。
开发 linked 安装(可选)¶
dsh plugin --profile web add link:<本仓库根目录>
改源码后需重装才生效;remove、why 等子命令与 add 一样通过 profile 目录内的 pnpm 转发。
连接持久化路径:
$DSH_HOME/storages/dsh-mcp-jetbrains.connections.json
结构为 { version: 1, ideIo: { enabled }, connections: [...] }。若存在旧插件 @local/dsh-mcp-idea 的 dsh-mcp-idea.connections.json,首次启动会自动迁移,旧文件保留以便回滚。
配置一条连接¶
在设置页填写下表字段(含义来自 README):
| 字段 | 含义 |
|---|---|
| 连接 ID | 日志与诊断用,同配置内不可重复 |
serverName |
工具名前缀,形如 ^[A-Za-z0-9_-]{1,32}$;对外工具为 mcp__<serverName>__* |
| MCP 地址 | IDE MCP Server 监听 URL,DSH 以 streamable-http 连接,例如 http://127.0.0.1:64342/stream |
| 项目路径 | 可选;作为 U_MCP_SERVER_PROJECT_PATH 请求头发给 IDE,空则由 IDE 自选项目 |
| 启用 / 自动重载 | 是否挂载、是否允许后台自动重连 |
端口无固定公式:README 本机实测 IDEA 64342、CLion 64362、PyCharm 64462,以 IDE 界面显示为准。
典型用法¶
1、安装插件并重启 DSH,确认 IDE 已开且 MCP Server 可访问。
2、在 设置 → JetBrains IDE 连接 新建连接:填 serverName、MCP 地址;若需精确路由读写,填写与工程一致的 projectPath。
3、在对话中让智能体使用暴露的工具(全量模式下工具名直接可见;路由模式下经 execute_tool 间接调用)。需要 IDE inspection 或构建类能力时,优先走 IDE MCP 而非仅读磁盘。
4、若开启「读写走 IDE」,编辑文件前应意识到:IDE 打开且未保存时,读到的是缓冲区内容;经 IDE 写入的换行符可能与 DSH 原生 LF 不同(README 本机实测为 CRLF)。
适用场景与注意¶
适合谁:本地同时用 DSH Web 与 JetBrains 2025.2+ 做同一仓库;希望模型用 IDE 的诊断、构建、调试、终端、SQL 等 MCP 能力,并可选地统一读写路径到 IDE。
传输与兼容:DSH 侧支持 stdio、streamable-http,不支持 SSE。README 本机实测 IDE 2026.2.3(IU-262.10968.63);更旧版本未在文档中承诺。
已知边界(节选,装前建议读完整表格):
- 「读写走 IDE」只拦工具层
read/write/edit;rm等 shell 删除或 IDE 终端/SQL 工具不受该开关约束。 apply_patch多处相同文本时可能静默改第一处;批量 patch 非原子。- 官方文档参数名与本机 MCP 实现可能不一致(README 举例
read_file参数)。
完整限制与安全说明见仓库 SAFETY.md 与 README「已知限制与边界」一节。
结尾¶
dsh-mcp-jetbrains 解决的是 DSH 与 JetBrains IDE 两套上下文割裂的问题:通过多连接 MCP 客户端把 IDE 能力暴露给智能体,并用健康探测、失败自诊断与可选的 ideIo 路由,减少「以为查过了其实没连上 IDE」的 silent wrong。DeepSeek Harness 生态强调「一切皆插件」;社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。
- 目录页:https://www.skillhub.cn/plugins/darkwithlight/dsh-mcp-jetbrains
- GitHub:https://github.com/darkwithlight/dsh-mcp-jetbrains