
Excalidraw Canvas MCP Server (yctimlin): Setup for Claude and Cursor
Not the official Excalidraw MCP server. This one is built by the community. Excalidraw makes its own: Excalidraw MCP →
Lets Claude, Cursor and Codex draw, edit and export Excalidraw diagrams on a live canvas they can look at.
This is a community server that gives your assistant a full Excalidraw canvas. It can add and change single shapes, take a screenshot to check its work, and export the result. It is not the official Excalidraw server, which shows a one-shot diagram inside the chat.
It runs on your computer and needs no account. A canvas server starts by itself on first use, on this machine only by default. Drawings live in memory unless you set a data folder.
Good for
- Developers who want architecture diagrams saved as files in their repo
- Obsidian users who keep diagrams in their notes
- Anyone who wants the assistant to draw, look and fix a diagram step by step
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install Excalidraw Canvas MCP (yctimlin)
Claude Code
- 1
Copy this prompt.
Add the Excalidraw Canvas MCP (yctimlin) server to Claude Code. Run this command: claude mcp add yctimlin-mcp-excalidraw -- npx -y mcp-excalidraw-server Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
Built from the package data we hold. Not yet tested by us.
Tools
Draws many shapes and arrows at once
Creates several elements in one call. Give shapes custom IDs so arrows can attach to them and route to their edges.
Try: “Draw three boxes called API, Queue and Worker with arrows between them.”
Write ·
batch_create_elementsDraws one shape, text or arrow
Adds a single element to the canvas. Arrows can bind to shapes by ID and route themselves to the edges.
Try: “Add a blue rectangle labelled Database.”
Write ·
create_elementTurns Mermaid text into a diagram
Converts a Mermaid diagram into Excalidraw elements and draws them on the canvas.
Try: “Turn this Mermaid flowchart into an Excalidraw diagram.”
Write ·
create_from_mermaidDescribes what is on the canvas in words
Returns the element types, positions, connections, labels and layout of the current canvas. The assistant uses it to see what exists before it changes anything.
Try: “Describe what is on the canvas right now.”
Network ·
describe_sceneTakes a picture of the canvas
Renders the canvas to a PNG and returns the image so the assistant can check how the diagram looks. It renders without a browser tab.
Try: “Look at the diagram and fix any overlapping labels.”
Network ·
get_canvas_screenshotFinds elements on the canvas by filter
Returns elements that match filters you give, such as type.
Try: “List all arrows on the canvas.”
Network ·
query_elementsReads one element by its ID
Returns the full details of a single canvas element.
Try: “Show me the details of element a1.”
Network ·
get_elementChanges an existing element
Edits an element that is already on the canvas, such as its text, colour, size or position.
Try: “Make the Database box green.”
Write ·
update_elementCopies elements with an offset
Duplicates the chosen elements and shifts the copies by an offset you set.
Try: “Duplicate the Worker box twice, side by side.”
Write ·
duplicate_elementsLines elements up
Aligns the chosen elements to a position, for example to the left edge or to the middle.
Try: “Align the three boxes along their top edge.”
Write ·
align_elementsSpaces elements evenly
Spreads the chosen elements out with even gaps.
Try: “Space these five boxes evenly across the canvas.”
Write ·
distribute_elementsGroups elements together
Groups several elements so they move and select as one.
Try: “Group the three database boxes.”
Write ·
group_elementsSplits a group apart
Removes a group so its elements are separate again.
Try: “Ungroup the database boxes.”
Write ·
ungroup_elementsLocks elements so they cannot change
Locks the chosen elements to stop edits.
Try: “Lock the title and legend.”
Write ·
lock_elementsUnlocks elements for editing
Lets you edit elements that were locked.
Try: “Unlock the legend.”
Write ·
unlock_elementsMoves and zooms the canvas view
Fits all elements in view, zooms to a few elements, centres on one, or sets zoom and scroll. It needs the canvas open in a browser.
Try: “Zoom to fit the whole diagram.”
Write ·
set_viewportRemoves one element
Deletes a single element from the canvas.
Try: “Delete the unused Cache box.”
Delete ·
delete_elementEmpties the whole canvas
Removes every element from the canvas. Take a snapshot first if you may want it back.
Try: “Clear the canvas and start over.”
Delete ·
clear_canvasSaves a named copy of the canvas
Stores the canvas under a name so you can come back to it. Snapshots live in memory unless a data folder is set.
Try: “Save a snapshot called v1.”
Write ·
snapshot_sceneBrings back a saved snapshot
Restores the canvas from a named snapshot.
Try: “Restore the snapshot called v1.”
Write ·
restore_snapshotSaves the diagram as a .excalidraw file
Exports the canvas as Excalidraw JSON, and can write it to a file. A path ending in .md uses the Obsidian Excalidraw format. File access is limited to one export folder.
Try: “Save this diagram to docs/architecture.excalidraw.”
Write ·
export_sceneLoads a diagram from a file
Reads a .excalidraw file, an Obsidian .excalidraw.md file or raw JSON onto the canvas.
Try: “Import docs/architecture.excalidraw.”
Write ·
import_sceneExports the diagram as PNG or SVG
Renders the canvas to a PNG or SVG without a browser tab. SVGs embed the fonts they use.
Try: “Export the diagram as an SVG.”
Write ·
export_to_imageMakes a shareable excalidraw.com link
Encrypts the diagram and uploads it, then returns a link. Anyone with the link can view it.
Try: “Give me a share link for this diagram.”
Write ·
export_to_excalidraw_urlUsed by the assistant behind the scenes
Gives the assistant drawing rules before it starts
Returns a design guide with colours, sizes, layout patterns and arrow tips. The assistant reads it before it draws so results look tidy.
Try: “Draw the architecture of this service as a clean diagram.”
Read ·
read_diagram_guideReads an Excalidraw resource
Returns an Excalidraw resource by name.
Try: “Get the library resource.”
Network ·
get_resource
Read from the source code
Permissions
medium risk · 4 things to watch
Medium risk
The assistant can add, change and delete anything on the canvas, and write diagram files to one folder on your computer. Set the export folder to a place you are happy to have files written.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It writes and reads diagram files
The export and import tools read and write files, limited to one folder (your working directory by default) and to .excalidraw, .json, .md, .png and .svg types. github.com
Share links upload your diagram
The share-link tool encrypts the scene and uploads it to excalidraw.com's storage. Anyone with the link can view it. github.com
clear_canvas and delete_element remove work with no undo
clear_canvas deletes every element and delete_element deletes one. The canvas lives in memory by default, so call snapshot_scene or export_scene first if you want a copy. github.com
Canvas page loads fonts from esm.sh
The README says the canvas page loads Excalidraw's fonts from the esm.sh CDN. The canvas server itself listens on 127.0.0.1:3000 unless you set HOST. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only mode is documented. |
|---|---|
| Talks to | Your local canvas server. json.excalidraw.com, only when you ask for a share link |
| Sign-in and keys | No account or key. |
Questions
Is this the official Excalidraw MCP server?
No. It is a community project by yctimlin. Excalidraw has its own official server, which shows a diagram in the chat from one prompt.
How is it different from the official server?
This one works on a live canvas element by element. The assistant can look at it with a screenshot, adjust it and export files. The official one makes a diagram from a single prompt.
Do I need a browser open?
Not for drawing or exports, which render without a browser tab. Moving the view needs the canvas open in a browser.
Does it need an account or API key?
No. It runs on your computer. The canvas binds to this machine by default, on port 3000.
Are my diagrams saved?
Not by default. Elements and snapshots stay in memory and are lost on restart. Set a data folder for recovery, or export a file.
Does it work without MCP?
Yes. The project also ships a command line tool and an agent skill that drive the same canvas.
Does it send my diagram anywhere?
Only if you ask for a share link, which uploads the encrypted diagram to Excalidraw's storage.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
mcp-excalidraw-server- Registry
- npm
- Transport
- stdio
- Auth
- None
- Version
- 2.1.2
- License
- MIT
- Last commit
- Oct 30, 2026
- Open issues
- 37
Other Excalidraw MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 3Hide
- github.com · github.com
- www.npmjs.com · npmjs.com
- github.com · github.com