Inleiding
@dineug/erd-editor-mcp is een MCP-server waarmee een codeeragent erd-editor-diagrammen kan bewerken.
Claude Code, Codex en elke andere client van het Model Context Protocol krijgen één tool per bewerking op een document: een tabel toevoegen, de naam van een kolom wijzigen, een relatie tussen twee tabellen leggen, een DDL-dump importeren, het schema als SQL teruglezen.
Als het document geopend is in de ERD Editor van VS Code, Obsidian of een JetBrains-IDE, sluit de agent zich bij de editor aan zoals een medebewerker. Elke wijziging verschijnt op het canvas terwijl ze gebeurt, en ongedaan maken door de agent draait alleen zijn eigen bewerkingen terug. In VS Code blijven de wijzigingen van de agent niet opgeslagen tot de agent of jij opslaat, terwijl Obsidian en een JetBrains-IDE ze opslaan zoals ze die van jou opslaan. Als geen editor het document bedient, bewerken dezelfde tools het bestand zelf.

Wat een agent kan doen
- Een schema in een gesprek opbouwen of wijzigen: tabellen, kolommen en elke kolomoptie, relaties met hun kardinaliteit en hun acties voor ON DELETE en ON UPDATE, indexen, memo's, kleuren en posities op het canvas. Zie Relaties.
- Tabellen in tabelgroepen samenbrengen: een groep toevoegen rond de tabellen die de agent noemt of over een gebied van het canvas, en daarna de naam ervan wijzigen, de groep kleuren, samen met zijn tabellen verplaatsen, de grootte ervan wijzigen, er tabellen in plaatsen of uit halen, of de groep verwijderen, waarbij zijn tabellen blijven staan waar ze staan. Zie Tabelgroepen.
- Tabellen en kolommen benoemen met de woorden en termen van het tabblad Woordenboek van de editor, en kolommen koppelen aan de domeinen ervan, die de gegevenstypen van die kolommen bepalen. De agent stelt de logische namen van tabellen en kolommen in, en de woordenboeken leiden daaruit de fysieke namen af zoals in de editor, al blijft een handmatig ingevoerde fysieke naam staan, tenzij die leeg is. De agent voegt domeinen, woorden en termen toe, wijzigt en verwijdert ze, en leidt na een wijziging van een woord of term de fysieke namen opnieuw af voor één kolom, één tabel of het hele document. De agent somt op wat het blad
Checksvan het tabblad vindt: verboden woorden, niet-geregistreerde woorden en synoniemen; namen die twee rijen van één woordenboek delen; koppelingen aan een domein dat niet in het document staat; fysieke namen die afwijken van de naam die hun term geeft; en kolommen die afwijken van het gegevenstype van hun domein. Zie Woordenboeken en Woordenboekcontroles. - Het document vervangen door een schema dat uit SQL DDL, GraphQL SDL, DBML of AML is geparseerd, of door een ander
.erd.json-document. Of dat schema of document onder het diagram toevoegen en alles behouden wat er al staat, zoalsImport and Addin de editor dat doet. EenTableGroupuit DBML wordt in beide gevallen een tabelgroep. Een schema dat het document vervangt, behoudt de woordenboeken van het document, een document dat het vervangt, brengt zijn eigen woordenboeken mee, en een toevoeging brengt er geen mee. Zie Importeren. - Het diagram teruglezen, met zijn logische namen en woordenboekrijen, als een lijst met id's, als volledige entiteiten of als de
.erd.json-tekst die bij het opslaan wordt geschreven. Of het lezen als DDL voor elk van de acht databases, met de keuzesStatementsenHeadervan het tabblad Schema SQL en de schakelaarWrite logical names into empty commentservan. Bij een schema met duizenden tabellen leest de agent telkens een pagina, een paar tabellen of de tabellen van een paar tabelgroepen. Zie Een document lezen. - De database, de databasenaam en de scripts instellen die in de Schema SQL vóór en na de tabellen worden geschreven, zoals
CREATE EXTENSIONvóór de tabellen ofGRANTerna.erd_readgeeft de scripts los, of binnen de DDL van het hele document. Zie Instellingen. - Meerdere bewerkingen als één bewerking uitvoeren, alles of niets, die als één stap ongedaan wordt gemaakt. Zie erd_batch.
- Zijn eigen bewerkingen ongedaan maken en opnieuw uitvoeren, nooit die van jou.
Wat de agent niet doet:
- Zoomen, scrollen of van tabblad wisselen. Die horen bij elke kijker afzonderlijk, dus geen enkele tool doet dat. Een import die het document vervangt, verplaatst de weergave toch, zelfs als
Viewportvergrendeld is, zoalsImportin de editor dat doet: terug naar het begin van het canvas op 100%, of, meterd_import_json, naar de weergave van het document dat hij laadt, en ook naar het tabblad daarvan, tenzij dat documentCanvas Typevergrendelt. Zie Importeren. - De naamweergave wisselen tussen
Physical Names,Logical NamesenBoth Names. Die hoort bij elke kijker afzonderlijk zolang de vergrendeling ervan aanstaat, zoals in een nieuw diagram, en kies je zelf in de editor zodra de vergrendeling uitstaat, dus geen enkele tool doet dat. De agent leest en schrijft logische namen, ongeacht de weergave. Eenerd_import_jsondie het document vervangt, brengt de naamweergave van het document dat hij laadt alleen mee als in dat document de vergrendelingName Viewuitstaat. View Option, de taal en de naamnotaties van de Codegenerator, het type aanhalingstekens of de instellingenRelationship DataType Sync,Maximum comment widthenColumn Ordervan het tabblad Instellingen wijzigen. Die stel je zelf in de editor in, en de agent leest ze zoals het bestand ze opslaat.- Een vergrendeling in- of uitschakelen. Alleen
erd_import_json, wanneer die het hele document vervangt, wijzigt de vergrendelingen of de instellingen hierboven, in die van het document dat hij laadt. Een document zonder veldlockSettings, zoals een bestand dat is opgeslagen door de VS Code-extensie vóór4.0.0of door de Obsidian- of JetBrains-plug-in vóór1.0.0, schakelt elke vergrendeling in. Het ongedaan maken van elke import die het document heeft vervangen, brengt de instellingen en vergrendelingen terug die het document eerder had. - Een relatie opnieuw aan andere kolommen toewijzen, zoals
Map Columnsdoet. In plaats daarvan verwijdert de agent de relatie, waarbij de kolommen met refererende sleutel ervan blijven staan, en koppelt hij de gewenste kolommen meterd_link_columns, in éénerd_batchdie als één stap ongedaan wordt gemaakt. - Een woordenboek als CSV importeren of exporteren, een blad sorteren of rijen boven of onder een rij invoegen, zoals het tabblad Woordenboek doet. De agent voegt rijen toe, wijzigt en verwijdert ze, veel tegelijk in één
erd_batch, en een nieuwe rij komt aan het einde van haar blad. - De Codegenerator uitvoeren.
erd_readgeeft DDL of JSON terug, en op basis daarvan schrijft de agent zelf de code.
Hoe het werkt
De server is een stdio-proces dat je MCP-client start. Bij elke aanroep zoekt hij een editor die het document beheert: een VS Code-venster, een Obsidian-kluisvenster of een JetBrains-IDE, elk met de ERD Editor-extensie of -plug-in.
- Live — een editor heeft het document in zijn werkruimte, zijn kluis of een van zijn geopende projecten, of heeft het geopend. De server neemt deel aan de bewerkingssessie van die editor en de bewerking komt in de editor terecht: niet opgeslagen in VS Code, en opgeslagen zoals jouw eigen bewerkingen in Obsidian en een JetBrains-IDE.
- Headless — geen editor. De server laadt het bestand, past de bewerking toe en schrijft het bestand terug.
- Geweigerd — een editor beheert het document, maar zijn hub staat uit. De server leest van schijf maar schrijft niets, omdat de geopende editor het bestand de volgende keer dat hij opslaat zou kunnen overschrijven. Een JetBrains-IDE waarvan de hub aanstaat, weigert ook een document te wijzigen dat alleen in projecten staat die hij niet vertrouwt, al kan de agent het nog wel lezen. Als de hub van de editor aanstaat, maar zijn ERD Editor-extensie of -plug-in een ander hubprotocol gebruikt dan de server, wordt elke aanroep op het document geweigerd, leesopdrachten inbegrepen, met
protocolMismatchen een bericht dat de kant noemt die moet worden bijgewerkt — zie Bijwerken.
Zie Live en headless voor de details.
Vereisten
| Node.js | 22.12 of later, om de server uit te voeren |
| Een MCP-client | Claude Code, Codex of elke client die een stdio-server kan starten |
| VS Code, voor live bewerken | 1.101.0 of later, met de ERD Editor-extensie 4.0.0 of later |
| Obsidian, voor live bewerken | De desktopapp 1.5.7 of later, met de ERD Editor-plug-in 1.0.0 of later |
| Een JetBrains-IDE, voor live bewerken | Een op IntelliJ gebaseerde IDE 2025.2 of later, met de ERD Editor-plug-in 1.0.0 of later |
Server 1.0.0 of later en de versies hierboven gebruiken hubprotocol 2.
De eerdere versies die agents bedienen, gebruiken protocol 1: de VS Code-extensie 3.0.0 tot en met 3.1.0, de Obsidian-plug-in 0.1.0 en 0.2.0 en de JetBrains-plug-in 0.9.0 en 0.10.0.
Zo'n versie en server 1.0.0 of later weigeren elkaar, en dat doen ook een eerdere server en de versies hierboven — zie Bijwerken.
Een VS Code-extensie vóór 3.0.0 of een JetBrains-plug-in vóór 0.9.0 heeft geen hub, dus ziet de server hem niet en bewerkt hij het bestand op schijf, zelfs een diagram dat erin geopend is.
De tools voor logische namen, domeinen en de woordenboeken hebben server 1.1.0 of later nodig en, overal waar het document geopend is, ten minste de VS Code-extensie 4.2.0 of de Obsidian- of JetBrains-plug-in 1.2.0.
Van de versies hierboven laat een extensie vóór 4.2.0 of een plug-in vóór 1.2.0 de agent nog steeds live bewerken, omdat die protocol 2 gebruikt, maar ze negeert de logische namen, domeinkoppelingen en woordenboekrijen die de agent schrijft, en laat ze weg wanneer ze het bestand opslaat.
Een server vóór 1.1.0 die een bestand op schijf bewerkt, schrijft het terug zonder de logische namen, domeinkoppelingen en woordenboekrijen ervan — zie Bijwerken.
Bewerkingen die jij en de agent op hetzelfde moment maken aan dezelfde naam of hetzelfde veld, of aan de positie of grootte van dezelfde tabel, memo of tabelgroep, komen in de editor en voor de agent op hetzelfde uit met server 1.2.0 of later en, overal waar het document is geopend, de VS Code-extensie 4.3.0 of later of de Obsidian- of JetBrains-plug-in 1.3.0 of later.
Een kleur, het databasesysteem en de volgorde van de kolommen in een tabel of een index zijn de uitzonderingen — zie Bewerkingen op hetzelfde moment.
Volgende: Installeren.