Excalidraw
CAUTIONgrade B · trust 89/100Fast and streamable Excalidraw MCP App
Overview
From the repository's own README, as read at the audited commit.
# Excalidraw MCP App ServerMCP server that streams hand-drawn Excalidraw diagrams with smooth viewport camera control and interactive fullscreen editing.## InstallWorks with any client that supports [MCP Apps](https://modelcontextprotocol.io/docs/extensions/apps) — Claude, ChatGPT, VS Code, Goose, and others. If something doesn't work, please [open an issue](https://github.com/antonpk1/excalidraw-mcp-app/issues).### Remote (recommended)### `https://mcp.excalidraw.com`For apps that don't yet have an official integration, you can add a custom MCP / connector (naming can vary between apps).### Local**Option A: Download Extension**1. Download `excalidraw-mcp-app.mcpb` from [Releases](https://github.com/antonpk1/excalidraw-mcp-app/releases)2. Double-click to install in Claude Desktop**Option B: Build from Source**```bashgit clone https://github.com/excalidraw/excalidraw-mcp.gitcd excalidraw-mcp-apppnpm install && pnpm run build```Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:```json{ "mcpServers": { "excalidraw": { "command": "node", "args": ["/path/to/excalidraw-mcp-app/dist/index.js", "--stdio"] } }}```Restart Claude Desktop.## UsageExample prompts:- "Draw a cute cat using excalidraw"- "Draw an architecture diagram showing a user connecting to an API server which talks to a database"## What are MCP Apps and how can I build one?Text responses can only go so far. Sometimes users need to interact with data, not just read about it. [MCP Apps](https://github.com/modelcontextprotocol/ext-apps/) is an official Model Context Protocol extension that lets servers return interactive HTML interfaces (data visualizations, forms, dashboards) that render directly in the chat.- **Getting started for humans**: [documentation](https://modelcontextprotocol.io/docs/extensions/apps)- **Getting started for AIs**: [skill](https://github.com/modelcontextprotocol/ext-apps/blob/main/plugins/mcp-apps/skills/create-mcp-app/SKILL.mConnect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add excalidraw-server --env KV_REST_API_TOKEN=${KV_REST_API_TOKEN} --env UPSTASH_REDIS_REST_TOKEN=${UPSTASH_REDIS_REST_TOKEN} -- npx -y @mcp-demos/[email protected]{
"mcpServers": {
"excalidraw-server": {
"command": "npx",
"args": [
"-y",
"@mcp-demos/[email protected]"
],
"env": {
"KV_REST_API_TOKEN": "${KV_REST_API_TOKEN}",
"UPSTASH_REDIS_REST_TOKEN": "${UPSTASH_REDIS_REST_TOKEN}"
}
}
}
}Exposed tools (1) 1 read · 0 write · 0 destructive
| Tool | Risk | Description |
|---|---|---|
read_me | read |
Details
- Source
- excalidraw/excalidraw-mcp
- npm
@mcp-demos/excalidraw-server@0.3.2- Transports
- stdio · streamable-http
- Credentials it reads
KV_REST_API_TOKENUPSTASH_REDIS_REST_TOKEN- Stars
- 5,295 · pushed 172d ago
Trust audit
Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (1 observation(s))
- Shell
- declared (2 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (7)
export const PENCIL_STROKE_SOFT = "SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjIwLjEwMAAAAAAAAAAAAAAA//tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAA6AABfgQAGCgoPDxMYGBwcICAlKSktLTI2Njs7Pz9DS
export const PENCIL_LINE_DRAG = "SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjIwLjEwMAAAAAAAAAAAAAAA//tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAoAABCHgAJCQ8PFhYWHBwiIiIpKS8vLzU1PDw8QkJISEh
.mcpbignore
const binary = atob(base64);
@excalidraw/excalidraw, @modelcontextprotocol/ext-apps, cors, express, morphdom, react, react-dom, @upstash/redis
docs/demo.gif
Gates applied: no_behavioural_pass, no_license.
Audited 2026-09-13 · audit v0.4.0 · source sha 4424dc27570f · full audit: observations/trust-audit/mcp-server/excalidraw__excalidraw-4.json · Report an issue or request a re-scan
Audit history
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-09-13 | 4424dc27570f | CAUTION | B | 89 | first audit |
Also audited
Servers with a similar trust profile.
Questions
What is the Excalidraw MCP server?
Fast and streamable Excalidraw MCP App
What tools does Excalidraw expose?
1 in total: 1 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is Excalidraw safe to connect to an agent?
With care. The audit graded it B (89/100) and found 7 things worth knowing before you trust this server, listed below with the exact line each was found on.
What credentials does Excalidraw need?
It reads KV_REST_API_TOKEN and UPSTASH_REDIS_REST_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Excalidraw run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @mcp-demos/excalidraw-server at 0.3.2.
How current is this page?
The grade is for one exact copy of the source (4424dc27570f), read on 2026-09-13. The repository is watched and re-audited when it changes.
Provenance: OBSERVED · read 2026-09-13 · job trust-audit-2026-09-13