@dontdrunk/cblink-canvas-mcp
v0.2.0
Published
CBLink canvas MCP server (stdio) — install via npx, no native binary
Maintainers
Readme
@dontdrunk/cblink-canvas-mcp
Pure Node.js / TypeScript stdio MCP for ChainBorder Link infinite canvas. No native EXE — npx runs this package directly.
Register MCP (recommended)
Add to your Agent/IDE mcp.json (host-specific path):
{
"mcpServers": {
"cblink-canvas": {
"command": "npx",
"args": ["-y", "@dontdrunk/cblink-canvas-mcp@latest"]
}
}
}Call cblink_ensure_ready → when need_login, open the cloud open_url / connect_url, verify user_code, click 连接此 Agent → cblink_wait_for_login.
CLI
npx -y @dontdrunk/cblink-canvas-mcp@latest # start MCP (stdio)
npx -y @dontdrunk/cblink-canvas-mcp help
npx -y @dontdrunk/cblink-canvas-mcp status # session + installed vs latest
npx -y @dontdrunk/cblink-canvas-mcp version # installed vs npm latest
npx -y @dontdrunk/cblink-canvas-mcp install # prints mcp.json example (no EXE)
npx -y @dontdrunk/cblink-canvas-mcp uninstall [--purge-session]install no longer downloads a binary — the npm package is the MCP server.
version / status report installed_version, latest_version, and update_available. When using @latest in mcp.json, restart the MCP host (or npx clear-npx-cache) to pick up a new release.
Session
- Path:
~/.cblink/cblink-canvas-mcp/session.json - Default models:
~/.cblink/cblink-canvas-mcp/default-models.json(image + video each; set once viacblink_set_model) - Override:
CBLINK_MCP_DATA_DIR - Self-host/dev web origin override:
CBLINK_PUBLIC_ORIGIN - After connect, MCP stores a long-lived
agent_token(~90 days), independent of the browser Supabaserefresh_token - Authorization uses cloud pairing; the browser never connects to localhost or receives the candidate token
- Overnight / Agent restart: no reconnect needed until the device token expires, is revoked, or the machine changes
Runtime flow
cblink_ensure_ready→ ifneed_login, creates or reuses a cloud pairing and returnsopen_url+user_codeimmediately- Open that URL, confirm the matching code, approve →
cblink_wait_for_loginactivates the local candidate token - If
needs_default_model.image|video→cblink_list_modelsonce → user picks →cblink_set_model(persists). Otherwise skip. cblink_create_project→cblink_upload_media→cblink_generate_*(uses saved defaults) →cblink_wait_tasks
Tools
| Tool | Purpose |
| --- | --- |
| cblink_ensure_ready | Login/session check (non-blocking); includes default_models / needs_default_model |
| cblink_wait_for_login | Poll cloud pairing, verify approval, then persist the activated token |
| cblink_check_updates | MCP + skill pack vs online latest; skill download_url → /skills/cblink-canvas-latest.zip |
| cblink_list_models | List models — only when no default yet or user wants to change default |
| cblink_set_model | Save lasting default image/video model to local JSON |
| cblink_create_project | New canvas project + workspace_url |
| cblink_upload_media | Local path or URL → user OSS public_url |
| cblink_generate_image | Submit image task (wait=true rejected; then cblink_wait_tasks) |
| cblink_generate_video | Submit video task (wait=true rejected; then cblink_wait_tasks) |
| cblink_wait_tasks | Poll until done; updates flow document |
| cblink_get_task | Single task (debug) |
| cblink_list_tasks | List project tasks (use before retries) |
Develop
cd packages/cblink-canvas-mcp-npm
npm install
npm run build
node dist/cli.js help
node dist/cli.js # MCP stdio