Excalidraw MCP Server for AI coding harnesses (Excalidraw v2 spec compliant)
Excalidraw MCP has well-structured tool definitions with complete JSON schemas and mostly clear descriptions. All 12 tools are explicitly registered with inputSchema. However, several parameter descriptions lack actionable detail (e.g., 'Filter by element type' without explaining what types are valid), and output schemas are not documented. Error handling is minimal, no recovery guidance or categorization. The batch tool has a vague schema (items: {type: 'object'} with no properties). Naming is consistent and verb-driven. Overall solid foundation but missing LLM-optimization details and error patterns.
Clear all elements from the Excalidraw canvas.
Create a new Excalidraw element (100% Excalidraw v2 spec compliant). Supports rectangle, diamond, ellipse, text, arrow, line.
Create multiple Excalidraw elements in a single call.
Create an auto-laid-out flowchart from a simple text description (e.g., 'Client --> API --> Service --> DB').
Delete an element by its ID.
Export the complete Excalidraw scene to a valid .excalidraw JSON file on disk.
Get the full valid .excalidraw file JSON content as string.
create_elements_batch has vague schema: items defined as {type: 'object'} with no properties. LLM cannot infer what fields each element should contain.
query_elements filter parameter lacks structure. Description says 'Additional filter criteria' but does not specify valid keys, types, or examples. LLM must guess.
No output schemas documented for any tool. LLM cannot plan downstream calls or extract required fields (e.g., what does create_element return? An element object? An ID?)
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Load an existing .excalidraw file into memory.
Insert a pre-built library item (icon) at the specified position with optional scale. Supports items from all 8 official Excalidraw libraries plus built-in icons.
List or search all available pre-built library items (AWS Architecture, Google Icons, Software Architecture, System Design, Software Logos, UML/ER Diagrams, Robots, etc.).
Query elements with optional filters.
Update an existing element by ID. Only provided fields will be updated.
Destructive operations (clear_canvas, delete_element) lack confirmation or dry-run support. No error guidance if operation fails. Agent could accidentally wipe canvas.
Parameter descriptions use vague language. E.g., 'Filter by element type' (query_elements) does not list valid types. 'Additional filter criteria' (query_elements) does not explain structure. LLM must infer.