Skip to main content

Generate 25+ types of Excalidraw diagrams with auto-layout. Flowcharts, sequence, architecture, mind maps, ER, class, state, timeline, pie/bar/line/radar charts, kanban, wireframes, decision trees, and more.

Project description

excalidraw-mcp

Generate 20+ types of beautiful hand-drawn diagrams with AI — flowcharts, sequence, architecture, mind maps, ER, class, state, timeline, pie charts, kanban, wireframes, and more — with Sugiyama hierarchical layout, CJK support, and zero learning curve.

By Maaker.AI

Install

Claude Code (recommended)

claude mcp add excalidraw -- uvx maaker-excalidraw-mcp

Claude Desktop

Add to your MCP config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "excalidraw": {
      "command": "uvx",
      "args": ["maaker-excalidraw-mcp"]
    }
  }
}

pip

pip install maaker-excalidraw-mcp

Tools

Tool Description
create_flowchart Flowcharts with Sugiyama layout — branches, merges, cycles, groups
create_architecture_diagram Layered architecture diagrams with connections
create_sequence_diagram UML sequence diagrams with lifelines and messages
create_class_diagram UML class diagrams with attributes, methods, relationships
create_state_diagram UML state machines with initial/final states
create_er_diagram Entity-Relationship diagrams with cardinality
create_mindmap Tree-style mind maps with auto-colored branches
create_timeline Timeline/Gantt charts with overlapping event handling
create_pie_chart Pie charts with labeled slices and percentages
create_kanban_board Kanban boards with columns and cards
create_network_diagram Network topology with typed nodes (server, DB, etc.)
create_quadrant_chart 2x2 priority/positioning matrices
create_user_journey User journey maps with emotion indicators
create_wireframe UI wireframe mockups with device frames
create_org_chart Organizational charts (top-down hierarchy)
create_swot_analysis SWOT analysis 2x2 color-coded matrices
import_mermaid Import Mermaid syntax (flowchart, sequence, class)
list_diagram_types List all available diagram types
modify_diagram Add/remove nodes and connections in existing diagrams
read_diagram Analyze existing .excalidraw files
export_to_svg Export diagrams to SVG format

Quick Examples

Flowchart

Just tell your AI assistant:

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

The AI will call create_flowchart with structured data, and you'll get a .excalidraw file with:

  • Sugiyama hierarchical layout — proper handling of branches, merges, cycles, and disconnected subgraphs
  • Auto-calculated box sizes based on text content
  • Perfectly centered text (including Chinese/CJK characters)
  • Smart arrow routing with proper edge binding
  • Hand-drawn style that looks great in docs and presentations
  • 4 directions: LR (left-to-right), RL, TB (top-to-bottom), BT

Architecture Diagram

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

Generates a layered diagram with components organized by tier, automatic sizing, and connections between layers.

Read & Modify

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

Works with existing .excalidraw files — read their structure, add/remove nodes, add connections.

Why excalidraw-mcp?

vs Official Excalidraw MCP (excalidraw/excalidraw-mcp)

Feature Official MCP excalidraw-mcp
Approach Raw JSON — AI manually places every element Structured input — say what you want, get a diagram
Layout AI calculates coordinates Sugiyama hierarchical auto-layout
Branches/Merges AI must figure out positioning Automatic — handled by layout engine
CJK text No width estimation Accurate CJK/mixed-script width calculation
Text centering AI must calculate x/y offsets Automatic centering in containers
Arrow binding AI must manage bindings Automatic fixedPoint + orbit binding
Local files Cannot read/write local files Full read, modify, save support
Distribution Remote URL / .mcpb uvx / pip (standard Python)
Token usage Needs read_me call to learn format Format knowledge built-in

vs Mermaid-based tools

  • Free layout: Not constrained by Mermaid syntax limitations
  • Hand-drawn style: Native Excalidraw look, not rendered code blocks
  • Editable output: Drag the .excalidraw file to excalidraw.com to continue editing

Tool Reference

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

Colors: blue, green, purple, yellow, red, gray, orange, pink

Shapes: rectangle (default), diamond (decisions), ellipse (start/end)

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

Technical Details

Sugiyama Hierarchical Layout

Uses the grandalf library for proper directed graph layout:

  • Layer assignment: Nodes placed in layers based on graph topology
  • Crossing minimization: Multi-pass optimization to reduce edge crossings
  • Coordinate assignment: Balanced positioning within layers
  • Cycle handling: Feedback edge detection for cyclic graphs
  • Disconnected subgraphs: Automatic side-by-side placement

CJK Width Estimation

Accurate text width calculation for mixed Chinese/English text:

Character Type Width (at fontSize=20)
CJK characters ~22px per character
ASCII letters/digits ~11px per character
Spaces ~5px

Arrow Binding

Uses Excalidraw's modern fixedPoint + orbit binding (not the deprecated focus/gap format):

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

Arrows automatically connect at the correct edge based on relative positions.

Development

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

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

maaker_excalidraw_mcp-0.5.0.tar.gz (74.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

maaker_excalidraw_mcp-0.5.0-py3-none-any.whl (82.5 kB view details)

Uploaded Python 3

File details

Details for the file maaker_excalidraw_mcp-0.5.0.tar.gz.

File metadata

  • Download URL: maaker_excalidraw_mcp-0.5.0.tar.gz
  • Upload date:
  • Size: 74.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for maaker_excalidraw_mcp-0.5.0.tar.gz
Algorithm Hash digest
SHA256 902b1c50ba958e9691fc6355eef18627d0220fa07e47fc42f8d5d4aef5e887d6
MD5 86d17eddd508ffdf0f65f1227d7fe6aa
BLAKE2b-256 08f3998af408ed720b7df510af0c6b5f481297b9de126acfaf67b454a7929bb3

See more details on using hashes here.

Provenance

The following attestation bundles were made for maaker_excalidraw_mcp-0.5.0.tar.gz:

Publisher: publish.yml on maaker-ai/excalidraw-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file maaker_excalidraw_mcp-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for maaker_excalidraw_mcp-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3ca36cf3e7416c67fdd52bec44738a1ce718a3cbcd1988ea932b6269b8335e97
MD5 dcff63b56a1ceea6118b8f475599a664
BLAKE2b-256 5501140a6cfed0911493c3c265b1035c5b51836712001ae2268175d8f91da148

See more details on using hashes here.

Provenance

The following attestation bundles were made for maaker_excalidraw_mcp-0.5.0-py3-none-any.whl:

Publisher: publish.yml on maaker-ai/excalidraw-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page