mcpField
D
draw.io

draw.io

リモート
drawio.comメディア・デザイン5.7k2 日前に更新
リポジトリ公式サイト

draw.io について

draw.io公式のMCPサーバーで、AIアシスタントからMermaidまたはdraw.io XMLの編集可能な図を作成・表示できます。MCP Appによるチャット内のインタラクティブなプレビューと、エディターで開くツールサーバーを提供します。

主な機能

  1. 01MermaidまたはXMLから図を作成
  2. 02インタラクティブなプレビューを表示
  3. 03draw.ioエディターで図を開く
  4. 0410,000種類以上の図形を検索
  5. 05ELKレイアウトまたはlibavoidルーティング

活用シーン

  1. 01チャット内で生成した図をプレビュー
  2. 02draw.ioで図を開いて編集
  3. 03図に使うライブラリ図形を検索
  4. 04ノード配置やコネクター経路を調整

MCP 対応

図の作成・検索と作成リファレンスの取得に使うツールを公開します。ホスト型MCP Appエンドポイントは対応クライアント内でプレビューを表示し、ツールサーバーはdraw.ioで図を開きます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.draw.io/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

3
パラメーター型必須説明
xmlstringいいえmxGraphModel 形式の draw.io XML コンテンツ。整形式の XML である必要があります。XML コメント(<!-- -->)や、属性値内のエスケープされていない特殊文字は使用できません。'mermaid' とは併用できません。
mermaidstringいいえMermaid.js の図の定義(例:'graph TD\n A-->B')。28 種類の図に対応しています。全リストはツールの説明を参照してください。図はネイティブに解析・レイアウトされ(上流の mermaid ランタイムは使用しません)、draw.io 形式に変換されます。'xml' とは併用できません。
routingenumいいえ**XML 専用** — 障害物を回避する直交**エッジルーティング**処理(libavoid)。使用できる値は `"libavoid"` のみです。`postLayout` と異なり、頂点は**移動しません**。手動で配置した座標を維持し、各エッジの経路だけを再計算して、線がボックスを通り抜けず、きれいな直角セグメントでボックスを迂回するようにします。ノードを意図的に配置した XML 図(アーキテクチャ、ネットワークトポロジー、デプロイ、スイムレーン、UML、間取り図)で、重なりのない整ったコネクターが必要な場合に設定してください。こうした図では `postLayout` を**省略**します。 draw.io の既定のルーターは基本的な機能のみです(直線または単純な直角線で、**障害物を回避しません**。線は端点間のボックスをまっすぐ通り抜けます)。エッジが図形と交差する場合や、自分で配置したレイアウトできれいに統一された直交配線が必要な場合は、`"libavoid"` を使用してください。`routing` と `postLayout` は**どちらか一方**を使うものと考えてください。`routing: "libavoid"` は位置を維持して配線のみを修正し、`postLayout: "elk"` は頂点を再配置します。ELK はエッジも適切にルーティングするため、`postLayout` を使う場合は通常 `routing` も設定**しないでください**(ほとんどの場合、併用は冗長です)。ルーティングを設定した場合、`<Array as="points">` のウェイポイントを自分で追加しないでください。libavoid が計算します。**Mermaid では無視されます**(ネイティブ/ELK レイアウトですでにルーティングされます)。libavoid
directionenumいいえ**XML 専用** — XML 図で `postLayout: "elk"` を使用する場合のフロー方向:`vertical`(上から下)または `horizontal`(左から右)。既定値は `vertical` です。**Mermaid では無視されます**。Mermaid の方向はフローチャートコード(`flowchart TD/TB` と `LR/RL`)から読み取られます。`postLayout: "elk"` と組み合わせた場合のみ意味があります。vertical | horizontal
postLayoutenumいいえ図のレンダリング後に適用する、任意のクライアント側 ELK(Eclipse Layout Kernel)レイヤードフロー処理です。使用できる値は `"elk"` のみです。頂点は指定した位置からレイヤードレイアウトへアニメーション(モーフィング)し、指定位置は**置き換えられる**ため、エッジのトポロジーのみが維持されます。フローチャート、プロセス図、状態図、判断フロー、パイプライン、親→子の方向が明確な ER/クラス図など、方向性/階層性のある図に設定してください。フロー方向(上から下、または左から右):**Mermaid** ではフローチャートコード(`flowchart TD/TB` → 上から下、`LR/RL` → 左から右)から取得されるため、ここでは設定しないでください。**XML** では任意の `direction` フィールドを設定します(既定値は上から下)。 手作業で作成したレイアウトに意味がある図では**省略**してください:スイムレーン/プール、コンテナー、領域をグループ化したアーキテクチャ/デプロイ/ネットワークトポロジー、P&ID または回路図、間取り図、意図的に配置した UML 図。 **Mermaid フローチャートの場合**、ネイティブパーサーが独自にレイアウトしますが、構造がある程度複雑になると窮屈でバランスの悪い出力になります。次のいずれかに該当する場合は `postLayout: "elk"` を指定してください:約 20 個以上のノード、または判断のひし形(`{...}` 形状)が 3 個以上、またはフィードバック/逆向きエッジ(エラー経路が再試行に戻るなど、前のノードを指すエッジ)がある、または異なる終端が 3 つ以上。フロー方向はフローチャートコードに従うため、Mermaid では `direction` を渡しません。単純なフローチャート(線形、ノード 20 個未満、分岐/逆向きエッジなし)と、フローチャート以外の Mermaid タイプ(sequence、class、ER、sankey など)では省略してください(postLayout は適用されません)。elk

詳細

Draw.io MCP サーバー

LLM が draw.io エディターで図を作成して開けるようにする、公式の draw.io MCP(Model Context Protocol)サーバーです。

AI アシスタントが、顧客への返金フローチャートを作成するプロンプトをチャット内で編集可能な draw.io 図に変換し、「draw.io で開く」「コピー」「図をダウンロード」ボタンを表示

▶ 動画を見る。drawio.com/mcp で AI アシスタントに draw.io をセットアップできます。

図を作成する 4 つの方法

このリポジトリでは、draw.io を AI アシスタントと連携する 4 つの方法を紹介しています。環境に合った方法を選んでください。

MCP App ServerMCP Tool Serverアシスタントプラグインプロジェクトの指示
仕組みチャット内に図をインライン表示しますブラウザーで図を開きます.drawio ファイルを生成し、必要に応じて PNG/SVG/PDF にエクスポートするか、ブラウザー URL を生成しますClaude が Python 経由で draw.io URL を生成します
図の出力会話に埋め込まれたインタラクティブビューアー新しいタブで開く draw.io エディター.drawio、.drawio.png/.svg/.pdf、またはブラウザー URLdraw.io へのクリック可能なリンク
インストールが必要いいえ(mcp.draw.io でホストされています)はい(npm パッケージ)1 行のプラグインインストール(PNG/SVG/PDF へのエクスポートには draw.io Desktop のみ必要)いいえ — 指示を貼り付けるだけです
XML、CSV、Mermaid に対応XML と Mermaid✅ すべてに対応XML と Mermaid(Mermaid には draw.io Desktop が必要)✅ すべてに対応
draw.io で編集可能「draw.io で開く」ボタンから✅ 直接編集可能✅ 直接編集可能リンク経由
対応環境Claude.ai、ChatGPT、VS Code、Cursor、GitHub Copilot CLI、その他の MCP Apps ホストClaude Desktop、Cursor、OpenCode、その他の MCP クライアントClaude Code、Codex CLI、GitHub Copilot、Cursor、Antigravity、OpenCodeClaude.ai(Projects を使用)
最適な用途チャット内でのインラインプレビューローカルのデスクトップワークフローローカルでの開発ワークフローすばやいセットアップ、インストール不要

ガイド

プロンプトや例を試して確認したユーザーガイドは draw.io のドキュメントにあります。各アシスタントのセットアップ方法は drawio.com/mcp をご覧ください。

ギャラリーは docs/images/gallery/gallery.json と、その隣にある編集可能なライトモードおよびダークモードの SVG から生成されます。drawio.com はサイトのビルド時にこれらを読み込みます。

MCP アプリサーバー

MCP アプリサーバーは、MCP Apps プロトコルを使用して、AI チャットインターフェース内に draw.io の図をインラインで表示します。ブラウザーのタブを開く代わりに、図がインタラクティブな iframe として会話に直接表示されます。

公式のホスト型エンドポイントは次のとおりです。

https://mcp.draw.io/mcp

この URL を、Claude.ai、ChatGPT、VS Code(GitHub Copilot)、Cursor、GitHub Copilot CLI、または MCP Apps 対応ホストのリモート MCP サーバーとして追加できます。インストールは不要です。Claude.ai では、draw.io はコネクターディレクトリにも掲載されており、そこからワンクリックで追加できます。Cursor(≥ 2.6)では、図がエージェントチャット内にインラインで表示されます(ワンクリックインストール)。それ以前のビルドでは、代わりに stdio の @drawio/mcp ツールサーバーを使用してください。GitHub Copilot CLI では、copilot mcp add --transport http drawio https://mcp.draw.io/mcp を実行してください。ターミナルでは図をインライン表示できないため、draw.io で各図を開くリンクが返されます。

Node.js または jgraph/drawio-mcp Docker イメージを使用してサーバーをローカルで実行することも、独自のインスタンスを Cloudflare Workers にデプロイすることもできます。

ツール:

  • create_diagram — draw.io XML または Mermaid(28 種類の図)を、チャット内にインタラクティブな図として表示します
  • search_shapes — キーワードを使って、すべての draw.io ライブラリ(AWS、Azure、GCP、P&ID、電気、Cisco、Kubernetes、UML、BPMN など)にある 10,000 種類以上の図形を検索します。組み込みライブラリに適切な候補がない場合は、draw.io アイコンサービス(ブランドロゴや汎用的な概念アイコン)も検索します。XML に直接使用できる正確なスタイル文字列を返します。create_diagram を呼び出す前に、適切な図形を探すために使用してください。
  • get_drawio_reference — XML または Mermaid の生成リファレンスを返します。このリファレンスは、モデルが各形式で最初の図を生成する前に一度読み込みます。

ドキュメント全文 →

Note: 図は、Claude.ai、ChatGPT、GitHub Copilot 搭載の VS Code、Cursor など、MCP Apps 拡張に対応するホストでインライン表示されます。GitHub Copilot CLI など、その他のホストでもツールは動作し、draw.io で図を開くリンクを返します。


MCP ツールサーバー

図を draw.io エディターで直接開く、従来の MCP サーバーです。XML、CSV、Mermaid.js 形式に対応し、ライトボックスとダークモードのオプションを備えています。npm では @drawio/mcp として公開されています。

クイックスタート:npx @drawio/mcp

Claude Desktop、Claude Code、VS Code(GitHub Copilot)、Cursor(ワンクリックインストール対応)、OpenCode のセットアップ手順を利用できます。

ドキュメント全文 →


アシスタント向けプラグイン(Claude Code、Codex CLI、GitHub Copilot)

AI コーディングアシスタント向けにプラグインとしてパッケージ化された drawio スキルです(plugins/)。ネイティブの .drawio ファイルを生成し、オプションで PNG、SVG、PDF にエクスポートできます(エクスポートしたファイルには XML が埋め込まれるため、draw.io で編集できます)。または、app.diagrams.net で図を直接開くブラウザー URL を生成します。Claude Code と Cursor のプラグインにはホスト型の MCP App Server も同梱されているため、ホストが対応していれば図がインラインで表示されます。Codex と Copilot のポートでは MCP の設定は不要です。同じスキルを4つのホスト向けに提供しています。

Claude Code(全ドキュメント →)— このリポジトリのマーケットプレイスからインストールします。

/plugin marketplace add jgraph/drawio-mcp
/plugin install drawio@drawio

または、ローカルにクローンしたリポジトリから claude --plugin-dir ./plugins/claude-code を使って直接読み込むこともできます。

Codex CLI(全ドキュメント →)— 同じマーケットプレイスリポジトリからインストールします。

codex plugin marketplace add jgraph/drawio-mcp
codex plugin add drawio@drawio

GitHub Copilot CLI(全ドキュメント →)— 同じマーケットプレイスリポジトリからインストールします。

copilot plugin marketplace add jgraph/drawio-mcp
copilot plugin install drawio@drawio

その他の Copilot の環境(VS Code エージェントモード、コーディングエージェント、コードレビュー)では、代わりにリポジトリの .github/skills/ ディレクトリから同じスキルを読み込みます。詳しくはプラグインの READMEをご覧ください。

Cursor(全ドキュメント →)— 同じスキルにホスト型の MCP App Server を加えたもので、図を Cursor のエージェントチャット内にもインラインで描画します。Cursor Marketplace(Customize → drawio → Install)からインストールするか、plugins/cursor を ~/.cursor/plugins/local/drawio にコピーしてウィンドウを再読み込みしてください。

Antigravity(全ドキュメント →)— GitHub 上のプラグインのディレクトリからインストールします。

agy plugin install https://github.com/jgraph/drawio-mcp/tree/main/plugins/antigravity

OpenCode ではプラグインは不要です。.opencode/skills/ と .claude/skills/(および ~/ 以下の同等のディレクトリ)にあるスキルを検出するため、Claude Code のスキルフォルダーをそのまま使用できます。1行でインストールする方法は、OpenCode(プラグイン不要)をご覧ください。

デフォルトでは、プラグインは .drawio ファイルを書き込み、draw.io で開きます。出力形式を変更するには、リクエストに形式を指定してください。

  • png / svg / pdf — draw.io デスクトップ CLI を使って --embed-diagram を指定し、エクスポートします
  • url — Node.js 組み込みの zlib で XML を圧縮し、結果を app.diagrams.net で開きます。draw.io Desktop は不要です。.drawio ファイルは永続的なコピーとしてローカルに保持されます。

代替方法:プロジェクトの指示(MCP 不要)

何もインストールせずに使える代替方法です。Python コード実行を使って draw.io URL を生成するよう Claude に教える指示を Claude Project に追加します。MCP サーバーもデスクトップアプリも不要です。貼り付けるだけですぐに使えます。

全ドキュメント →


ダイアグラムのレイアウト

AI がダイアグラムを生成した後に実行できる、任意かつ独立したレイアウト処理が 2 つあります。1 つはノードを再配置し、もう 1 つはエッジの経路のみを引き直します。利用できる処理はアプローチによって異なります。

レイアウト処理機能App Server(create_diagram)Tool Server(open_drawio_xml)アシスタントプラグインプロジェクトの指示
ELK 自動レイアウト(postLayout: "elk")ノードを整然とした階層レイアウトに再配置し、その一環としてエッジの経路も設定します✅—draw.io Desktop CLI(--layout)経由で対応—
libavoid によるルーティング(routing: "libavoid")ノードの位置を維持し、コネクターを図形の周囲に沿って直交するように引き直します✅✅ v1.3.0 以降draw.io Desktop CLI(--layout libavoid)経由で対応—
  • これらは draw.io XML ダイアグラムに適用されます。Mermaid ダイアグラムはすでに自動でレイアウトされるため、どちらの処理も必要ありません。
  • App Server はダイアグラムのレンダリング後にインラインビューアーでこれらを適用します。Tool Server は draw.io エディターを開く前にサーバー側で libavoid を適用します。プラグインはローカルにインストールされた draw.io Desktop CLI を通じて処理します。
  • いずれか一方を選んでください。両方は使用しないでください。ELK はすでに独自にエッジの経路を設定するため、その上に libavoid を追加しても重複になります。レイアウトを再配置するには postLayout を、意図的に配置したレイアウト上のコネクターを整えるには routing を使用します。

データの保管場所とオフラインでの使用

厳格なデータ制限のある環境にデプロイする場合、各アプローチでダイアグラムのデータがどこに送られるかを正確に説明します。

どのコンポーネントも、ダイアグラムをクラウドのラスタライザーに送信しません。 このリポジトリでは convert.diagrams.net(またはクラウドのエクスポートエンドポイント)はどこからも呼び出されず、「ローカルの依存関係がない場合にクラウドへフォールバックする」経路もありません。PNG/SVG/PDF のエクスポートはアシスタントプラグインでのみ行われます。プラグインはローカルにインストールされた draw.io Desktop CLI(which drawio で場所を特定)をシェルから呼び出します。インストールされていない場合は .drawio ファイルが保持され、データは送信されません。

ダイアグラムはマシンの外部に送信されますか?
アプローチダイアグラムはマシンの外部に送信されますか?
MCP App Server — ホスト型(mcp.draw.io)はい — MCP リクエストとして draw.io サーバーに送信されます。ローカルに保つには、代わりにセルフホストしてください(下記参照)。
MCP App Server — セルフホスト(ローカルの Node、jgraph/drawio-mcp Docker イメージ、または独自の Cloudflare)いいえ — サーバーで処理され、クライアント側でレンダリングされる HTML に埋め込まれます。
MCP Tool Server(@drawio/mcp)いいえ — URL の #fragment に含まれます。この部分はブラウザーからサーバーに送信されません。
アシスタントプラグイン(Claude Code、Codex CLI、GitHub Copilot、Cursor、Antigravity)いいえ — ローカルに書き込まれ、ローカルの draw.io Desktop CLI によってエクスポートされます。ただし、Claude Code と Cursor のプラグインにはホスト型 App Server も含まれています。このサーバーで作成したダイアグラムは mcp.draw.io に送信されます(上の行を参照)。

デフォルトでは、サーバーはダイアグラムの内容をログに記録せず、リクエストのメタデータ(メソッド、セッション、ステータス、所要時間)のみを記録します。Cloudflare でホストされた App Server がレスポンス本文をログに記録するのは、DEBUG=true を指定して実行した場合のみです。

外部リクエストの削減

図自体はローカルに保存されますが、レンダリング時にはデフォルトで app.diagrams.net と viewer.diagrams.net から draw.io のウェブアプリ/ビューアーのコードが読み込まれます。これらが取得するのはアプリケーションのコードとアセットであり、図ではありませんが、それでも外部へのリクエストは発生します。リクエストを減らす、またはなくすには、次の方法があります。

  • アプリサーバー: VIEWER_PATH 環境変数を指定してビルドすると、viewer.diagrams.net から読み込む代わりにビューアーをインライン化できます。サーバー側では、起動時と毎日、viewer.diagrams.net にバージョン確認を行います(データは送信せず、タイムアウトは 5 秒で、安全にブロックできます)。また、DRAWIO_ICON_SERVICE_URL=off を指定しない限り、search_shapes は検索語を使って icons.diagrams.net に問い合わせます。
  • ツールサーバー: DRAWIO_BASE_URL 環境変数にセルフホスト可能な draw.io インスタンスを指定します。サーバー側の 2 つの処理でも、draw.io のリリースごとに 1 回、viewer.diagrams.net からコードを取得し、ユーザーごとにキャッシュします。対象は libavoid のルーティングコア(routing: "libavoid"。インストール時にも事前取得されます)と drawio-elk バンドル(postLayout: "elk"。初回使用時に取得され、DRAWIO_ELK_URL で変更できます)です。これらの処理を要求しなければ、このようなリクエストは発生しません。いずれの場合も、図がリクエストに含まれることはありません。
  • アシスタントプラグイン: オプトインの url 出力モードでは、図を app.diagrams.net で開きます(URL はハードコードされており、DRAWIO_BASE_URL に相当する設定はありません)。このリクエストを避ける必要がある場合は、デフォルトの .drawio 出力を使うか、ローカルのデスクトップアプリからエクスポートしてください。
LLM は別途考慮が必要です

図は LLM によって生成されます。ホスト型モデルを使う場合、この MCP サーバーをどこで実行していても、図の内容はプロバイダーのクラウド上で生成されます。エンドツーエンドの隔離には、ローカルでホストされたモデルも必要です。

確認方法

デプロイ環境から外部への呼び出しが一切ないことを確認する確実な方法は、ネットワークの外向き通信をブロックした状態で実行する(またはブラウザーの Network タブを監視する)ことです。そのうえで、引き続きレンダリングできることを確認してください。厳格な隔離が必要なデプロイでは、この方法をおすすめします。


XML リファレンス(信頼できる唯一の情報源)

エッジのルーティング、コンテナー、レイヤー、タグ、メタデータ、ダークモード、スタイルプロパティ、XML の整形式性を網羅した、draw.io XML 生成リファレンスは、単一の正規ファイルにまとめられています。

shared/xml-reference.md

上記 4 つのアプローチはすべて、LLM プロンプトの信頼できる唯一の情報源としてこのファイルを使用します。

アプローチリファレンスへのアクセス方法
MCP アプリサーバー起動時/ビルド時にファイルを読み込み、get_drawio_reference ツールから返します
MCP ツールサーバー起動時にファイルを読み込み(リポジトリ内のファイル、または prepack による同梱コピー)、get_drawio_reference ツールから返します。open_drawio_xml の説明には、要約版の shared/xml-essentials.md が含まれます
アシスタントプラグイン(Claude Code、Codex CLI、GitHub Copilot)GitHub の raw URL から要約版の shared/xml-essentials.md を取得します。レイヤー、タグ、メタデータ、テーブル、部門横断グリッド、ダークモードの色を扱う場合に限り、完全版を取得します
プロジェクトの指示ユーザーは要約版の shared/xml-essentials.md を Claude Project にコピーし、該当するトピックが必要な場合に限り、完全版を使用します

XML 生成のガイダンスを更新するときは、shared/xml-reference.md を編集してください。変更はすべての利用箇所に自動的に反映されます。変更が shared/xml-essentials.md に要約されているルールに関わる場合は、そちらの該当箇所も更新してください。


図形検索インデックス

search_shapes ツールは、すべての draw.io 図形を含む事前構築済みインデックスを使用します。このインデックスは、ライブの draw.io クライアント(https://app.diagrams.net/js/app.min.js)を元に、jsdom を介して Node.js ですべてのサイドバーパレットの初期化を実行し、図形データを取得して生成されます。

draw.io アイコンサービス(icons.diagrams.net — エディターのサイドバーと同じグループ化されたアイコン検索)は、このインデックスには含まれません。ローカルインデックスにクエリとの強い一致がない場合、search_shapes はサービスにライブで問い合わせ、shape=image スタイルのアイコンを返します。エンドポイントを上書きするには DRAWIO_ICON_SERVICE_URL にセルフホストのサービスを設定し、アイコンの補完を無効にするには off を設定してください。

shape-search/search-index.json はリポジトリにコミットされています。Update Shape Search Index GitHub Action は、draw.io のリリースごとに(ビルドが完了すると drawio-dev が drawio-release をディスパッチします)、リリース済み draw.io クライアントからインデックスを再生成します。また、フォールバックとして毎日再生成し、図形に変更があった場合はプルリクエストを作成します。マージされると、ツールサーバーは CDN からインデックスを取得します。ホストされたアプリサーバーにはインデックスがバンドルされているため、デプロイが必要です。

インデックスを手動で再生成するには(たとえば、ジェネレーター自体を改良している場合):

cd shape-search
npm install
npm run generate

# Rebuild the MCP App Server worker to embed the updated index
cd ../mcp-app-server
npm run build:worker

ジェネレーターは公開されている draw.io ウェブアプリから app.min.js を直接取得するため、draw.io ソースのローカルチェックアウトは不要です。


開発

# MCP App Server
cd mcp-app-server
npm install
npm start

# MCP Tool Server
cd mcp-tool-server
npm install
npm start

関連リソース

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。