JSON Canvas MCP Server
A server for creating, modifying, validating, and exporting JSON Canvas files, a format for infinite canvas data.
JSON Canvas MCP Server
A Model Context Protocol (MCP) server implementation that provides tools for working with JSON Canvas files according to the official specification. This server enables creating, modifying, and validating infinite canvas data structures.
Overview
The JSON Canvas MCP server provides a complete implementation of the JSON Canvas 1.0 specification, enabling:
- Creation and manipulation of infinite canvas data
- Support for all node types (text, file, link, group)
- Edge connections with styling and labels
- Validation against the specification
- Configurable output paths
Components
Resources
The server exposes the following resources:
canvas://schema: JSON Schema for validating canvas filescanvas://examples: Example canvas files demonstrating different featurescanvas://templates: Templates for creating new canvases
Tools
Node Operations
-
create_node
- Create a new node of any supported type
- Input:
type(string): Node type ("text", "file", "link", "group")properties(object): Node-specific properties- Common:
id,x,y,width,height,color - Type-specific:
text,file,url, etc.
- Common:
- Returns: Created node object
-
update_node
- Update an existing node's properties
- Input:
id(string): Node ID to updateproperties(object): Properties to update
- Returns: Updated node object
-
delete_node
- Remove a node and its connected edges
- Input:
id(string): Node ID to delete
- Returns: Success confirmation
Edge Operations
-
create_edge
- Create a new edge between nodes
- Input:
id(string): Unique edge identifierfromNode(string): Source node IDtoNode(string): Target node IDfromSide(optional string): Start side ("top", "right", "bottom", "left")toSide(optional string): End sidecolor(optional string): Edge colorlabel(optional string): Edge label
- Returns: Created edge object
-
update_edge
- Update an existing edge's properties
- Input:
id(string): Edge ID to updateproperties(object): Properties to update
- Returns: Updated edge object
-
delete_edge
- Remove an edge
- Input:
id(string): Edge ID to delete
- Returns: Success confirmation
Canvas Operations
-
validate_canvas
- Validate a canvas against the specification
- Input:
canvas(object): Canvas data to validate
- Returns: Validation results with any errors
-
export_canvas
- Export canvas to different formats
- Input:
format(string): Target format ("json", "svg", "png")canvas(object): Canvas data to export
- Returns: Exported canvas in requested format
Usage with Claude Desktop
Docker
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"jsoncanvas": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"canvas-data:/data",
"mcp/jsoncanvas"
],
"env": {
"OUTPUT_PATH": "/data/output"
}
}
}
}
UV
{
"mcpServers": {
"jsoncanvas": {
"command": "uv",
"args": [
"--directory",
"/path/to/jsoncanvas",
"run",
"mcp-server-jsoncanvas"
],
"env": {
"OUTPUT_PATH": "./output"
}
}
}
}
Configuration
The server can be configured using environment variables:
OUTPUT_PATH: Directory where canvas files will be saved (default: "./output")FORMAT: Default output format for canvas files (default: "json")
Building
Docker Build
docker build -t mcp/jsoncanvas .
Local Build
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create virtual environment and install dependencies
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -e .
# Run tests
pytest
Example Usage
Creating a Canvas
from jsoncanvas import Canvas, TextNode, Edge
# Create nodes
title = TextNode(
id="title",
x=100,
y=100,
width=400,
height=100,
text="# Hello Canvas\n\nThis is a demonstration.",
color="#4285F4"
)
info = TextNode(
id="info",
x=600,
y=100,
width=300,
height=100,
text="More information here",
color="2" # Using preset color
)
# Create canvas
canvas = Canvas()
canvas.add_node(title)
canvas.add_node(info)
# Connect nodes
edge = Edge(
id="edge1",
from_node="title",
to_node="info",
from_side="right",
to_side="left",
label="Connection"
)
canvas.add_edge(edge)
# Save canvas
canvas.save("example.canvas")
License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
関連サーバー
Kone.vc
スポンサーMonetize your AI agent with contextual product recommendations
MediaWiki MCP Server
Connect AI assistants to any MediaWiki wiki (Wikipedia, Fandom, corporate wikis) with 33+ tools for search, read, edit, and Markdown conversion.
Deck Builder MCP
Create and manipulate PowerPoint presentations programmatically using JSON or Markdown.
mpesa-mcp
MCP server for M-Pesa (Safaricom Daraja) and Africa's Talking APIs. Gives AI coding assistants — Claude Code, Cursor, GitHub Copilot — direct access to East African payment and SMS infrastructure from a single server. What it does: STK Push payments via Safaricom Daraja (triggers M-Pesa prompt on user's phone) Transaction status queries SMS to 20+ African telecom networks via Africa's Talking Airtime top-up across East and West Africa Safety: All 5 tools are annotated per MCP 2025-03-26 spec — payment and SMS tools declare destructiveHint: true, so Claude Desktop and other clients show confirmation dialogs before executing. Query tools declare readOnlyHint: true for auto-approval. Install: pip install mpesa-mcp Who it's for: Developers building AI agents for East African markets. M-Pesa handles ~$50B/year in transactions and reaches 50M+ users. Africa's Talking reaches 300M+ phones across 20+ telecoms.
Qasper
Qasper gives AI agents the tools to discover local service businesses, check availability, and book appointments in real time.
Headlesshost MCP
Agentic first headless CMS
MCP Trello
A server for interacting with Trello boards, handling API integration, rate limiting, and type safety.
PowerPoint
Create PowerPoint presentations with AI-generated images using the TogetherAI API.
Notion
Interact with Notion's API to read, create, and modify content using natural language.
FireHydrant
An MCP server for interacting with the FireHydrant incident management platform API.
MCP Data Analizer
Analyze and visualize data from .xlsx and .csv files using matplotlib and plotly.