mcpField
E
Excalidraw Mcp

Excalidraw Mcp

Local
github.com/maaker-aiMedia & Design4Updated 12w ago

About Excalidraw Mcp

Excalidraw Mcp is an MCP server for creating and editing Excalidraw diagrams from structured descriptions. It serves users who need editable diagrams, with automatic layout and tools for working with local files.

Key features

  1. 01Generate 25+ diagram types
  2. 02Sugiyama hierarchical auto-layout
  3. 03Estimate CJK text widths
  4. 04Read and modify existing diagrams
  5. 05Export diagrams to SVG

Use cases

  1. 01Turn system descriptions into architecture diagrams
  2. 02Draw flowcharts, sequence, or ER diagrams
  3. 03Add nodes and connections to existing diagrams
  4. 04Read diagrams and export them to SVG

MCP support

The server exposes tools to create, read, modify, and export Excalidraw diagrams to MCP clients.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"excalidraw-mcp-maaker-ai": {
"command": "uvx",
"args": [
"maaker-excalidraw-mcp"
]
}
}
}
Run commanduvx maaker-excalidraw-mcp

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypimaaker-excalidraw-mcp

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

excalidraw-mcp

PyPI Downloads License: MIT

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

By Maaker.AI

Showcase

Every image below was generated by a single tool call — no coordinates, no manual layout. The .excalidraw sources live in docs/showcase/; drag any of them onto excalidraw.com to keep editing.

Flowchart (branches + cycle + CJK)Layered architecture
FlowchartArchitecture

Mind map

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"]
    }
  }
}
opencode / Cursor / any MCP client
{
  "mcp": {
    "excalidraw": {
      "type": "local",
      "command": ["uvx", "maaker-excalidraw-mcp"],
      "enabled": true
    }
  }
}

(opencode shown; Cursor and other clients use the same uvx maaker-excalidraw-mcp command in their MCP config format.)

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
create_tableGrid tables with auto-sized columns and alternating row colors
create_bar_chartVertical bar charts with auto-scaled bars and labels
create_line_chartLine charts with multi-series support
create_radar_chartRadar/spider charts with multi-series overlay
create_decision_treeDecision trees with diamond decisions and rectangular outcomes
import_mermaidImport Mermaid syntax (flowchart, sequence, class, state)
list_diagram_typesList all available diagram types
modify_diagramAdd/remove nodes and connections in existing diagrams
read_diagramAnalyze existing .excalidraw files
export_diagramExport 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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.