
Napkin
Turns Excalidraw into a shared whiteboard where your AI agent can draw, annotate, and respond to your sketches. The MCP server exposes an intent-based API so agents can add nodes, connect them, apply layouts, and read canvas state without touching coordinates. One-way mode works with any MCP client. Add a webhook receiver and the agent wakes up when you draw something, reads the diff, and responds in your chat channel. Includes thought bubbles for agent suggestions, metadata tagging for semantic reasoning, batch execution via apply_intents, and trace_path for walking flows through diagrams. Useful when you want visual collaboration that doesn't collapse into describing wireframes back and forth in text.
- GitHub stars
- 1
- tools
- 29
- auth
- Secret needed
- transport
- STDIO
- env var
- 1
- last updated
- Apr 5, 2026
Tools
29 toolsPublic tool metadata for what this MCP can expose to an agent.
get_canvasFull semantic canvas — nodes, edges, zones, metadata
Full semantic canvas — nodes, edges, zones, metadata
No parameter schema in public metadata yet.
get_canvas_summaryCompact read — nodes and edges only
Compact read — nodes and edges only
No parameter schema in public metadata yet.
get_canvas_rawRaw Excalidraw JSON
Raw Excalidraw JSON
No parameter schema in public metadata yet.
get_canvas_diffElements changed since a timestamp
Elements changed since a timestamp
No parameter schema in public metadata yet.
get_pending_triggersPoll for triggers (pull mode)
Poll for triggers (pull mode)
No parameter schema in public metadata yet.
trace_pathTraverse graph from a node, with optional metadata filtering
Traverse graph from a node, with optional metadata filtering
No parameter schema in public metadata yet.
get_server_instructionsCompact or verbose server-side guidance for agents
Compact or verbose server-side guidance for agents
No parameter schema in public metadata yet.
apply_intentsExecute ordered batch of operations in one call
Execute ordered batch of operations in one call
No parameter schema in public metadata yet.
add_nodeAdd labeled node — server handles placement. Optional zone+row pin nodes to a shared layout rank (see Swimlanes).
Add labeled node — server handles placement. Optional zone+row pin nodes to a shared layout rank (see Swimlanes).
No parameter schema in public metadata yet.
connectConnect nodes with an arrow
Connect nodes with an arrow
No parameter schema in public metadata yet.
moveMove element by offset (dx, dy)
Move element by offset (dx, dy)
No parameter schema in public metadata yet.
resizeResize element, center preserved
Resize element, center preserved
No parameter schema in public metadata yet.
styleApply color, fill, opacity, stroke
Apply color, fill, opacity, stroke
No parameter schema in public metadata yet.
add_labelFloating text near an element
Floating text near an element
No parameter schema in public metadata yet.
delete_elementRemove element and bound text
Remove element and bound text
No parameter schema in public metadata yet.
patch_canvasPartial field updates on existing elements
Partial field updates on existing elements
No parameter schema in public metadata yet.
update_canvasAdd elements with full definitions
Add elements with full definitions
No parameter schema in public metadata yet.
clear_canvasRemove everything
Remove everything
No parameter schema in public metadata yet.
layoutAuto-arrange via Dagre (TB, LR, tree, hierarchy)
Auto-arrange via Dagre (TB, LR, tree, hierarchy)
No parameter schema in public metadata yet.
add_thought_bubbleDashed purple tentative suggestion
Dashed purple tentative suggestion
No parameter schema in public metadata yet.
confirm_thought_bubbleMake permanent
Make permanent
No parameter schema in public metadata yet.
dismiss_thought_bubbleRemove
Remove
No parameter schema in public metadata yet.
list_thought_bubblesList current bubbles
List current bubbles
No parameter schema in public metadata yet.
describe_elementsRender to PNG, send to Claude vision for description
Render to PNG, send to Claude vision for description
No parameter schema in public metadata yet.
describe_sketchConvenience wrapper for freehand elements
Convenience wrapper for freehand elements
No parameter schema in public metadata yet.
animate_elementInterpolate position/size/opacity/color over time
Interpolate position/size/opacity/color over time
No parameter schema in public metadata yet.
export_canvasSave to .excalidraw, .svg, or .png
Save to .excalidraw, .svg, or .png
No parameter schema in public metadata yet.
start_sessionBegin session with channel ID, webhook, debounce override
Begin session with channel ID, webhook, debounce override
No parameter schema in public metadata yet.
end_sessionEnd session
End session
No parameter schema in public metadata yet.
Sponsors
Configuration
ANTHROPIC_API_KEYsecretAnthropic API key — enables vision features (describe_elements). Optional.
Readme
Napkin
Napkin is a shared Excalidraw canvas for agent + human collaboration.
Why We Built It
I love using AI assistants for everyday tasks — design, programming, and brainstorming. I’ve always found visual thinking helpful, but there was a gap: I could describe something, and the agent could describe it back, but we couldn’t point to the same thing. What if my agent and I could share a whiteboard — where I draw, it responds, and we build together?
Napkin works with any MCP-capable agent. For true two-way canvas-to-agent, you'll also need a webhook.
Examples (all drawn by Perry the agent, with Napkin)
Brainstorming
Brainstorm
Gaming
Games
"Art" - Don't know why Perry invented a Platabird, but there you are.
Art
Collaboration
Collaboration
Details
- Repository
- github.com/sshwarts/napkin
- Category
- Design & Creative
- Package
napkin-mcp- Transport
- STDIO
- Auth
- Required
- Registry
- MCP registry, active