mcpField
E
Excalidraw Mcp

Excalidraw Mcp

ローカル
github.com/maaker-aiメディア・デザイン412 週間前に更新

Excalidraw Mcp について

Excalidraw Mcpは、構造化された説明からExcalidraw図を作成・編集するMCPサーバーです。自動レイアウトを備え、ローカルファイルも操作できるため、編集可能な図を必要とする用途に向いています。

主な機能

  1. 0125種類以上の図を生成
  2. 02Sugiyama階層自動レイアウト
  3. 03CJK文字幅の推定
  4. 04既存図の読み取りと編集
  5. 05図をSVGにエクスポート

活用シーン

  1. 01システム説明からアーキテクチャ図を作成
  2. 02フロー図、シーケンス図、ER図の作成
  3. 03既存図にノードや接続を追加
  4. 04図を読み取りSVGに出力

MCP 対応

MCPクライアントに、Excalidraw図の作成、読み取り、編集、エクスポートのツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"excalidraw-mcp-maaker-ai": {
"command": "uvx",
"args": [
"maaker-excalidraw-mcp"
]
}
}
}
起動コマンドuvx maaker-excalidraw-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimaaker-excalidraw-mcp

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

excalidraw-mcp

PyPI Downloads License: MIT

AI で 25 種類以上の美しい手描き風ダイアグラムを生成できます。フローチャート、シーケンス図、アーキテクチャ図、マインドマップ、ER 図、クラス図、状態図、タイムライン、円/棒/折れ線/レーダーチャート、カンバン、ワイヤーフレーム、決定木などに対応し、Sugiyama 階層レイアウト、CJK 対応、学習コストゼロを実現します。

Maaker.AI 提供

ショーケース

以下の画像はすべて、単一のツール呼び出しで生成されました。座標の指定や手動でのレイアウトは不要です。.excalidraw ソースは docs/showcase/ にあります。いずれかを excalidraw.com にドラッグすると、引き続き編集できます。

フローチャート(分岐+循環+CJK)階層型アーキテクチャ
フローチャートアーキテクチャ

マインドマップ

インストール

Claude Code(推奨)
claude mcp add excalidraw -- uvx maaker-excalidraw-mcp
Claude Desktop

MCP 設定(~/Library/Application Support/Claude/claude_desktop_config.json)に追加します。

{
  "mcpServers": {
    "excalidraw": {
      "command": "uvx",
      "args": ["maaker-excalidraw-mcp"]
    }
  }
}
opencode / Cursor / 任意の MCP クライアント
{
  "mcp": {
    "excalidraw": {
      "type": "local",
      "command": ["uvx", "maaker-excalidraw-mcp"],
      "enabled": true
    }
  }
}

(opencode の例です。Cursor などのクライアントでも、MCP 設定形式で同じ uvx maaker-excalidraw-mcp コマンドを使用します。)

pip
pip install maaker-excalidraw-mcp

ツール

ツール説明
create_flowchartSugiyama レイアウトによるフローチャート。分岐、結合、循環、グループに対応
create_architecture_diagram接続を含む階層型アーキテクチャ図
create_sequence_diagramライフラインとメッセージを含む UML シーケンス図
create_class_diagram属性、メソッド、関係を含む UML クラス図
create_state_diagram初期状態と終了状態を含む UML 状態機械
create_er_diagramカーディナリティを含むエンティティ関係図
create_mindmap分岐を自動で色分けするツリー型マインドマップ
create_timeline重なり合うイベントに対応したタイムライン/ガントチャート
create_pie_chartラベルと割合を表示する円グラフ
create_kanban_board列とカードを含むカンバンボード
create_network_diagramタイプ指定のノード(サーバー、DB など)を含むネットワークトポロジー
create_quadrant_chart2x2 の優先度/ポジショニングマトリックス
create_user_journey感情インジケーターを含むユーザージャーニーマップ
create_wireframeデバイスフレーム付きの UI ワイヤーフレームモックアップ
create_org_chart組織図(トップダウン型の階層構造)
create_swot_analysis2x2 の色分けされた SWOT 分析マトリックス
create_table列幅を自動調整し、行を交互に色分けするグリッドテーブル
create_bar_chart棒とラベルを自動スケーリングする縦棒グラフ
create_line_chart複数系列に対応した折れ線グラフ
create_radar_chart複数系列を重ねて表示するレーダー/スパイダーチャート
create_decision_treeひし形の判断ノードと長方形の結果を含む決定木
import_mermaidMermaid 構文(フローチャート、シーケンス図、クラス図、状態図)をインポート
list_diagram_types利用可能なすべてのダイアグラムタイプを一覧表示
modify_diagram既存のダイアグラムでノードと接続を追加/削除
read_diagram既存の .excalidraw ファイルを分析
export_diagramダイアグラムを SVG 形式にエクスポート

クイック例

フローチャート

AI アシスタントに次のように伝えるだけです。

"Create a flowchart: User Request → Load Balancer → API Server → Database"

AI が構造化データを使って create_flowchart を呼び出し、次の内容を含む .excalidraw ファイルが生成されます。

  • Sugiyama 階層レイアウト — 分岐、合流、循環、非連結のサブグラフを適切に処理します
  • テキストの内容に基づいてボックスのサイズを自動計算します
  • テキストを正確に中央揃えします(中国語/CJK 文字を含む)
  • 適切なエッジバインディングを使って矢印をスマートに配置します
  • ドキュメントやプレゼンテーションに映える手描き風のスタイルです
  • 4 方向:LR(左から右)、RL、TB(上から下)、BT
アーキテクチャ図

"Create an architecture diagram with Frontend (React, Next.js), Backend (API Server, Auth Service), and Database (PostgreSQL, Redis) layers"

コンポーネントを階層別に整理し、自動でサイズを調整して階層間を接続したレイヤー構造の図を生成します。

読み取りと変更

"Read the diagram at ./my-system.excalidraw and add a 'Cache' node connected to the API Server"

既存の .excalidraw ファイルを使い、その構造の読み取り、ノードの追加・削除、接続の追加ができます。

excalidraw-mcp を選ぶ理由

公式 Excalidraw MCP(excalidraw/excalidraw-mcp)との比較
機能公式 MCPexcalidraw-mcp
アプローチ生の JSON — AI が各要素を手作業で配置します構造化入力 — 作りたいものを伝えるだけで、図を生成します
レイアウトAI が座標を計算しますSugiyama 階層自動レイアウト
分岐/合流AI が配置を判断する必要があります自動 — レイアウトエンジンが処理します
CJK テキスト幅の推定なしCJK/混在スクリプトの幅を正確に計算します
テキストの中央揃えAI が x/y オフセットを計算する必要がありますコンテナ内で自動的に中央揃えします
矢印のバインディングAI がバインディングを管理する必要がありますfixedPoint + orbit バインディングを自動で行います
ローカルファイルローカルファイルの読み書きはできません読み取り、変更、保存を全面的にサポートします
配布方法リモート URL / .mcpbuvx / pip(標準的な Python)
トークン使用量形式を学ぶために read_me の呼び出しが必要です形式の知識が組み込まれています
Mermaid ベースのツールとの比較
  • 自由なレイアウト:Mermaid 構文の制約に縛られません
  • 手描き風のスタイル:コードブロックを描画するのではなく、Excalidraw 本来の見た目です
  • 編集可能な出力:.excalidraw ファイルを excalidraw.com にドラッグすると、引き続き編集できます

ツールリファレンス

create_flowchart
Input:
  nodes: [{label: "Step 1", color?: "blue", shape?: "rectangle"}]
  edges: [{from: "Step 1", to: "Step 2", label?: "next"}]
  direction?: "LR" | "RL" | "TB" | "BT"  (default: "LR")
  title?: "My Flowchart"
  output_path?: "/path/to/output.excalidraw"

Output: Path to generated .excalidraw file

色:blue、green、purple、yellow、red、gray、orange、pink

形状:rectangle(デフォルト)、diamond(判断)、ellipse(開始/終了)

create_architecture_diagram
Input:
  layers: [{
    name: "Frontend",
    color?: "blue",
    components: [{label: "React"}, {label: "Next.js"}]
  }]
  connections?: [{from: "React", to: "API Server"}]
  output_path?: "/path/to/output.excalidraw"

Output: Path to generated .excalidraw file
modify_diagram
Input:
  file_path: "/path/to/existing.excalidraw"
  add_nodes?: [{label: "New Node", color?: "green", x?: 100, y?: 100}]
  remove_labels?: ["Old Node"]
  add_connections?: [{from: "A", to: "B"}]
  output_path?: "/path/to/output.excalidraw"

Output: Path to modified file
read_diagram
Input:
  file_path: "/path/to/diagram.excalidraw"

Output: Structured description (shapes, connections, colors)
export_diagram
Input:
  file_path: "/path/to/diagram.excalidraw"
  format: "svg"

Output: Path to exported SVG file

技術的な詳細

Sugiyama 階層レイアウト

grandalf ライブラリを使って、適切な有向グラフレイアウトを実現します。

  • レイヤー割り当て:グラフのトポロジーに基づいてノードをレイヤーに配置します
  • 交差の最小化:複数回の最適化によってエッジの交差を減らします
  • 座標の割り当て:レイヤー内の配置をバランスよく調整します
  • 循環の処理:循環グラフのフィードバックエッジを検出します
  • 非連結のサブグラフ:横並びに自動配置します
CJK 幅の推定

中国語/英語の混在テキストの幅を正確に計算します。

文字種幅(fontSize=20 の場合)
CJK 文字1 文字あたり約 22px
ASCII の英字/数字1 文字あたり約 11px
空白約 5px
矢印のバインディング

Excalidraw の最新の fixedPoint + orbit バインディングを使います(非推奨の focus/gap 形式は使いません)。

{
  "startBinding": {
    "elementId": "box1",
    "fixedPoint": [1.0, 0.5001],
    "mode": "orbit"
  }
}

矢印は相対位置に基づいて、正しいエッジに自動で接続されます。

開発

git clone https://github.com/maaker-ai/excalidraw-mcp.git
cd excalidraw-mcp
uv sync --dev
uv run pytest

ライセンス

MIT

コメント

MCP は初めてですか?

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

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