מבוא
@dineug/erd-editor-mcp הוא שרת MCP שמאפשר לסוכן קוד לערוך תרשימים של erd-editor.
Claude Code, Codex וכל לקוח אחר של ה-Model Context Protocol מקבלים כלי אחד לכל פעולה על מסמך: הוספת טבלה, שינוי שם של עמודה, יצירת קשר בין שתי טבלאות, ייבוא dump של DDL, קריאת הסכמה בחזרה כ-SQL.
כשהמסמך פתוח ב-ERD Editor ב-VS Code, ב-Obsidian או ב-IDE של JetBrains, הסוכן מצטרף לעורך כמו שותף לעריכה. כל שינוי מופיע בבד הציור ברגע שהוא מתרחש, וביטול הפעולה של הסוכן מבטל רק את העריכות שלו. VS Code משאיר את השינויים של הסוכן לא שמורים עד שהסוכן או המשתמש שומרים, ואילו Obsidian ו-IDE של JetBrains שומרים אותם כפי שהם שומרים את השינויים של המשתמש. כשאין עורך שמחזיק את המסמך, אותם כלים עורכים את הקובץ עצמו.

מה סוכן יכול לעשות
- בנייה או שינוי של סכמה בשיחה: טבלאות, עמודות וכל אפשרויות העמודות, קשרים עם הקרדינליות שלהם ועם פעולות ה-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.
- חי – עורך מכיל את המסמך בסביבת העבודה שלו, בכספת שלו או באחד מהפרויקטים הפתוחים שלו, או שהמסמך פתוח בו. השרת מצטרף לסשן העריכה של אותו עורך, והעריכה מגיעה לעורך: ב-VS Code היא נשארת לא שמורה, וב-Obsidian וב-IDE של JetBrains היא נשמרת כמו העריכות של המשתמש.
- ללא ממשק – אין עורך. השרת טוען את הקובץ, מחיל את העריכה וכותב את הקובץ בחזרה.
- נדחה – עורך מחזיק את המסמך, אבל ה-hub שלו כבוי. השרת קורא מהדיסק אבל אינו כותב דבר, כי העורך הפתוח עלול לדרוס את הקובץ בשמירה הבאה שלו. גם IDE של JetBrains שה-hub שלו מופעל דוחה שינוי של מסמך שמוחזק רק על ידי פרויקטים שהוא אינו נותן בהם אמון, אף שהסוכן עדיין יכול לקרוא אותו. כשה-hub של העורך מופעל, אבל ההרחבה או התוסף של ERD Editor בעורך מדברים בפרוטוקול hub שונה מזה של השרת, כל קריאה שנוגעת למסמך נדחית, כולל כלי הקריאה, עם
protocolMismatchוהודעה שמציינת את הצד שיש לעדכן – ראו עדכון.
לפרטים, ראו מצב חי ומצב ללא ממשק.
דרישות
| 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 של פרוטוקול ה-hub.
הגרסאות הקודמות שמשרתות סוכנים מדברות בפרוטוקול 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 אין hub, ולכן השרת אינו רואה אותם ועורך את הקובץ בדיסק, אפילו תרשים שפתוח בהם.
הכלים לשמות לוגיים, לתחומים ולמילונים דורשים את השרת בגרסה 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 ומעלה.
צבע, מסד הנתונים וסדר העמודות בטבלה או באינדקס הם החריגים – ראו עריכות שנעשות באותו רגע.
השלב הבא: התקנה.