跳到主要内容

简介

@dineug/erd-editor-mcp 是一个让编码智能体编辑 erd-editor 图的 MCP 服务器。 Claude Code、Codex 以及其他任何 Model Context Protocol 客户端,都会为文档上的每种操作获得一个工具:添加表、重命名列、关联两个表、导入 DDL 转储、以 SQL 形式读回 schema。

当文档在 VS Code、Obsidian 或 JetBrains IDE 的 ERD Editor 中打开时,智能体会像协作者一样加入编辑器。 每处变更都会在发生的同时出现在画布上,而智能体的 Undo 只会撤回它自己的编辑。 VS Code 会让智能体的变更在智能体或你保存之前一直保持未保存状态,而 Obsidian 和 JetBrains IDE 会像保存你自己的编辑一样保存它们。 没有编辑器持有该文档时,同样的工具会直接编辑文件本身。

编码智能体向在 VS Code 中打开的图添加表和关系

智能体能做什么​

  • 在对话中构建或修改 schema:表、列及所有列选项、关系及其基数和 ON DELETE 与 ON UPDATE 操作、索引、备注、颜色,以及在画布上的位置。参见关系。
  • 用从 SQL DDL、GraphQL SDL、DBML 或 AML 解析出的 schema,或者用另一个 .erd.json 文档替换当前文档。
  • 以 id 列表、完整实体、八种数据库中任意一种的 DDL,或原始 JSON 的形式读回图。在包含数千个表的 schema 上,它每次只读取一页或几个表。参见读取文档。
  • 修改文档中存储的设置:数据库、Code Generator 的语言与名称大小写、括号类型,以及显示图的哪些部分,例如备用键标记,或关系连接线上的 ON DELETE 与 ON UPDATE 标签。参见设置。
  • 把多次编辑作为一次编辑执行,要么全部生效,要么全部不生效,一次 Undo 即可撤回。参见 erd_batch。
  • Undo 与 Redo 它自己的编辑,而绝不会动你的编辑。

它不做的事:

  • 缩放、滚动或切换标签页。这些属于每位查看者,而不属于文档,因此没有任何工具会改变它们。
  • 运行 Code Generator。erd_read 返回 DDL 或 JSON,智能体会据此自行编写代码。

工作原理​

服务器是由 MCP 客户端启动的 stdio 进程。 每次调用时,它都会查找持有该文档的编辑器:VS Code 窗口、Obsidian 仓库窗口或 JetBrains IDE,且各自安装了 ERD Editor 扩展或插件。

  • 实时模式:某个编辑器的工作区、仓库或某个已打开的项目包含该文档,或者该编辑器已打开该文档。服务器加入该编辑器的编辑会话,编辑落在编辑器中:在 VS Code 中处于未保存状态,在 Obsidian 和 JetBrains IDE 中则像你自己的编辑一样被保存。
  • 无头模式:没有编辑器。服务器加载文件、应用编辑,然后把文件写回。
  • 拒绝编辑:有编辑器持有该文档,但其 hub 已关闭。服务器会从磁盘读取,但不写入任何内容,因为打开的编辑器下次保存时可能会覆盖该文件。

详情参见实时与无头模式。

环境要求​

Node.js22.12 或更高版本,用于运行服务器
MCP 客户端Claude Code、Codex,或任何能够启动 stdio 服务器的客户端
VS Code(用于实时编辑)1.101.0 或更高版本,并安装 3.0.0 或更高版本的 ERD Editor 扩展,推荐 3.1.0
Obsidian(用于实时编辑)1.5.7 或更高版本的桌面应用,并安装 0.1.0 或更高版本的 ERD Editor 插件,推荐 0.2.0
JetBrains IDE(用于实时编辑)2025.2 或更高版本的基于 IntelliJ 的 IDE,并安装 0.9.0 或更高版本的 ERD Editor 插件,推荐 0.10.0

满足最低版本但低于推荐版本的扩展或插件,仍然可以让智能体进行实时编辑。 但它会忽略关系的 ON DELETE 与 ON UPDATE 操作,无论这些操作是由智能体设置的,还是随 schema 一起导入的,参见更新。

下一步:安装。