cnvs-whiteboard-skills
Agent Skills + MCP server discovery for cnvs.app — the free, no-signup real-time collaborative whiteboard. Any AI agent can read, write, draw, diagram, and subscribe to live human edits on a shared canvas, either through the hosted MCP server or the REST fallback.
Works with Claude Code, Claude Desktop, Cursor, OpenCode / OpenAI Codex, Aider (with MCP plugin), any other MCP-speaking client, and Hermes-family agents.
MCP Server
Endpoint: https://cnvs.app/mcp (Streamable HTTP, protocol 2025-06-18, no auth — the board ID is the access key).
Registered in the official MCP Registry as app.cnvs/whiteboard.
Capabilities
- Tools (10):
open_board,get_board,get_preview,add_text,add_link,add_image,draw_stroke,move,erase,wait_for_update. All ten have 1:1 REST mirrors athttps://cnvs.app/api/boards/<id>/…for runtimes that can't speak MCP. - Resources (2):
cnvs://board/{id}/state.json(full snapshot, subscribable) andcnvs://board/{id}/preview.svg(visual render, subscribable). - Subscriptions:
resources/subscribesupported withnotifications/resources/updatedpushed over SSE, debounced ~3 s after activity settles. - Live machine-readable manifests:
/quotas.json,/openapi.json,/llms.txt,/.well-known/mcp.json,/.well-known/mcp/server.json.
Installation
Claude Desktop / Cursor / any MCP client
One-line config — add this to your client's mcpServers object:
{
"mcpServers": {
"cnvs": {
"type": "http",
"url": "https://cnvs.app/mcp"
}
}
}
Claude Code CLI
claude mcp add --transport http cnvs https://cnvs.app/mcp
REST-only (no MCP client)
# Create a board
curl -X POST https://cnvs.app/api/boards
# Add text
curl -X POST https://cnvs.app/api/boards/<id>/texts \
-H 'Content-Type: application/json' \
-d '{"x":100,"y":200,"content":"# Hello","author":"ai:myagent"}'
# Long-poll for live changes
curl "https://cnvs.app/api/boards/<id>/wait?timeout_ms=25000"
Full REST reference: /llms.txt, /openapi.json.
Skills included
Two related Agent Skills live in this repo, published under the agentskills.io open standard so they work in any compatible runtime. Install them into ~/.claude/skills/ to teach the agent how to use the MCP server well (preview-before-JSON, REST-over-MCP for writes, author-tag conventions, subscription-then-react loop).
cnvs-whiteboard/ — PRIMARY
Teaches an AI agent how to collaborate on a cnvs.app board in real time:
- Read the shared canvas state
- Draw / diagram / flowchart / annotate — add, update, move, and delete text, links, sticky notes, strokes, images, and Mermaid diagrams (flowcharts, sequence / class / ER diagrams, mind maps, gantt charts, concept maps)
- Render the SVG preview when the board contains drawings
- Subscribe to live human edits via MCP, react via REST
Activates on any cnvs.app board reference (URL https://cnvs.app/#<id>, cnvs://board/<id>/..., or a bare board ID) or phrases like "collaborate on / draw / diagram / annotate / watch a shared whiteboard or canvas."
mcp-listen/ — GENERIC
Push-to-model pump for any Streamable-HTTP MCP server with subscriptions. Opens a session, subscribes to the given resource URIs, and emits one JSON line per notifications/resources/updated event on stdout — designed to be wrapped by Claude Code's Monitor tool so every server push becomes an in-chat notification (no polling, no log tailing).
Not cnvs-specific. Works against file watchers, remote queues, task runners, anything exposing resources/subscribe over MCP. cnvs-whiteboard delegates its push channel here.
Install the skills
# cnvs-whiteboard (SKILL.md only — no deps)
mkdir -p ~/.claude/skills/cnvs-whiteboard && cd ~/.claude/skills/cnvs-whiteboard
curl -O https://cnvs.app/cnvs-whiteboard/SKILL.md
# mcp-listen (SKILL.md + scripts/ + npm install)
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
Alternatively git clone this repo and cp -r .claude/skills/* ~/.claude/skills/ — the .claude/skills/ directory contains symlinks into cnvs-whiteboard/ and mcp-listen/ for Claude Code's expected layout.
Spec compliance
Both skills follow the agentskills.io spec:
namematches the containing directory namedescriptionunder 1024 characters, imperative phrasing, explicit trigger keywordsscripts/subdirectory for bundled code (mcp-listen)license: MIT,compatibilityfield declared, cross-references in each skill's "Related skills" section to prevent activation overlap
Why two skills
Earlier versions had a single page (/skill-cnvs.md on cnvs.app — now a legacy redirect). Splitting into two coherent units follows the spec's "design coherent units" best practice:
cnvs-whiteboardowns the cnvs.app-specific workflow (read / write / render / gotchas).mcp-listenowns the generic push-to-model pattern (usable against any MCP server).
Cross-references keep them pairing cleanly: cnvs-whiteboard mentions mcp-listen as its delegated push channel; mcp-listen mentions cnvs-whiteboard as the companion for cnvs-specific work. No activation overlap in practice.
Canonical sources
Skills are also served live at:
https://cnvs.app/cnvs-whiteboard/SKILL.mdhttps://cnvs.app/mcp-listen/SKILL.mdhttps://cnvs.app/mcp-listen/scripts/listen.mjshttps://cnvs.app/mcp-listen/package.json
The cnvs.app URLs are the canonical install targets for curl-based installers; this GitHub repo is the reference for aggregators that crawl public sources (skills.sh, etc.) and for users who prefer git clone.
Discovery surfaces
- Official MCP Registry:
app.cnvs/whiteboard— browse - cnvs.app
/.well-known/mcp.json— links both skills - cnvs.app
/.well-known/mcp/server.json— MCP Registry entry with publisher-provided_meta.skills[] - cnvs.app
/llms.txt— LLM-friendly full reference - Community skill registries —
daymade/claude-code-skills,majiayu000/claude-skill-registry(submitted) - Lobehub (used by Hermes agent) — both skills imported; MCP server submitted
License
MIT. See LICENSE.