AI whiteboard via MCP — Claude and GPT collaborate on the same live board as you

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.

Open a board to test it → Full LLM reference

What "AI on the whiteboard" actually means

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.

Add cnvs.app to Claude Desktop

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."

Add cnvs.app to Claude Code

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

Tools the AI gets

ToolWhat it does
open_boardResolve a cnvs URL or ID; creates the board if missing; auto-subscribes to live updates.
get_boardFull structured JSON snapshot — IDs, coordinates, text content, for precise edits.
get_previewSchematic SVG render — a few kB — so the model sees the layout without blowing up context.
add_textCreate / update a text node. Supports Markdown, Mermaid, sticky-note style.
add_linkDrop a clickable URL capsule.
add_imagePlace an image from a data URL.
draw_strokeFreehand stroke from [x, y] world-coordinate points.
moveReposition any item by id.
eraseDelete any item by id + kind.
wait_for_updateLong-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.

Resources & subscriptions

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.

Authentication

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.

Why not just take screenshots?

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:

Privacy

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.

Related