Introducere
@dineug/erd-editor-mcp este un server MCP care permite unui agent de programare să editeze diagrame erd-editor.
Claude Code, Codex și orice alt client al Model Context Protocol primesc câte un instrument pentru fiecare operație asupra unui document: adăugarea unui tabel, redenumirea unei coloane, crearea unei relații între două tabele, importul unui dump DDL, citirea schemei sub formă de SQL.
Când documentul este deschis în ERD Editor din VS Code, Obsidian sau dintr-un IDE JetBrains, agentul se alătură editorului ca un colaborator. Fiecare modificare apare pe pânză în momentul în care se produce, iar anularea făcută de agent vizează doar propriile sale editări. VS Code păstrează modificările agentului nesalvate până la o salvare făcută de agent sau de dumneavoastră, în timp ce Obsidian și un IDE JetBrains le salvează așa cum le salvează pe ale dumneavoastră. Când niciun editor nu deține documentul, aceleași instrumente editează fișierul însuși.

Ce poate face un agent
- Construiește sau modifică o schemă prin conversație: tabele, coloane și toate opțiunile coloanelor, relații cu cardinalitatea lor și cu acțiunile ON DELETE și ON UPDATE, indexuri, note, culori și poziții pe pânză. Consultați Relații.
- Reunește tabele în grupuri de tabele: adaugă un grup în jurul tabelelor pe care le indică sau peste o zonă a pânzei, apoi îl redenumește, îl colorează, îl mută împreună cu tabelele sale, îl redimensionează, introduce tabele în el sau le scoate ori îl elimină, ceea ce lasă tabelele sale acolo unde se află. Consultați Grupuri de tabele.
- Denumește tabele și coloane pe baza cuvintelor și termenilor din fila Dicționar a editorului și leagă coloane de domeniile acesteia, care le dau tipurile de date. Setează numele logice ale tabelelor și coloanelor, iar dicționarele derivă din ele numele fizice așa cum o fac în editor, deși un nume fizic scris manual rămâne, cu excepția cazului în care este gol. Adaugă, modifică și elimină domenii, cuvinte și termeni și, după ce un cuvânt sau un termen se modifică, derivă din nou numele fizice pentru o coloană, un tabel sau întregul document. Listează ce detectează foaia
Checksa filei: cuvinte interzise, neînregistrate și sinonime; nume pe care le au în comun două rânduri ale aceluiași dicționar; legături cu un domeniu pe care documentul nu îl listează; nume fizice diferite de cel pe care îl dă termenul lor; precum și coloane al căror tip de date diferă de cel al domeniului lor. Consultați Dicționare și Verificările dicționarelor. - Înlocuiește documentul cu o schemă obținută prin parsarea codului SQL DDL, GraphQL SDL, DBML sau AML ori cu un alt document
.erd.json. Sau adaugă acea schemă ori acel document sub diagramă și păstrează tot ce există deja, așa cum face elementulImport and Addal editorului. Un blocTableGroupdin DBML devine un grup de tabele în ambele cazuri. O schemă care înlocuiește documentul păstrează dicționarele documentului, un document care îl înlocuiește le aduce pe ale sale, iar o adăugare nu aduce niciunul. Consultați Import. - Citește diagrama, cu numele logice și rândurile dicționarelor, ca listă de ID-uri, ca entități întregi sau ca textul
.erd.jsonpe care îl scrie o salvare. Sau o citește ca DDL pentru oricare dintre cele opt sisteme de baze de date, cu opțiunileStatementsșiHeaderale filei Schemă SQL și cu comutatorul eiWrite logical names into empty comments. La o schemă cu mii de tabele, citește pe rând câte o pagină, câteva tabele sau tabelele câtorva grupuri de tabele. Consultați Citirea unui document. - Setează baza de date, numele bazei de date și scripturile scrise înainte și după tabele în fila Schemă SQL, de exemplu
CREATE EXTENSIONînaintea lor sauGRANTdupă ele. Instrumentulerd_readreturnează scripturile separat sau în cadrul codului DDL al întregului document. Consultați Setări. - Rulează mai multe editări ca una singură, aplicate toate sau niciuna, iar o singură anulare le inversează pe toate. Consultați erd_batch.
- Anulează și reface propriile editări, niciodată pe ale dumneavoastră.
Ce nu face:
- Nu modifică zoomul, nu derulează și nu comută filele. Acestea țin de fiecare persoană care privește diagrama, așa că niciun instrument nu face acest lucru. Un import care înlocuiește documentul mută totuși vizualizarea, chiar și cu rândul
Viewportblocat, așa cum face elementulImportal editorului: înapoi la începutul pânzei, la 100%, sau, cu instrumentulerd_import_json, la vizualizarea documentului pe care îl încarcă și, în plus, la fila acestuia, cu excepția cazului în care acel document blochează rândulCanvas Type. Consultați Import. - Nu schimbă modul de afișare a numelor între
Physical Names,Logical NamesșiBoth Names. Acesta ține de fiecare persoană care privește diagrama cât timp blocarea sa este activată, cum este într-o diagramă nouă, iar după dezactivarea blocării îl alegeți dumneavoastră în editor, așa că niciun instrument nu face acest lucru. Agentul citește și scrie nume logice indiferent de modul de afișare. Un apelerd_import_jsoncare înlocuiește documentul aduce modul de afișare a numelor al documentului pe care îl încarcă doar când acel document are blocareaName Viewdezactivată. - Nu modifică
View Option, limbajul și stilurile de denumire ale generatorului de cod, tipul de delimitator sau opțiunileRelationship DataType Sync,Maximum comment widthșiColumn Orderdin fila Setări. Pe acestea le setați dumneavoastră în editor, iar agentul le citește așa cum le salvează fișierul. - Nu activează și nu dezactivează nicio blocare. Doar instrumentul
erd_import_json, când înlocuiește întregul document, schimbă blocările sau setările de mai sus cu cele ale documentului pe care îl încarcă. Un document fără câmpullockSettings, de exemplu un fișier salvat de extensia pentru VS Code înainte de versiunea4.0.0sau de pluginul pentru Obsidian ori JetBrains înainte de versiunea1.0.0, activează toate blocările. Anularea oricărui import care a înlocuit documentul readuce setările și blocările pe care documentul le avea înainte. - Nu remapează o relație pe alte coloane, așa cum face caseta de dialog
Map Columns. În schimb, agentul elimină relația, ceea ce lasă pe loc coloanele sale cheie străină, și leagă coloanele pe care le dorește cu instrumentulerd_link_columns, într-un singur apelerd_batch, pe care o singură anulare îl inversează. - Nu importă și nu exportă un dicționar ca CSV, nu sortează o foaie și nu inserează rânduri deasupra sau dedesubtul unui rând, așa cum face fila Dicționar. Agentul adaugă, modifică și elimină rânduri, multe deodată, într-un singur apel
erd_batch, iar un rând nou ajunge la sfârșitul foii sale. - Nu rulează generatorul de cod. Instrumentul
erd_readrăspunde cu DDL sau JSON, iar agentul scrie singur codul pe baza acestuia.
Cum funcționează
Serverul este un proces stdio pe care îl pornește clientul MCP. La fiecare apel, caută un editor care deține documentul: o fereastră VS Code, o fereastră a unui seif Obsidian sau un IDE JetBrains, fiecare cu extensia sau pluginul ERD Editor.
- În direct – un editor are documentul în spațiul său de lucru, în seiful său sau într-unul dintre proiectele sale deschise ori îl are deschis. Serverul se alătură sesiunii de editare a acelui editor, iar editarea ajunge în editor: nesalvată în VS Code și salvată așa cum sunt salvate editările dumneavoastră în Obsidian și într-un IDE JetBrains.
- Fără interfață – niciun editor. Serverul încarcă fișierul, aplică editarea și rescrie fișierul.
- Refuzat – un editor deține documentul, dar are hubul dezactivat. Serverul citește de pe disc, dar nu scrie nimic, deoarece editorul deschis ar putea suprascrie fișierul la următoarea salvare. Un IDE JetBrains cu hubul activat refuză, de asemenea, să modifice un document deținut doar de proiecte pe care nu le consideră de încredere, deși agentul îl poate citi în continuare. Când hubul editorului este activat, dar extensia sau pluginul său ERD Editor folosește alt protocol al hubului decât serverul, fiecare apel asupra documentului este refuzat, inclusiv citirile, cu codul
protocolMismatchși un mesaj care indică partea ce trebuie actualizată (consultați Actualizarea).
Pentru detalii, consultați În direct și fără interfață.
Cerințe
| Node.js | 22.12 sau o versiune ulterioară, pentru a rula serverul |
| Un client MCP | Claude Code, Codex sau orice client care poate porni un server stdio |
| VS Code, pentru editarea în direct | 1.101.0 sau o versiune ulterioară, cu extensia ERD Editor 4.0.0 sau o versiune ulterioară |
| Obsidian, pentru editarea în direct | Aplicația pentru desktop 1.5.7 sau o versiune ulterioară, cu pluginul ERD Editor 1.0.0 sau o versiune ulterioară |
| Un IDE JetBrains, pentru editarea în direct | Un IDE bazat pe IntelliJ 2025.2 sau o versiune ulterioară, cu pluginul ERD Editor 1.0.0 sau o versiune ulterioară |
Versiunea 1.0.0 sau o versiune ulterioară a serverului și versiunile de mai sus folosesc protocolul 2 al hubului.
Versiunile anterioare care deservesc agenți folosesc protocolul 1: extensia pentru VS Code de la versiunea 3.0.0 până la versiunea 3.1.0, pluginul pentru Obsidian în versiunile 0.1.0 și 0.2.0 și pluginul pentru JetBrains în versiunile 0.9.0 și 0.10.0.
O astfel de versiune și versiunea 1.0.0 sau o versiune ulterioară a serverului se refuză reciproc, la fel ca o versiune anterioară a serverului și versiunile de mai sus (consultați Actualizarea).
O extensie pentru VS Code anterioară versiunii 3.0.0 sau un plugin pentru JetBrains anterior versiunii 0.9.0 nu are hub, așa că serverul nu îl vede și editează fișierul pe disc, chiar și pe cel al unei diagrame deschise în acesta.
Instrumentele pentru nume logice, domenii și dicționare necesită versiunea 1.1.0 sau o versiune ulterioară a serverului și, oriunde este deschis documentul, cel puțin extensia pentru VS Code 4.2.0 sau pluginul pentru Obsidian ori JetBrains 1.2.0.
Dintre versiunile de mai sus, o extensie anterioară versiunii 4.2.0 sau un plugin anterior versiunii 1.2.0 permite în continuare agentului să editeze în direct, deoarece folosește protocolul 2, dar ignoră numele logice, legăturile cu domeniile și rândurile dicționarelor pe care le scrie agentul și le omite când salvează fișierul.
Un server anterior versiunii 1.1.0 care editează un fișier pe disc îl rescrie fără numele logice, legăturile cu domeniile și rândurile dicționarelor (consultați Actualizarea).
Editările pe care dumneavoastră și agentul le faceți în același moment aceluiași nume sau câmp ori poziției sau dimensiunii aceluiași tabel, aceleiași note sau aceluiași grup de tabele ajung la fel în editor și pentru agent cu serverul 1.2.0 sau o versiune ulterioară și, oriunde este deschis documentul, cu extensia pentru VS Code 4.3.0 sau o versiune ulterioară ori cu pluginul pentru Obsidian sau JetBrains 1.3.0 sau o versiune ulterioară.
O culoare, baza de date și ordinea coloanelor dintr-un tabel sau dintr-un index sunt excepțiile (consultați Editări făcute în același moment).
Pasul următor: Instalare.