Excalidraw MCP Server
A local Excalidraw canvas that assistants can draw on, inspect, screenshot and export to files
Draws hand-drawn Excalidraw diagrams inline in the chat, with editing and export to excalidraw.com
Official · Excalidraw TypeScript Remote (hosted) · Streamable HTTPLocal · stdio Design
53 popularity score ★ 5.6k
Opens the app, which asks before it adds the server.
https://mcp.excalidraw.com/mcphttps://mcp.excalidraw.com/mcp{
"servers": {
"excalidraw": {
"type": "http",
"url": "https://mcp.excalidraw.com/mcp"
}
}
}Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
git clone https://github.com/excalidraw/excalidraw-mcp.git
cd excalidraw-mcp
pnpm install && pnpm run buildclaude mcp add excalidraw -- node '<ABSOLUTE_PATH_TO_CLONE>/dist/index.js' --stdio{
"mcpServers": {
"excalidraw": {
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/dist/index.js",
"--stdio"
]
}
}
}{
"mcpServers": {
"excalidraw": {
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/dist/index.js",
"--stdio"
]
}
}
}{
"servers": {
"excalidraw": {
"type": "stdio",
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/dist/index.js",
"--stdio"
]
}
}
}[mcp_servers.excalidraw]
command = "node"
args = ["<ABSOLUTE_PATH_TO_CLONE>/dist/index.js", "--stdio"]gemini mcp add --scope user excalidraw node -- '<ABSOLUTE_PATH_TO_CLONE>/dist/index.js' --stdioPORT |
Optional: Port for the HTTP mode used when started without --stdio; 3001 by default. Not used over stdio. |
|---|
Excalidraw MCP is an MCP Apps server kept in the Excalidraw organisation on GitHub. Instead of replying with text, the assistant sends a list of Excalidraw elements and the client renders them as an interactive widget in the conversation: shapes appear one at a time with a pen-stroke animation, the view can pan between parts of the drawing, and the user can open it fullscreen and edit it by hand.
The model sees two tools. read_me returns a reference of the element format, colours and examples, and create_view takes a JSON array of elements and draws it. Each drawing is stored as a checkpoint with a short id; a later create_view call can start from that checkpoint, add elements and delete others by id, so a diagram is refined step by step, including any edits the user made by hand. The release source (v0.3.2, src/server.ts) registers three more tools that only the widget can call: export_to_excalidraw, save_checkpoint and read_checkpoint, so the real total is five, a count the README does not give.
It can be used without installing anything through the hosted endpoint at mcp.excalidraw.com, which answers without sign-in, or built from source and run over stdio on your own machine. The README also offers a Claude Desktop extension file on the releases page, and you can deploy your own copy to Vercel.
| To run it yourself | Node.js 18+ |
|---|
A client that supports the MCP Apps extension (its docs name Claude, ChatGPT, VS Code and Goose); in a client without it the diagram widget does not render. For the hosted endpoint, nothing else. To run from source: git, Node.js 18 or later (manifest.json), pnpm, and Bun, which the build script calls and the package's postinstall step tries to set up from its optional Bun packages.
There is no npm package: the manifest's comment names @mcp-demos/excalidraw-server, but it is not published, so running it locally means building from source or using the .mcpb extension from the releases page. The README's build steps say cd excalidraw-mcp-app after cloning, but the clone folder is excalidraw-mcp. Checkpoints made locally are kept as JSON files in the system temp folder; on a Vercel deployment they go to Upstash Redis for 30 days when that is set up, otherwise only to memory, and a checkpoint that has expired cannot be restored. Started without --stdio, it serves HTTP on port 3001 (set with PORT) on all interfaces, not stdio.
Suits someone who wants diagrams sketched during a conversation and then adjusted by hand, in a client that renders MCP Apps. The hosted endpoint is the easy route and needs no account; build it from source if you want the checkpoints kept on your own machine. It draws only what the model writes as elements: it does not open, list or save .excalidraw files on disk or on excalidraw.com. If you need an assistant to work with an Excalidraw canvas or files outside the chat, look at the other Excalidraw servers we list, such as mcp-excalidraw, and check what their own pages say.
read_mecreate_viewexport_to_excalidrawsave_checkpointread_checkpoint