Sketch - Collaborative SVG Canvas
Description
Opens a Fabric.js-based SVG editor in the browser for collaborative visual prototyping. Claude can write and read SVG through MCP tools while the user edits interactively. Changes sync in real-time via WebSocket.
Tools Available (via sketch-mcp-server)
- •
sketch_open_canvas- Open a named canvas (creates if new), launches browser editor - •
sketch_get_svg- Read current SVG from a canvas - •
sketch_set_svg- Replace entire canvas with new SVG - •
sketch_add_element- Add SVG elements without clearing existing content - •
sketch_add_textbox- Add a fixed-width text area (Textbox) with word wrapping - •
sketch_lock_objects- Lock all current objects (non-selectable, non-movable) - •
sketch_unlock_objects- Unlock all objects - •
sketch_save_template- Save canvas as reusable JSON template (preserves Textbox widths + lock state) - •
sketch_load_template- Load a saved JSON template into a canvas - •
sketch_list_templates- List all saved templates - •
sketch_clear_canvas- Clear canvas to blank state (use before streaming) - •
sketch_focus_canvas- Bring canvas window to foreground - •
sketch_list_canvases- List all active canvases - •
sketch_close_canvas- Close a canvas and its browser tab
Usage Patterns
Quick sketch
- •
sketch_open_canvaswith a name - •
sketch_set_svgorsketch_add_elementto draw - •User edits in browser
- •
sketch_get_svgto see changes
Streaming (real-time build-up)
- •
sketch_open_canvaswith a name - •
sketch_focus_canvasto bring window to front - •
sketch_clear_canvasto start fresh - •Call
sketch_add_elementmultiple times -- each fragment appears instantly - •User watches the UI build up in real-time
Multiple canvases
Each canvas opens in its own browser tab. Use different names for different drawings.
SVG tips
- •Use standard SVG elements:
<rect>,<circle>,<ellipse>,<line>,<path>,<text>,<polygon>,<polyline> - •Include
xmlns="http://www.w3.org/2000/svg"on the root<svg>element - •Set
widthandheighton the root SVG (default: 1200x800) - •Colors: use hex colors (
#ff0000) -- avoidrgba()as Fabric.js SVG parser may not handle it - •Text:
<text x="100" y="100" font-size="24">Hello</text> - •Images:
<image href="data:image/png;base64,..." width="200" height="200"/> - •Avoid
<defs>,<linearGradient>,<filter>-- Fabric.js has limited support for these