Excalidraw MCP

Generate 25+ diagram types (flowchart, sequence, ER, mindmap, architecture, etc.) as Excalidraw files with natural language. CJK support, 30+ tech brand colors, Sugiyama auto-layout.

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

ToolDescription
create_flowchartFlowcharts with Sugiyama layout — branches, merges, cycles, groups
create_architecture_diagramLayered architecture diagrams with connections
create_sequence_diagramUML sequence diagrams with lifelines and messages
create_class_diagramUML class diagrams with attributes, methods, relationships
create_state_diagramUML state machines with initial/final states
create_er_diagramEntity-Relationship diagrams with cardinality
create_mindmapTree-style mind maps with auto-colored branches
create_timelineTimeline/Gantt charts with overlapping event handling
create_pie_chartPie charts with labeled slices and percentages
create_kanban_boardKanban boards with columns and cards
create_network_diagramNetwork topology with typed nodes (server, DB, etc.)
create_quadrant_chart2x2 priority/positioning matrices
create_user_journeyUser journey maps with emotion indicators
create_wireframeUI wireframe mockups with device frames
create_org_chartOrganizational charts (top-down hierarchy)
create_swot_analysisSWOT analysis 2x2 color-coded matrices
import_mermaidImport Mermaid syntax (flowchart, sequence, class)
list_diagram_typesList all available diagram types
modify_diagramAdd/remove nodes and connections in existing diagrams
read_diagramAnalyze existing .excalidraw files
export_to_svgExport 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)

FeatureOfficial MCPexcalidraw-mcp
ApproachRaw JSON — AI manually places every elementStructured input — say what you want, get a diagram
LayoutAI calculates coordinatesSugiyama hierarchical auto-layout
Branches/MergesAI must figure out positioningAutomatic — handled by layout engine
CJK textNo width estimationAccurate CJK/mixed-script width calculation
Text centeringAI must calculate x/y offsetsAutomatic centering in containers
Arrow bindingAI must manage bindingsAutomatic fixedPoint + orbit binding
Local filesCannot read/write local filesFull read, modify, save support
DistributionRemote URL / .mcpbuvx / pip (standard Python)
Token usageNeeds read_me call to learn formatFormat 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 TypeWidth (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

Related Servers