excalidraw-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Log level: debug, info, warn, error | info |
| CANVAS_HOST | No | Canvas server bind address | 127.0.0.1 |
| CANVAS_PORT | No | Canvas server port | 3000 |
| MAX_ELEMENTS | No | Maximum elements on canvas | 10000 |
| MAX_BATCH_SIZE | No | Maximum elements per batch create | 100 |
| PERSISTENCE_DIR | No | Directory for persistent storage | ./data |
| STANDALONE_MODE | No | Use in-process store (no canvas server needed) | true |
| AUDIT_LOG_ENABLED | No | Enable audit logging | true |
| CANVAS_SERVER_URL | No | URL the MCP server uses to reach the canvas. Required for connected mode. | http://127.0.0.1:3000 |
| EXCALIDRAW_API_KEY | No | API key for auth (min 32 chars). Required for connected mode. | |
| PERSISTENCE_ENABLED | No | Enable file-based persistence | false |
| CORS_ALLOWED_ORIGINS | No | Comma-separated origin allowlist | http://localhost:3000,http://127.0.0.1:3000 |
| RATE_LIMIT_WINDOW_MS | No | Rate limit window in milliseconds | 60000 |
| RATE_LIMIT_MAX_REQUESTS | No | Max requests per window (standard tier) | 100 |
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
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_viewA | Render Excalidraw elements as an interactive inline diagram. Pass an array of elements with type, x, y coordinates and optional styling. The diagram streams in progressively as elements are generated. Use read_me first to see available element types and color palettes. |
| read_meA | Get the Excalidraw element reference: types, colors, sizing, and tips. Call this before creating diagrams. |
| create_elementC | Create a single Excalidraw element on the canvas |
| update_elementC | Update an existing Excalidraw element by ID |
| delete_elementC | Delete an Excalidraw element by ID |
| query_elementsC | Search for elements by type, locked status, or group ID |
| get_resourceC | Get scene state, elements, theme, or library |
| batch_create_elementsB | Create multiple elements at once (max 100) |
| group_elementsC | Group multiple elements together |
| ungroup_elementsC | Remove elements from a group by group ID |
| align_elementsC | Align elements (left, center, right, top, middle, bottom) |
| distribute_elementsC | Distribute elements evenly (horizontal or vertical) |
| lock_elementsC | Lock elements to prevent modification |
| unlock_elementsC | Unlock elements to allow modification |
| create_from_mermaidC | Convert a Mermaid diagram to Excalidraw elements |
| export_sceneC | Export the canvas as PNG or SVG |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Excalidraw Canvas | Interactive Excalidraw canvas widget for inline diagram rendering |
TDQS
Scored across 16 tools
Most tools have distinct purposes, such as create_element vs. update_element vs. delete_element for element lifecycle, and align_elements vs. distribute_elements for layout. However, some overlap exists between lock_elements/unlock_elements and group_elements/ungroup_elements, which could cause minor confusion as they both manage element states, but descriptions clarify their specific actions.
Tool names follow a consistent verb_noun pattern throughout, such as create_element, delete_element, align_elements, and export_scene. All tools use snake_case, and verbs are clear and predictable, making the set easy to navigate and understand.
With 16 tools, the count is slightly high but reasonable for a diagramming server covering creation, manipulation, querying, and export. It includes core operations without being overly bloated, though it could be streamlined by merging some related tools like lock/unlock or group/ungroup.
The tool set provides comprehensive coverage for Excalidraw diagramming: full CRUD for elements (create, read via query_elements/get_resource, update, delete), layout tools (align, distribute), grouping and locking, import from Mermaid, export to PNG/SVG, and a reference guide. No obvious gaps exist for the domain.