Servidor MCP de lienzo JSON
Una implementación de servidor del Protocolo de Contexto de Modelo (MCP) que proporciona herramientas para trabajar con archivos JSON Canvas según la especificación oficial . Este servidor permite crear, modificar y validar estructuras de datos Canvas infinitas.
Descripción general
El servidor JSON Canvas MCP proporciona una implementación completa de la especificación JSON Canvas 1.0, lo que permite:
Creación y manipulación de datos de lienzo infinitos
Soporte para todos los tipos de nodos (texto, archivo, enlace, grupo)
Conexiones de borde con estilo y etiquetas
Validación contra la especificación
Rutas de salida configurables
Related MCP server: mcp-server-code-assist
Componentes
Recursos
El servidor expone los siguientes recursos:
canvas://schema: Esquema JSON para validar archivos de lienzocanvas://examples: Archivos de lienzo de ejemplo que demuestran diferentes funcionescanvas://templates: Plantillas para crear nuevos lienzos
Herramientas
Operaciones de nodo
crear_nodo
Crea un nuevo nodo de cualquier tipo compatible
Aporte:
type(cadena): Tipo de nodo ("texto", "archivo", "enlace", "grupo")properties(objeto): Propiedades específicas del nodoComún:
id,x,y,width,height,colorEspecífico del tipo:
text,file,url, etc.
Devuelve: objeto de nodo creado
nodo_de_actualización
Actualizar las propiedades de un nodo existente
Aporte:
id(cadena): ID del nodo a actualizarproperties(objeto): Propiedades a actualizar
Devuelve: objeto de nodo actualizado
eliminar_nodo
Eliminar un nodo y sus bordes conectados
Aporte:
id(cadena): ID del nodo a eliminar
Devoluciones: Confirmación de éxito
Operaciones de borde
crear_borde
Crear un nuevo borde entre nodos
Aporte:
id(cadena): identificador de borde únicofromNode(cadena): ID del nodo de origentoNode(cadena): ID del nodo de destinofromSide(cadena opcional): Lado de inicio ("arriba", "derecha", "abajo", "izquierda")toSide(cadena opcional): lado finalcolor(cadena opcional): color del bordelabel(cadena opcional): etiqueta de borde
Devuelve: objeto de borde creado
actualizar_borde
Actualizar las propiedades de un borde existente
Aporte:
id(cadena): ID de borde que se actualizaráproperties(objeto): Propiedades a actualizar
Devoluciones: objeto de borde actualizado
eliminar_borde
Quitar un borde
Aporte:
id(cadena): ID del borde que se eliminará
Devoluciones: Confirmación de éxito
Operaciones de Canvas
validar_lienzo
Validar un lienzo contra la especificación
Aporte:
canvas(objeto): Datos del canvas a validar
Devuelve: Resultados de validación con cualquier error
lienzo_de_exportación
Exportar lienzo a diferentes formatos
Aporte:
format(cadena): Formato de destino ("json", "svg", "png")canvas(objeto): Datos de Canvas para exportar
Devoluciones: Lienzo exportado en el formato solicitado
Uso con Claude Desktop
Estibador
Agregue esto a su 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"
}
}
}
}Configuración
El servidor se puede configurar mediante variables de entorno:
OUTPUT_PATH: Directorio donde se guardarán los archivos de lienzo (predeterminado: "./output")FORMAT: Formato de salida predeterminado para archivos de lienzo (predeterminado: "json")
Edificio
Compilación de Docker
docker build -t mcp/jsoncanvas .Construcción local
# 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
pytestEjemplo de uso
Creando un lienzo
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")Licencia
Este servidor MCP cuenta con la licencia MIT. Esto significa que puede usar, modificar y distribuir el software libremente, sujeto a los términos y condiciones de la licencia MIT. Para más detalles, consulte el archivo de LICENCIA en el repositorio del proyecto.