thcThought Control

Excalidraw MCP (official MCP App + community mcp_excalidraw)

Agents draw, inspect and edit Excalidraw diagrams over MCP.

mcp.excalidraw.com ↗repo ↗docs ↗Community mcp_excalidraw (mcp-excalidraw-server) ↗Excalidraw ↗MCP Apps extension ↗

license
MIT · Official excalidraw-mcp README says MIT but the repo has no LICENSE file (GitHub reports no license). Community mcp_excalidraw is MIT with a LICENSE file. Excalidraw itself is MIT.
language
TypeScript
backing
Official: Excalidraw (company behind excalidraw.com; repo originated as antonpk1/excalidraw-mcp-app). Community: individual (yctimlin) with 25 contributors.
stars
5,493 (as of 2026-10-09)
downloads
Community mcp-excalidraw-server: 5,145/week npm (2026-10-01..07). @excalidraw/excalidraw: 675,606/week npm. Official MCP is mainly used via the hosted remote endpoint (no download count).
latest release
v0.3.2, 2026-02-09
first release
2026-02
borrow

Different medium, but its agent protocol details (cheat-sheet tool, checkpoint-relative patches, describe vs screenshot) are battle-tested patterns scene can copy.

Borrow from it: take a specific idea, API or format.

the steelman: the best honest case for it

Excalidraw over MCP is the cleanest proof that 'the picture is a JSON value' makes agents good at visual work. The official MCP App needed only two tools and a cheat-sheet to get agents in Claude, ChatGPT and VS Code drawing animated, hand-drawn diagrams inline, and its checkpoint plus delete-pseudo-element trick is a token-cheap patch protocol that even supports in-place animation. The community server goes all the way: 26 tools for per-element CRUD, layout, structured scene description and headless screenshots, so an agent draws, looks, fixes truncated labels and looks again; diagrams export as .excalidraw files into the repo. It is MIT, trivial to install, and actively used.

scores
datadriveseeedittimeratetermpxteachmatureopen
UI as data5 scene 5the diagram is entirely a JSON element list (it is a diagram, not an app UI)
Agent can drive it5 scene 5community server: create/change/operate a live canvas via MCP, CLI or REST
Agent can see it5 scene 5community: structured describe + rendered screenshot
Small, targeted edits5 scene 5community update_element by id; official only coarse checkpoint/delete
Time travel3 scene 0checkpoints/named snapshots the agent can restore; no history log or seek
Live data rate2 scene 5WebSocket sync of agent-paced edits; no data streams
Terminal native0 scene 5
Pixel graphics5 scene 4
Teaching2 scene 3
Maturity3 scene 1official widely reachable but dormant since March; community actively used (5k npm/week)
Openness4 scene 4MIT, controlled by a company (official) or one maintainer (community)

Excalidraw MCP (official MCP App + community mcp_excalidraw) scene now scene planned

how agents use it

How

MCP (official: remote https://mcp.excalidraw.com or local stdio, MCP Apps UI; community: stdio MCP 26 tools, CLI `npx -y mcp-excalidraw-server <cmd>`, REST API).

Wiring it in

One connector URL (official) or one `claude mcp add` / npx command (community).

Seeing the result

Official: none for the model beyond its own checkpoints. Community: describe_scene (structured) and get_canvas_screenshot (image).

Small edits

Official: coarse (restore checkpoint, delete by id, append). Community: per-element update by id, query by type/bbox/filter.

History

Official: checkpoints per create_view. Community: named snapshots save/list/restore. Excalidraw's own undo/redo is human-facing.

In short

The community server is a near-complete 'agent-editable live canvas' with structured and visual readback; the official one is a polished one-shot widget.

architecture

Official: an MCP Apps server with two tools, read_me (format cheat-sheet) and create_view (a JSON array of Excalidraw elements rendered into a ui:// iframe with draw-on animation and camera moves). It is a declarative re-send model: each create_view returns a checkpointId; later calls start with {type:'restoreCheckpoint', id} and add elements or {type:'delete', ids} pseudo-elements, and user edits in fullscreen are saved back to the checkpoint. Community: a local canvas server (Excalidraw web UI + REST + WebSocket sync) fronted by an MCP stdio server with 26 tools, a CLI with JSON in/out, and an agent skill; screenshots render headlessly since v2.1.

performance

No published numbers.

adoption and upkeep

Adoption

Official MCP App: 5.5k stars, 518 forks, works in Claude, ChatGPT, VS Code, Goose. Community server: 2.5k stars, actively released (v2.1.x, Oct 2026).

Maintainability

The official MCP App was a burst in February 2026; the community server is the actively maintained, more capable one.

Releases: Official: v0.1.0 2026-02-04 to v0.3.2 2026-02-09, then no releases; last push 2026-03-24. Community: v2.1.0 2026-10-03, v2.1.1 and v2.1.2 2026-10-04 · Contributors: Official: 5; community: 25 · Recent: Official: none since 2026-03-24. Community: 35 commits since 2026-07-11, pushed 2026-10-09 · Bus factor: low for both: official is a small widget side project; community is one main maintainer

weaknesses
and thc-scene

Overlap

Whole surface as a JSON value, id-addressed element edits, structured plus rendered readback, snapshots, agent-driven animation and explanation.

What scene would be reinventing

Little for scene's core, but the community server's draw-look-fix loop and the official checkpoint/delete patch format are proven agent ergonomics scene should mirror rather than reinvent.

The gap it leaves

No terminal rendering, no app interactivity (keys, focus, lists), no live data sources, no hot-swap; scene is a running terminal application, not a diagram.

What to borrow

  • A read_me / guide tool that returns the format cheat-sheet before first use
  • Checkpoint ids returned from every push so the agent can say 'start from checkpoint X, delete ids a,b, add these' instead of resending
  • describe_scene: a compact text description (ids, positions, labels, connections) distinct from the raw screen
  • query_elements by type/bbox/filter for addressing scene nodes
  • Named snapshots save/list/restore as a stopgap before full time travel
sources
  1. excalidraw/excalidraw-mcp README github.com
  2. excalidraw-mcp src/server.ts github.com
  3. yctimlin/mcp_excalidraw README github.com
  4. GitHub API repos/excalidraw/excalidraw-mcp api.github.com
  5. GitHub API repos/yctimlin/mcp_excalidraw api.github.com
  6. npm downloads mcp-excalidraw-server api.npmjs.org