Перейти к основному содержимому

Введение

@dineug/erd-editor-mcp — это MCP-сервер, который позволяет агенту для программирования редактировать диаграммы erd-editor. Claude Code, Codex и любой другой клиент Model Context Protocol получают по одному инструменту на каждую операцию с документом: добавить таблицу, переименовать столбец, связать две таблицы, импортировать дамп DDL, прочитать схему обратно в виде SQL.

Когда документ открыт в ERD Editor для VS Code, Obsidian или IDE JetBrains, агент подключается к редактору как соавтор. Каждое изменение появляется на холсте сразу, как только оно вносится, а отмена, которую выполняет агент, откатывает только его собственные правки. VS Code оставляет изменения агента несохраненными, пока документ не сохранит агент или вы, а Obsidian и IDE JetBrains сохраняют их так же, как сохраняют ваши собственные. Если документ не находится ни в одном редакторе, те же инструменты редактируют сам файл.

Добавление агентом для программирования таблиц и связей в диаграмму, открытую в VS Code

Что может агент​

  • Создавать или изменять схему в ходе диалога: таблицы, столбцы и все параметры столбцов, связи с их кардинальностью и действиями ON DELETE и ON UPDATE, индексы, заметки, цвета и расположение на холсте. См. Связи.
  • Объединять таблицы в группы таблиц: добавлять группу вокруг названных им таблиц или поверх области холста, а затем переименовывать ее, задавать ей цвет, перемещать вместе с ее таблицами, изменять ее размер, добавлять в нее таблицы или исключать их из нее либо удалять ее, оставляя таблицы на своих местах. См. Группы таблиц.
  • Давать имена таблицам и столбцам по словам и терминам вкладки «Словарь» редактора и привязывать столбцы к ее доменам, которые задают им типы данных. Агент задает логические имена таблиц и столбцов, а словари формируют из них физические имена так же, как в редакторе, хотя физическое имя, написанное вручную, сохраняется, если только оно не пустое. Агент добавляет, изменяет и удаляет домены, слова и термины, а после изменения слова или термина заново формирует физические имена для одного столбца, одной таблицы или всего документа. Он перечисляет то, что находит лист Checks этой вкладки: запрещенные и незарегистрированные слова и слова-синонимы; имена, общие для двух строк одного словаря; привязки к домену, которого нет в документе; физические имена, отличные от того, которое дает их термин; и столбцы, тип данных которых расходится с типом их домена. См. Словари и Проверки словарей.
  • Заменять документ схемой, полученной при разборе SQL DDL, GraphQL SDL, DBML или AML, либо другим документом .erd.json. Или добавлять эту схему или документ под диаграммой, сохраняя все, что в ней уже есть, как это делает пункт Import and Add в редакторе. Блок TableGroup из DBML в обоих случаях становится группой таблиц. Схема, заменяющая документ, сохраняет его словари, документ, заменяющий его, приносит свои, а добавление не приносит никаких. См. Импорт.
  • Читать диаграмму обратно вместе с ее логическими именами и строками словарей в виде списка идентификаторов, сущностей целиком или текста .erd.json, который записывается при сохранении. Или читать ее в виде DDL для любой из восьми баз данных с вариантами Statements и Header вкладки «Схема SQL» и ее переключателем Write logical names into empty comments. В схеме из тысяч таблиц агент читает за раз страницу, несколько таблиц или таблицы нескольких групп таблиц. См. Чтение документа.
  • Задавать базу данных, имя базы данных и скрипты, которые записываются в Схеме SQL перед таблицами и после них, например CREATE EXTENSION перед таблицами или GRANT после них. Инструмент erd_read выдает скрипты отдельно или в составе DDL всего документа. См. Настройки.
  • Выполнять несколько правок как одну, которая применяется целиком или не применяется вовсе и откатывается одной отменой. См. erd_batch.
  • Отменять и повторять собственные правки, но никогда не ваши.

Чего агент не делает:

  • Масштабировать, прокручивать или переключать вкладки. Это остается за каждым, кто просматривает документ, поэтому ни один инструмент этого не делает. Импорт, заменяющий документ, все же перемещает вид даже при включенной блокировке Viewport, как и пункт Import в редакторе: обратно в начало холста с масштабом 100% или, в случае erd_import_json, к виду загружаемого документа, а также на его вкладку, если только в этом документе не включена блокировка Canvas Type. См. Импорт.
  • Переключать режим отображения имен между Physical Names, Logical Names и Both Names. Пока его блокировка включена, как в новой диаграмме, режим остается за каждым, кто просматривает документ, а после выключения блокировки его выбираете вы в редакторе, поэтому ни один инструмент этого не делает. Агент читает и записывает логические имена в любом режиме. Вызов erd_import_json, заменяющий документ, приносит режим отображения имен загружаемого документа, только если в этом документе блокировка Name View выключена.
  • Изменять переключатели View Option, язык и стили имен Генератора кода, тип кавычек или параметры Relationship DataType Sync, Maximum comment width и Column Order на вкладке «Настройки». Их задаете вы в редакторе, а агент читает их в том виде, в каком они сохранены в файле.
  • Включать или выключать блокировку. Только инструмент erd_import_json при замене всего документа меняет блокировки или перечисленные выше настройки — на значения из загружаемого документа. В документе без поля lockSettings, например в файле, сохраненном расширением VS Code до версии 4.0.0 либо плагином Obsidian или JetBrains до версии 1.0.0, включены все блокировки. Отмена любого импорта, заменившего документ, возвращает настройки и блокировки, которые были у документа до этого импорта.
  • Заново сопоставлять связь с другими столбцами, как это делает окно Map Columns. Вместо этого агент удаляет связь, при этом ее столбцы внешнего ключа остаются на месте, и связывает нужные ему столбцы с помощью erd_link_columns — в одном вызове erd_batch, который откатывается одной отменой.
  • Импортировать или экспортировать словарь в формате CSV, сортировать лист или вставлять строки над строкой или под ней, как это делает вкладка «Словарь». Агент добавляет, изменяет и удаляет строки, в том числе много сразу в одном вызове erd_batch, а новая строка добавляется в конец своего листа.
  • Запускать Генератор кода. Инструмент erd_read возвращает DDL или JSON, и агент сам пишет код на их основе.

Как это работает​

Сервер — это stdio-процесс, который запускает MCP-клиент. При каждом вызове он ищет редактор, в котором находится документ: окно VS Code, окно хранилища Obsidian или IDE JetBrains, в каждом из которых установлено расширение или плагин ERD Editor.

  • Live — документ находится в рабочей области, хранилище или одном из открытых проектов редактора либо открыт в редакторе. Сервер подключается к сеансу редактирования этого редактора, и правка попадает в редактор: в VS Code она остается несохраненной, а в Obsidian и IDE JetBrains сохраняется так же, как ваши собственные правки.
  • Headless — редактора нет. Сервер загружает файл, применяет правку и записывает файл обратно.
  • Отказ — документ находится в редакторе, но хаб этого редактора выключен. Сервер читает с диска, но ничего не записывает, так как открытый редактор может перезаписать файл при следующем сохранении. IDE JetBrains с включенным хабом также отказывается изменять документ, который находится только в проектах, которым она не доверяет, хотя агент по-прежнему может его читать. Если хаб редактора включен, но его расширение или плагин ERD Editor использует протокол хаба, отличный от протокола сервера, все вызовы для этого документа, в том числе чтение, отклоняются с кодом protocolMismatch и сообщением, в котором указано, какую сторону нужно обновить, — см. Обновление.

Подробнее см. Режимы Live и Headless.

Требования​

Node.jsВерсия 22.12 или новее для запуска сервера
MCP-клиентClaude Code, Codex или любой клиент, который может запустить stdio-сервер
VS Code для редактирования вживуюВерсия 1.101.0 или новее с расширением ERD Editor версии 4.0.0 или новее
Obsidian для редактирования вживуюНастольное приложение версии 1.5.7 или новее с плагином ERD Editor версии 1.0.0 или новее
IDE JetBrains для редактирования вживуюIDE на основе IntelliJ версии 2025.2 или новее с плагином ERD Editor версии 1.0.0 или новее

Сервер версии 1.0.0 или новее и перечисленные выше версии используют протокол хаба 2. Более ранние версии с поддержкой агентов используют протокол 1: расширение VS Code версий с 3.0.0 по 3.1.0, плагин Obsidian версий 0.1.0 и 0.2.0 и плагин JetBrains версий 0.9.0 и 0.10.0. Такая версия и сервер версии 1.0.0 или новее отклоняют друг друга, и так же ведут себя более ранний сервер и перечисленные выше версии — см. Обновление. У расширения VS Code до версии 3.0.0 или плагина JetBrains до версии 0.9.0 нет хаба, поэтому сервер не видит такой редактор и редактирует файл на диске, даже если диаграмма открыта в нем.

Инструментам для логических имен, доменов и словарей нужен сервер версии 1.1.0 или новее, а везде, где открыт документ, — как минимум расширение VS Code версии 4.2.0 или плагин Obsidian или JetBrains версии 1.2.0. Из перечисленных выше версий расширение до версии 4.2.0 или плагин до версии 1.2.0 по-прежнему позволяет агенту редактировать вживую, так как использует протокол 2, но игнорирует логические имена, привязки к доменам и строки словарей, которые записывает агент, и не записывает их при сохранении файла. Сервер до версии 1.1.0, редактируя файл на диске, записывает его обратно без логических имен, привязок к доменам и строк словарей — см. Обновление.

Правки, которые вы и агент в один и тот же момент вносите в одно и то же имя или поле либо в положение или размер одной и той же таблицы, заметки или группы таблиц, приходят к одному результату в редакторе и у агента при сервере версии 1.2.0 или новее и, везде, где открыт документ, при расширении VS Code версии 4.3.0 или новее либо плагине Obsidian или JetBrains версии 1.3.0 или новее. Исключения составляют цвет, база данных и порядок столбцов в таблице или индексе — см. Правки, сделанные в один и тот же момент.

Далее: Установка.