Excalidraw MCP Server
Excalidraw canvas access for AI agents to create, view, and save diagrams locally.
Data last scanned today · Reviewed yesterday
Overview
The Excalidraw MCP Server provides a bridge between AI agents and Excalidraw, allowing agents to generate architecture diagrams and flowcharts programmatically. Agents can interact with a live canvas to refine layouts, fix overlaps, and iterate on visual designs before exporting the results as native .excalidraw files for repository integration. Designed for flexibility, the server offers 26 tools via stdio, a CLI, and a REST API. It handles rendering locally without requiring API keys, and includes the ability to perform screen captures so agents can visually assess their own work during the drawing process.
Our verdict
With a security score of 38/100, this tool carries a high risk level. It lacks any authentication method, meaning anyone with configuration access can execute commands, and it defaults to full write access without a read-only mode. It is best suited for experienced developers working in isolated environments who can manage these risks manually.
- Supports 26 tools for granular canvas manipulation
- Enables AI to self-correct layouts via screenshots
- Operates fully local with no API keys required
- Lacks authentication, allowing unauthorized command execution
- Provides full write access to the filesystem by default
- Maintained by community contributors rather than the official vendor
Setup
{
"mcpServers": {
"mcp-excalidraw": {
"args": [
"-y",
"mcp-excalidraw-server"
],
"command": "npx"
}
}
}Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), then restart Claude Desktop. Some servers require API keys or tokens as environment variables — check the project's README and add an "env" object if needed.
- No read-only mode — running this grants full read/write access.
- No built-in authentication — anyone with access to this config can invoke every tool it exposes.
Tools
| Tool | Description | Risk |
|---|---|---|
| start | Start the canvas server. | medium |
| stop | Stop the canvas server. | medium |
| status | Report current canvas server state. | low |
| add | Batch-create elements from a JSON array. | medium |
| apply | Execute a multi-op patch of create, update, or delete operations. | medium |
| get | Read elements by ID. | low |
| delete | Remove elements by ID. | medium |
| update | Update an element. | medium |
| query | Query elements using types, bounding boxes, or filters. | low |
| describe | Provide an AI-readable scene summary. | low |
| screenshot | Take a screenshot of the canvas. | low |
| export | Export the scene file. | low |
| import | Import elements from a file. | medium |
| mermaid | Convert Mermaid diagrams to canvas elements. | medium |
| snapshot | Save, list, or restore named canvas snapshots. | medium |
| arrange | Perform layout operations like align, distribute, group, ungroup, lock, unlock, or duplicate. | medium |
| share | Upload a scene to generate a shareable excalidraw.com URL. | medium |
| clear | Wipe the canvas. | high |
| install-skill | Install the portable agent skill. | medium |
| create_element | Create an element on the canvas. | medium |
| get_element | Retrieve a specific element by its ID. | low |
| update_element | Update an existing element on the canvas. | medium |
| delete_element | Delete an element from the canvas. | medium |
| query_elements | Query elements on the canvas based on criteria. | low |
| batch_create_elements | Create multiple elements on the canvas in a single operation. | medium |
| duplicate_elements | Duplicate existing elements on the canvas. | medium |
| align_elements | Align multiple elements on the canvas. | medium |
| distribute_elements | Distribute elements evenly on the canvas. | medium |
| group_elements | Group multiple elements together. | medium |
| ungroup_elements | Ungroup a group of elements. | medium |
| lock_elements | Lock elements to prevent accidental modification. | medium |
| unlock_elements | Unlock locked elements. | medium |
| describe_scene | Get a structured text summary of the current scene. | low |
| get_canvas_screenshot | Capture a screenshot of the current canvas. | low |
| export_scene | Export the current scene to a file. | low |
| import_scene | Import a scene from a file. | medium |
| export_to_image | Export the scene to an image format. | low |
| export_to_excalidraw_url | Export the scene to a shareable Excalidraw URL. | low |
| create_from_mermaid | Create elements on the canvas from a Mermaid string. | medium |
| clear_canvas | Wipe the canvas. | high |
| snapshot_scene | Create a snapshot of the current scene for persistence. | medium |
| restore_snapshot | Restore the scene from a previously created snapshot. | medium |
| set_viewport | Adjust the viewport view of the canvas. | medium |
| read_diagram_guide | Read the design guide for creating diagrams. | low |
| get_resource | Retrieve a resource from the server. | low |
Compatibility
| Client | Local | Docker | Remote | Read-only |
|---|---|---|---|---|
| ChatGPT | ||||
| Claude Desktop | ||||
| Cursor | ||||
| VS Code | ||||
| Windsurf |
Frequently asked questions
›What are the system requirements for running the Excalidraw MCP server?
The server requires Node.js version 18 or higher.
›Does this MCP server require any external API keys to function?
No, the core drawing functionality runs fully locally and does not require any API keys.
›How does the server handle the canvas process?
The canvas server defaults to http://127.0.0.1:3000 and will automatically start when the CLI or MCP server launches, provided no other instance is listening.
›Is it possible to disable the automatic startup of the canvas server?
Yes, you can opt out of the auto-start behavior by setting the environment variable EXCALIDRAW_NO_AUTOSTART=1.
›Is the Excalidraw content ever uploaded to external servers?
Sharing is optional; if you choose to use the share feature, the tool uploads an encrypted scene to excalidraw.com.
Alternatives
Badge
Maintain this server? Add the live badge to your README.