🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

JetBrains 连接器 darkwithlight/dsh-mcp-jetbrains

DeepSeek Harness
darkwithlight7 天前有提交已提供中文文档扫描:含敏感能力

把 JetBrains IDE 的诊断、构建与终端能力接给智能体

29.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add darkwithlight/dsh-mcp-jetbrains
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 7 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 13 处,展示前 13 条)
  • 读取本地文件
    lib/index.js:593
    return await realpath(absolute);
  • 读取本地文件
    lib/index.js:597
    return join(await realpath(dirname(absolute)), basename(absolute));
  • 发起网络请求
    lib/index.js:1120
    response = await fetch(href, {
  • 发起网络请求
    lib/index.js:1250
    response = await fetch(row.url, { method: 'GET', headers, signal: controller.signal });
  • 读取本地文件
    lib/index.js:1592
    raw = await readFile(path, 'utf8');
  • 写入本地文件
    lib/index.js:1625
    await mkdir(dirname(path), { recursive: true });
  • 写入本地文件
    lib/index.js:1628
    await writeFile(temp, body, 'utf8');
  • 写入本地文件
    lib/index.js:1630
    await rename(temp, path);
  • 删除本地文件
    lib/index.js:1635
    await rm(temp, { force: true }).catch(() => { });
  • 发起网络请求
    lib/index.js:2376
    await fetch(row.url, {
  • 发起网络请求
    lib/index.js:2868
    await fetch(row.url, {
  • 发起网络请求
    client.js:253
    const res = await fetch(url, { headers: { accept: 'application/json' }, cache: 'no-store' });
  • 发起网络请求
    client.js:258
    const res = await fetch(url, {
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-mcp-client@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

对接 jetbrains MCP 服务的 DSH 插件

README

由 DeepSeek 最新模型翻译生成
dsh-mcp-jetbrains DeepSeek Harness(DSH)插件:把 JetBrains IDE 内置的 MCP Server 接成 DSH 的工具,让智能体直接用 IDE 的能力——诊断、构建、读文件、数据库、终端、调试。 DSH 侧只做连接管理器,不往 IDE 里装任何东西:IDE 自 2025.2 起内置 MCP Server 插件并默认启用。名字里带 jetbrains 而不是 idea,因为它同样连 CLion、PyCharm。 先读安全说明。 接了 IDE 的 MCP,等于把 IDE 能做的事交给了模型,其中包括执行终端命令与操作数据库。 为什么做 同一个项目里存在两份互相不认账的真相: | | 看什么 | | IDE | 内存缓冲区 + 自己的 inspection 引擎 | | DSH | 磁盘上的字节 | 于是会出现「IDE 报错而 DSH 查完说没异常」,以及「IDE 重启后工具还在列表里,但每次调用都报 session not found」。 据此定的第一原则: 读不到 ≠ 没问题。 取不到 IDE 结论时必须显式报「未知/不可用」,不得降级成「检查通过」。
展开完整文档(README 剩余 1 节)
dsh-mcp-jetbrains

DeepSeek Harness(DSH)插件:把 JetBrains IDE 内置的 MCP Server 接成 DSH 的工具,让智能体直接用 IDE 的能力——诊断、构建、读文件、数据库、终端、调试。

DSH 侧只做连接管理器,不往 IDE 里装任何东西:IDE 自 2025.2 起内置 MCP Server 插件并默认启用。名字里带 jetbrains 而不是 idea,因为它同样连 CLion、PyCharm。

先读安全说明。 接了 IDE 的 MCP,等于把 IDE 能做的事交给了模型,其中包括执行终端命令与操作数据库。

为什么做

同一个项目里存在两份互相不认账的真相:

| | 看什么 |
| IDE | 内存缓冲区 + 自己的 inspection 引擎 |
| DSH | 磁盘上的字节 |

于是会出现「IDE 报错而 DSH 查完说没异常」,以及「IDE 重启后工具还在列表里,但每次调用都报 session not found」。

据此定的第一原则:

读不到 ≠ 没问题。 取不到 IDE 结论时必须显式报「未知/不可用」,不得降级成「检查通过」。

提供什么

| 能力 | 说明 |
| 多 IDE 连接管理 | 每条连接挂一个 MCP 客户端子插件;配置存在插件自有存储,不写 profile 的 cordis.patch.yml,改完不用重启 DSH |
| 健康探测 | 后台定期探测,区分「TCP 连不上(IDE 没开)」与「会话 404 / 工具面变了(失效)」 |
| 自动重连 | 发现失效后只重挂受影响的那一条连接,其它连接与配置不动 |
| 调用失败的自诊断 | 失败后先取服务端工具清单,判断是「工具名问题」还是「连接问题」;只有传输类失败才就地重挂并重试一次 |
| 读写走 IDE | 一个开关,强制把 read / write / edit 交给 IDE 执行,路由不到就失败而非落盘 |
| 诊断面板 | Host 保留最近 50 条自动动作,设置页显示前 5 条,能回答「它为什么自己重连了」 |

安装

前提:IDE 2025.2+(内置 MCP Server,默认启用),且 IDE 侧 MCP Server 可访问。

从 npm 安装(推荐):

dsh plugin --profile web add dsh-mcp-jetbrains

装完重启 DSH(dsh web),再进 设置 → JetBrains IDE 连接。

从仓库源码安装(开发用,linked):

dsh plugin --profile web add link:<本仓库根目录>

dsh plugin 把参数原样转给该 profile 目录里的 pnpm,所以 remove、why 等子命令同样可用。改源码后需要重装才生效(linked 插件不热更新)。

连接配置存在:

$DSH_HOME/storages/dsh-mcp-jetbrains.connections.json

结构为 { version: 1, ideIo: { enabled }, connections: [...] }。若存在旧插件(@local/dsh-mcp-idea)留下的 dsh-mcp-idea.connections.json,首次启动会自动迁移,旧文件保留以便回滚。

配置一条连接

| 字段 | 含义 |
| 连接 ID | 只用于日志与诊断,界面上认这一行,同一份配置里不能重复 |
| 服务名 serverName | 工具名前缀,形如 ^[A-Za-z0-9_-]{1,32}$;工具以 mcp__<serverName>__ 暴露,改名等于给工具改名 |
| MCP 地址 | IDE 里 MCP Server 监听地址,DSH 以 streamable-http 连过去,例如 http://127.0.0.1:64342/stream |
| 项目路径 | 可选。作为 U_MCP_SERVER_PROJECT_PATH 请求头发给 IDE,留空则由 IDE 自己挑项目 |
| 启用 / 自动重载 | 分别控制是否挂载、是否允许后台自动重连 |

端口没有公式:本机实测 IDEA 64342、CLion 64362、PyCharm 64462,各 IDE 各自配置,请以 IDE 显示为准。

路由模式 vs 全量模式(必读)

IDE 的 MCP Server 有一个「工具暴露」开关。仅路由模式下,tools/list 只返回 1 个工具 execute_tool,其余全部藏在它后面,参数是字符串形式的 --name value,不是结构化 JSON:

mcp__idea__execute_tool → get_file_problems --filePath src/main.ts

本机实测该模式下 IDE 实际有 66 个工具。这是连接建立时的快照:切换模式后必须重新连接才能看到新工具面。

读写走 IDE

设置页顶部的开关,存 ideIo.enabled(默认开)。开启后插件在工具调用层拦截 read / write / edit,改走 IDE 的 read_file / create_new_file / apply_patch。

路由规则:把目标文件绝对路径与各已启用连接的 projectPath 做最长前缀匹配;并列即失败;无匹配但恰好只有一条启用连接则用它(诊断里记 fallback: true)。

核心语义:无法路由时明确失败,绝不静默回落磁盘。 报错会给出三种解法——关掉开关 / 启用一条覆盖该文件的连接 / 修正 projectPath。

还没有任何连接时

开关可以开着,插件不会因此拒绝工作,但也不会替你做决定。第一次 read / write / edit 会先向你提问:

| 选项 | 结果 |
| 粘贴 JetBrains 配置 | 把 IDE「复制配置」的 JSON 填进自定义回答,插件自动建一条连接并用同一次调用重试 |
| 让这次不代执行 | 插件不写任何东西,并明确告诉模型:要读写磁盘就自己走 shell,或先启用连接再重试 |
| 取消本次操作 | 什么都不做 |
第二条是刻意的:成功结果里的附加说明会被框架丢弃,若插件替你写了磁盘,模型会误以为数据来自 IDE——这正是本项目要消灭的那种错觉。多一轮对话,换掉一次静默的认知错误。

edit 不整读文件:先用 search_text 定位,再用 apply_patch 应用,有预算上限(上下文 3 行、候选上限 10、单次累计读取 200 行、patch 最多 2 次)。

已知限制与边界

这一节是项目的诚实之处,装之前请读完。完整风险说明见安全。

| 限制 | 说明 |
| shell 删除不受约束 | 「读写走 IDE」只拦工具层的 read/write/edit。模型若用 Remove-Item / rm 删除,IDE 不知情,Local History 也救不了 |
| 终端与 SQL 不受该开关约束 | IDE 的 execute_terminal_command、execute_sql_query 照常可用,不受路由策略影响 |
| 写入的 EOL 由 IDE 决定 | 实测本机经 IDE 写入得到 CRLF,而 DSH 原生写入是 LF |
| 读到的是 IDE 缓冲区 | 文件在 IDE 里打开且有未保存修改时,读到的是缓冲区内容(实测 640 行 vs 磁盘 763 行) |
| apply_patch 不查歧义 | 多处相同文本时它静默修改第一处并报成功(实测确认)。因此 edit 必须先搜索定位 |
| 文档与本机实现不一致 | 官方文档写 read_file 用 mode/start_line;本机 2026.2.3 实际是 (file_path, offset, limit) |
| apply_patch 批量非原子 | 合法操作照做、非法操作逐条报错、不回滚:1 out of 2 operations applied |
| write 内部仍读一次 | 为生成原生 before,内部读 offset 1 / limit 5000;>5000 行的文件会带截断标记 |

构建

源码是 TypeScript / TSX,tsc 1:1 编译,不打包:

pnpm build # tsc -p tsconfig.host.json && tsc -p tsconfig.client.json

| 源码 | 产物 | 说明 |
| src/index.ts | lib/index.js | Host 半,Node ESM,允许裸 import |
| src/client.tsx | client.js | 客户端半(设置页),产物里不许出现任何 import |

Host 与客户端用两份配置分别编译(tsconfig.host.json / tsconfig.client.json),共用 tsconfig.json 里的编译选项:宿主产物进 lib/,客户端产物留在根——这是 DSH 插件的通行布局。静态资源放 assets/(icon.svg);locale/.json 必须留在根,DSH 既按目录约定读它、也要求它出现在 exports 里。

JSX 用经典运行时(jsx: "react" + jsxFactory: "h"):浏览器侧是裸 ESM 工厂脚本,解析不了 react/jsx-runtime。

@deepseek-ai/* 是 peer 依赖,工程内没有 node_modules 供解析,类型由 src/env.d.ts 的模块 shim 顶上。

pnpm-lock.yaml 不入库:本目录 pnpm install 会因上游尚未发布的包而 404,lock 无法再生成/校验;pnpm-workspace.yaml 里因此关了 verifyDepsBeforeRun。

兼容性

| 项 | 值 |
| IDE | 2025.2+ 内置 MCP Server(默认启用) |
| 本机实测 | 2026.2.3(IU-262.10968.63),since-build = 262 |
| DSH 侧传输 | stdio、streamable-http(不支持 SSE) |
| 向下兼容 | 未测试,交社区反馈 |

路线

技术判断、实测记录与后续计划在路线规划,按主题分节记录了「为什么是这样做」以及踩过的坑。下一轮计划把删除、移动、符号改名也接到 IDE(apply_patch 的 Delete / move-to 与 rename_refactoring)。

支持作者

如果这个插件帮到了你,可以扫码请我喝杯咖啡。

赞助完全自愿,不影响 MIT 许可 授予的任何权利:不赞助也一样可以用、改、分发。

License

MIT © 2026 极下少主 (darkwithlight)
预览分享卡片长什么样 ↓darkwithlight/dsh-mcp-jetbrains
分享 · DeepSeek Harness Hub
darkwithlight/dsh-mcp-jetbrains

把 JetBrains IDE 的诊断、构建与终端能力接给智能体

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部