はじめに
@dineug/erd-editor-mcp は、コーディングエージェントが erd-editor のダイアグラムを編集できるようにする MCP サーバーです。
Claude Code、Codex をはじめとする Model Context Protocol のクライアントは、ドキュメントに対する操作ごとに 1 つのツールを使えます。テーブルの追加、カラム名の変更、2 つのテーブルの関連付け、DDL ダンプの読み込み、SQL としてのスキーマの読み出しなどです。
ドキュメントが VS Code、Obsidian、または JetBrains IDE の ERD Editor で開かれているときは、エージェントは共同編集の参加者のようにエディタに加わります。 変更はその場でキャンバスに現れます。エージェントの Undo は、エージェント自身の編集だけを元に戻します。 VS Code はエージェントかユーザーが保存するまでエージェントの変更を未保存のままにし、Obsidian と JetBrains IDE はユーザー自身の編集と同じようにそれらを保存します。 そのドキュメントを扱うエディタがない場合は、同じツールがファイルそのものを編集します。

エージェントにできること
- 会話しながらスキーマを作成・変更します。テーブル、カラムとすべてのカラムオプション、リレーションシップとそのカーディナリティおよび ON DELETE と ON UPDATE のアクション、インデックス、メモ、色、キャンバス上の位置が対象です。リレーションシップを参照してください。
- テーブルをテーブルグループにまとめます。指定したテーブルを囲むように、またはキャンバス上の範囲にグループを追加し、その後、名前の変更、色の指定、テーブルと一緒の移動、サイズ変更、テーブルの追加と削除、グループの削除を行います。グループを削除しても、そのテーブルはその場所に残ります。テーブルグループを参照してください。
- SQL DDL、GraphQL SDL、DBML、AML から解析したスキーマや、別の
.erd.jsonドキュメントで、ドキュメントを置き換えます。または、エディタのImport and Addと同じように、すでにあるものをすべて残したまま、そのスキーマやドキュメントをダイアグラムの下に追加します。DBML のTableGroupは、どちらの場合もテーブルグループとして取り込まれます。読み込みを参照してください。 - ダイアグラムを、ID の一覧、エンティティ全体、保存で書き込まれるとおりの
.erd.jsonのテキストとして、または Schema SQL タブのStatementsとHeaderの選択肢を指定して、8 つのデータベースいずれかの DDL として読み出します。数千のテーブルがあるスキーマでは、1 ページずつ、数個のテーブルずつ、または数個のテーブルグループのテーブルずつ読み取ります。ドキュメントの読み取りを参照してください。 - データベース、データベース名、そして Schema SQL でテーブルの前後に書き出されるスクリプトを設定します。テーブルの前に置く
CREATE EXTENSIONや、後に置くGRANTなどです。erd_readは、スクリプトだけを返すことも、ドキュメント全体の DDL の中に含めて返すこともできます。設定を参照してください。 - 複数の編集を、すべて適用するか何も適用しないかの 1 つの編集として実行し、1 回の Undo で元に戻せます。erd_batch を参照してください。
- 自身の編集を Undo・Redo します。ユーザーの編集は対象外です。
できないことは次のとおりです。
- 拡大・縮小、スクロール、タブの切り替え。これらは各閲覧者に属するため、それを行うツールはありません。ただし、ドキュメントを置き換える読み込みは、エディタの
Importと同じように、Viewportがロックされていても表示を動かします。キャンバスの開始位置に 100% で戻るか、erd_import_jsonの場合は読み込むドキュメントの表示に移り、そのドキュメントがCanvas Typeをロックしていなければ、そのタブにも切り替わります。読み込みを参照してください。 View Option、Code Generator の言語と名前のケース、括弧の種類、設定タブのRelationship DataType Sync、Maximum comment width、Column Orderの変更。これらはユーザーがエディタで設定するもので、エージェントはファイルに保存されているとおりに読み取ります。- ロックのオンとオフの切り替え。ロックや上記の設定を変えるのは、ドキュメント全体を置き換える
erd_import_jsonだけで、読み込むドキュメントのロックと設定に変わります。以前のリリースで保存したファイルのようにlockSettingsフィールドのないドキュメントでは、すべてのロックがオンになります。ドキュメントを置き換えた読み込みを Undo すると、どの読み込みでも、ドキュメントが読み込み前に持っていた設定とロックが戻ります。 Map Columnsのような、リレーションシップの別のカラムへの対応付け直し。代わりにエージェントは、リレーションシップを削除して(外部キーカラムはその場に残ります)、erd_link_columnsで目的のカラムを関連付けます。これを、1 回の Undo で元に戻せる 1 つのerd_batchの中で行います。- Code Generator の実行。
erd_readは DDL か JSON を返し、エージェントはそこから自分でコードを書きます。
仕組み
サーバーは、MCP クライアントが起動する stdio プロセスです。 呼び出しのたびに、そのドキュメントを保持しているエディタを探します。ERD Editor の拡張機能またはプラグインを入れた、VS Code のウィンドウ、Obsidian の保管庫のウィンドウ、JetBrains IDE のいずれかです。
- ライブ — ワークスペース、保管庫、開いているプロジェクトのいずれかにそのドキュメントを含むか、ドキュメントを開いているエディタがある場合です。サーバーはそのエディタの編集セッションに参加し、編集はエディタに反映されます。VS Code では未保存のまま、Obsidian と JetBrains IDE ではユーザー自身の編集と同じように保存されます。
- ヘッドレス — エディタがない場合です。サーバーはファイルを読み込み、編集を適用して、ファイルに書き戻します。
- 拒否 — ドキュメントを保持しているエディタはあるものの、そのハブがオフになっている場合です。サーバーはディスクから読み取りますが、何も書き込みません。開いているエディタが次に保存するときに、ファイルを上書きしてしまうおそれがあるためです。エディタのハブはオンでも、その ERD Editor 拡張機能またはプラグインがサーバーと異なるハブのプロトコルを使う場合は、読み取りも含め、そのドキュメントに対するすべての呼び出しが
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 以降 |
| ライブ編集用の JetBrains IDE | IntelliJ ベースの IDE 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 は互いを拒否し、それより前のサーバーと上記のリリースも互いを拒否します。アップデートを参照してください。
3.0.0 より前の VS Code の拡張機能や 0.9.0 より前の JetBrains のプラグインにはハブがないため、サーバーはそれらを認識せず、そこでダイアグラムが開いていても、ディスク上のファイルを編集します。
次はインストールです。