MCP server for creating, editing, and exporting scientific diagrams using draw.io desktop application
19 tools with complete input schemas and descriptions. Naming is verb-forward and clear (drawio_live_*, drawio_*). Descriptions are substantive (100-250 chars typical), explaining WHAT and WHEN. Parameters are well-typed with enums for shapes/formats and numeric bounds. However, output schemas are not documented, LLMs cannot predict response structure for chaining. Error handling is absent from descriptions. Some parameter descriptions lack format hints (e.g., 'style' accepts raw draw.io CSS but no example or constraint is given). Live tools lack confirmation patterns for destructive ops (drawio_live_clear requires confirm=true, good; but drawio_live_draw_sequence with 500 ops has no dry-run). Tool composition is strong, each tool does one thing; live tools chain well (launch → screenshot → add_shape → save_snapshot). Naming consistency is excellent across the 19 tools.
Create an editable uncompressed .drawio file from structured vertices and edges. Use absolute output paths. Supports common scientific-diagram shapes, text, embedded local images, custom draw.io styles, groups/layers, and routed arrows.
Create a .drawio tracing document with a local PNG/JPEG/SVG reference embedded as a locked, low-opacity background and an editable drawing layer above it. Useful after visually decomposing a static scientific figure.
Export a .drawio file with the installed draw.io desktop CLI to PNG, JPEG, SVG, or PDF with optional scaling and page selection.
Inspect an existing .drawio file and return a compact inventory of pages, labels, geometry, styles, vertices, and edges for targeted edits.
Add one editable connector directly between two visible draw.io cells. The edge appears immediately.
Add one editable shape directly to the currently visible draw.io canvas. The shape appears immediately; no XML file is opened.
Output schemas not documented. LLMs cannot predict response structure (e.g., what fields drawio_live_status returns, what drawio_inspect yields). This breaks tool chaining and forces agents to guess field names.
drawio_live_draw_sequence operations array items lack detailed schema. Description says 'type: shape, edge, update, fit, or wait' but no nested schema for each operation type's parameters. LLMs cannot construct valid operations.
No error handling guidance in tool descriptions. Agents do not know what to do if drawio_live_launch fails (port in use? draw.io not installed?), or if drawio_create_diagram encounters invalid XML. Descriptions should include recovery hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Remove the current page's drawable cells in the visible editor to start a blank live drawing. The change is visible and undoable in draw.io.
Execute a paced sequence of shape, edge, update, fit, and wait operations in the visible draw.io editor. Each operation is applied separately with a delay so the user can watch the drawing process.
Fit the current live diagram into the visible draw.io window or set a specific zoom percentage.
Read a compact inventory of cells from the currently visible draw.io model for subsequent live edits.
Launch or connect to a visible draw.io desktop window with a localhost-only debugging channel. Shapes added through the live tools appear immediately on screen. This does not pre-generate a diagram file.
Save the current already-visible live draw.io model to an uncompressed .drawio file. This serializes the canvas after live drawing; it does not construct XML first and then open it.
Capture the current visible draw.io renderer so the model can decide the next drawing action and the user can review progress.
Report whether the visible draw.io editor and live graph are ready, including page title, viewport, zoom, and cell counts.
Change one existing visible cell's label, full style, position, or size in place. The edit appears immediately and participates in draw.io undo.
Check the local draw.io desktop CLI, version, default output directory, and supported operations.
Apply targeted edits to existing cells in an uncompressed .drawio file while preserving the rest of the tuned layout. Update labels, styles, and geometry by cell id after using drawio_inspect.
Validate an existing uncompressed .drawio file and report structural errors, warnings, pages, vertices, and edges.
Validate and write full uncompressed mxGraph XML to a .drawio file for high-fidelity diagrams that exceed the structured tool's shape vocabulary.
Style parameters (fill_color, stroke_color, style, custom_style) lack format constraints. Descriptions do not specify hex color format, CSS syntax, or draw.io style key examples. LLMs will hallucinate invalid values.
drawio_live_draw_sequence lacks dry-run or confirmation. With maxItems=500 operations, an agent could accidentally execute a massive destructive sequence. Consider adding a 'validate_only' parameter.