cnvs.app exposes a public Model Context Protocol endpoint at https://cnvs.app/mcp. Add it once to Claude Desktop, Claude Code or any MCP-capable client, and the AI can read and edit any cnvs.app board you point it at — alongside humans, with the same real-time WebSocket sync.
You can ask Claude (or any MCP-aware AI) things like:
The AI's edits appear live to everyone connected, tagged with an ai:<name> author label (default ai:claude). AI-authored items are visually distinguished in the SVG preview (purple border) so humans can tell at a glance what the AI contributed.
Settings → Developer → Edit Config:
{
"mcpServers": {
"cnvs": {
"type": "http",
"url": "https://cnvs.app/mcp"
}
}
}
Restart Claude Desktop. Open any cnvs board URL in a tab. Ask: "Open this cnvs board and add a sticky with today's agenda."
claude mcp add --transport http cnvs https://cnvs.app/mcp
For full real-time push-to-model behaviour (AI reacts within ~3 s of your edits, no polling), install the matched skills:
mkdir -p ~/.claude/skills/cnvs-whiteboard && cd ~/.claude/skills/cnvs-whiteboard
curl -O https://cnvs.app/cnvs-whiteboard/SKILL.md
mkdir -p ~/.claude/skills/mcp-listen && cd ~/.claude/skills/mcp-listen
curl -O https://cnvs.app/mcp-listen/SKILL.md \
-O https://cnvs.app/mcp-listen/package.json \
--create-dirs -o scripts/listen.mjs https://cnvs.app/mcp-listen/scripts/listen.mjs
npm install
| Tool | What it does |
|---|---|
open_board | Resolve a cnvs URL or ID; creates the board if missing; auto-subscribes to live updates. |
get_board | Full structured JSON snapshot — IDs, coordinates, text content, for precise edits. |
get_preview | Schematic SVG render — a few kB — so the model sees the layout without blowing up context. |
add_text | Create / update a text node. Supports Markdown, Mermaid, sticky-note style. |
add_link | Drop a clickable URL capsule. |
add_image | Place an image from a data URL. |
draw_stroke | Freehand stroke from [x, y] world-coordinate points. |
move | Reposition any item by id. |
erase | Delete any item by id + kind. |
wait_for_update | Long-poll until the next edit. Default 25 s, max 55 s. |
Every MCP tool has a 1:1 REST mirror at POST /api/boards/<id>/.... REST is universal — any HTTP client can use it without an MCP SDK. See the REST API docs.
cnvs://board/{id}/state.json — full JSON snapshot. Subscribable.cnvs://board/{id}/preview.svg — compact SVG render. Read-only.Subscribing to state.json registers your session for notifications/resources/updated events. The server pushes one notification ~3 s after each edit burst settles (debounced) over the GET /mcp SSE stream.
Default: none. The board ID is the access key — anyone who knows the ID can read and write to that board, identical to sharing the URL.
Optionally a board can be PIN-locked. Mode write requires the 6-character key for mutations only; mode all requires it for everything. Pass the key via the X-Board-Key HTTP header on JSON-RPC POSTs, or the access_key argument on individual tool calls.
You can absolutely paste a screenshot of a cnvs.app board into a chat with Claude and ask for analysis. The MCP integration adds three things:
get_board so the AI can target specific items for moves and deletes.cnvs.app does not use board content to train AI models. AI access happens client-side — your chosen AI client speaks directly to https://cnvs.app/mcp; we never see the prompt or the AI's reasoning, only the resulting mutations on the board. Optional per-board PIN lock if your content is sensitive. Full privacy stance.