Перейти до основного вмісту

Вступ

@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, вікно сховища (vault) Obsidian або IDE від JetBrains, у кожному з яких є розширення чи плагін ERD Editor.

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

Докладніше див. режими Live і Headless.

Вимоги​

Node.js22.12 або новіша, для запуску сервера
MCP-клієнтClaude Code, Codex або будь-який клієнт, що може запустити stdio-сервер
VS Code, для редагування в режимі Live1.101.0 або новіша, з розширенням ERD Editor версії 4.0.0 або новішої
Obsidian, для редагування в режимі LiveНастільний застосунок версії 1.5.7 або новішої, з плагіном ERD Editor версії 1.0.0 або новішої
IDE від JetBrains, для редагування в режимі LiveIDE на основі 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 усе одно дає агенту змогу редагувати в режимі Live, оскільки використовує протокол 2, але ігнорує логічні назви, прив’язки до доменів і рядки словників, які записує агент, і пропускає їх, коли зберігає файл. Сервер до версії 1.1.0, що редагує файл на диску, записує його назад без логічних назв, прив’язок до доменів і рядків словників — див. оновлення.

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

Далі: Встановлення.