excalidraw-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EXCALIDRAW_TOOLSET | No | Active toolset exposure profile. Valid values: core or full. | core |
| EXCALIDRAW_FONT_DIR | No | Absolute path to a custom directory for TrueType/OpenType font discovery. Unset by default. | |
| EXCALIDRAW_LIVE_PORT | No | Port for the live canvas browser server. Valid range: 1024-65535. | 8080 |
| EXCALIDRAW_SCENE_DIR | No | Absolute path to the directory where .excalidraw scenes are saved. Defaults to the OS user data directory. | |
| EXCALIDRAW_EXPORT_DIR | No | Absolute path to the target directory for PNG image exports. Defaults to EXCALIDRAW_SCENE_DIR/exports. | |
| EXCALIDRAW_LIVE_TOKEN | No | Shared secret required for mutating live canvas requests. Unset by default. | |
| EXCALIDRAW_ALLOW_REMOTE | No | Permits live canvas binding to non-loopback interfaces. Valid values: 1 or true. Unset by default. | |
| EXCALIDRAW_MAX_ELEMENTS | No | Maximum elements allowed per scene. Valid range: 1-100000. | 10000 |
| EXCALIDRAW_HISTORY_LIMIT | No | Maximum undo snapshots retained in memory. Valid range: 1-100. | 20 |
| EXCALIDRAW_MAX_SCENE_BYTES | No | Maximum file size in bytes accepted when loading scenes. Valid range: 1024-104857600. | 26214400 |
| EXCALIDRAW_MAX_EXPORT_BYTES | No | Maximum payload size in bytes for scene export operations. Valid range: 1024-104857600. | 26214400 |
| EXCALIDRAW_MAX_HISTORY_BYTES | No | Memory budget in bytes for the serialized undo stack. Valid range: 1024-524288000. | 104857600 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| add_rectangleC | Add a rectangle to the scene. Style parameters are optional — when omitted, Excalidraw defaults are used. |
| add_circleC | Add a circle (ellipse) to the scene. |
| add_diamondC | Add a diamond to the scene. |
| add_arrowC | Add an arrow between two points. Optionally add bound text near the arrow midpoint. |
| add_frameC | Add a frame (boundary container) to the scene. Optionally assign existing elements to this frame using |
| clearA | Remove all elements, app state and files from the scene. |
| deleteA | Delete an element and its owned label; detach surviving connectors. |
| moveB | Move an element and its label. Shape connectors follow; directly moved arrows detach. |
| saveC | Save a consistent snapshot. Set overwrite=true to replace an existing file. |
| get_sceneC | List active elements with pagination and the current revision. |
| get_elementB | Return one active element by ID. |
| add_textB | Add standalone text and return its element ID. font_family can be 'excalifont', 'sans-serif', 'monospace', 'comic-shanns', or an Excalidraw font number (1=Excalifont, 2=sans-serif, 3=monospace, 4=comic-shanns). |
| update_elementC | Update a label, font, and/or styles. An empty label removes an existing label. |
| resizeB | Resize a shape and recenter its label. |
| connectB | Connect two existing shapes by ID with a bound arrow. |
| find_elementsC | Find active elements matching query string, type, frame, or connection criteria. |
| get_resourceC | Retrieve scene, library, theme, or element resources through a unified interface. |
| auto_fix_layoutC | Diagnose, plan, and automatically repair layout defects (overlaps, text clipping, containment, routing, spacing) with rollback safety. |
| undoA | Restore the scene before the most recent successful mutation. |
| export_sceneA | Return an embedded .excalidraw document for the client to save/import. No file is written. |
| loadB | Replace the scene with a saved document; concurrent changes cause a retry error. |
| previewB | Render an inline PNG image preview of the active Excalidraw canvas. |
| export_pngC | Export the active scene to a PNG image file in a project or configured directory. |
| draw_architectureA | Replace the scene with a diagram from comma/newline-separated components. Supports All style parameters are optional and apply globally to every element. |
| draw_mermaidC | Parse Mermaid flowchart/graph code and render it directly to the Excalidraw scene. |
| get_scene_summaryA | Return structured numerical metrics and topological metadata (counts, element dimensions, layers, code blocks, text contents) for layout planning. |
| describe_sceneB | Generate a human/agent-readable natural language prose description of the diagram's spatial layout, clusters, and connectivity for cognitive verification. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| create_architecture_diagram | Comprehensive 10-step workflow to plan, construct, validate, and export a production architecture diagram. |
| create_flowchart | Prompt guiding an AI agent to design a clean, professional flowchart, pipeline, or decision logic diagram. |
| plan_diagram | Formulate a written architectural plan, node inventory, tier breakdown, and palette selection before drawing. |
| edit_existing_diagram | Safely inspect and modify an existing Excalidraw scene while preserving layout structure and visual balance. |
| verify_and_export_diagram | Comprehensive 5-step quality gate: diagnose layout, auto-repair, visual preview inspection, and dual export. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| capabilities_resource | Read active server capabilities, toolset mode, and configuration metadata. |
| skills_index | Discovery index of available agent skills, supporting reference documents, and recommended workflows. |
| skill_architecture-diagrams | Skill: architecture-diagrams — Design and implement production-grade system, cloud, distributed services, and infrastructure architecture diagrams using the exca-mcp MCP server. Use when creating multi-tier backend architectures, microservices topologies, cloud infrastructure, trust and deployment boundaries, or database persistence diagrams with frames, side columns, and explicit protocol connectors. |
| ref_architecture-diagrams_architecture-patterns | Reference: architecture-patterns for skill architecture-diagrams |
| skill_diagram-planning | Skill: diagram-planning — Formulate a structured architectural plan before invoking any Excalidraw MCP creation tool. Use when an agent receives any diagram request (architecture, flowchart, data pipeline, system design) to determine diagram type, audience, layout tiers, flow direction, node density limits, entry tool selection, and semantic color palette before drawing. |
| ref_diagram-planning_entry-tool-decision-tree | Reference: entry-tool-decision-tree for skill diagram-planning |
| skill_excalidraw-workflow | Skill: excalidraw-workflow — Create, edit, validate, and export professional, fully editable Excalidraw diagrams using the exca-mcp MCP server. Use whenever an agent needs to create or modify diagrams and save both native .excalidraw files and high-quality PNG exports. |
| skill_flowcharts-and-processes | Skill: flowcharts-and-processes — Design clear, human-polished flowcharts, decision trees, CI/CD pipelines, and state machines with single starts, clear terminals, labeled decision branches, and clean loop routing. |
| ref_flowcharts-and-processes_flowchart-patterns | Reference: flowchart-patterns for skill flowcharts-and-processes |
| skill_human-style-and-polish | Skill: human-style-and-polish — Apply the professional hand-drawn Excalidraw aesthetic using restrained semantic palettes, intentional typography, consistent grid spacing, and verified geometric clearances. |
| ref_human-style-and-polish_anti-patterns | Reference: anti-patterns for skill human-style-and-polish |
| ref_human-style-and-polish_palette-catalog | Reference: palette-catalog for skill human-style-and-polish |
| skill_verify-and-editable-handoff | Skill: verify-and-editable-handoff — Run layout diagnostics, fix overlaps and spacing defects with auto_fix_layout, visually inspect PNG preview, enforce human editability, and export dual .excalidraw and PNG formats. |
| ref_verify-and-editable-handoff_delivery-checklist | Reference: delivery-checklist for skill verify-and-editable-handoff |
TDQS
Scored across 27 tools
Most shape creation tools are distinct, but scene-read/introspection tools overlap heavily (get_scene, get_scene_summary, describe_scene, find_elements, get_resource), as do output/persistence tools (save, export_scene, export_png, preview, load). Agents can usually infer the right tool from descriptions, but several boundaries are fuzzy.
Names are consistently lowercase snake_case and mostly follow verb_noun for actions, such as add_rectangle, get_scene, update_element, and export_png. A handful of bare verbs (clear, delete, move, save, undo, load, preview, connect, resize) introduce minor inconsistency but remain readable.
With 27 tools, the server is above the reasonable range for a drawing MCP and includes several tools that could be consolidated, especially scene introspection and export variants. The surface is feature-rich, but the count feels heavy and increases selection burden.
The tool set covers the full diagram lifecycle: creation, reading, updating, deletion, movement/resizing, connections, layout repair, undo, persistence/export, and higher-level diagram generation. There are no obvious missing core operations for an Excalidraw scene editor.