ChartPane
Renderiza gráficos interactivos de Chart.js y pan
Documentación
ChartPane
Aplicación MCP que renderiza gráficos interactivos de Chart.js en línea dentro de la interfaz de Claude. Funciona con Claude Desktop, ChatGPT, VS Code, Cursor y cualquier cliente que admita aplicaciones MCP.
Instancia en vivo: mcp.chartpane.com
Características
- 9 tipos de gráficos: barras, líneas, áreas, circular, dona, polarArea, burbuja, dispersión, radar
- Variantes de gráficos de barras apiladas y horizontales
- Cuadrículas de paneles con múltiples gráficos (hasta 4 columnas)
- Colores personalizados o paleta automática de 12 colores
- Renderizado del lado del cliente: los datos de los gráficos nunca se almacenan en el servidor
- Funciona con cualquier cliente compatible con MCP (Claude Desktop, ChatGPT, VS Code, Cursor)
Herramientas
render_chart— Renderiza un solo gráfico (barras, líneas, áreas, circular, dona, polarArea, burbuja, dispersión, radar, apilado)render_dashboard— Renderiza un diseño de cuadrícula con múltiples gráficos
Inicio rápido
Agrega ChartPane a Claude Desktop mediante Configuración > Conectores > Agregar conector personalizado:
https://mcp.chartpane.com/mcp
O usa mcp-remote (requiere Node.js):
{
"mcpServers": {
"chartpane": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.chartpane.com/mcp"]
}
}
}
Ejemplos de uso
1. Gráfico de barras
Solicitud: "Crea un gráfico de barras de ingresos trimestrales: Q1 $50k, Q2 $80k, Q3 $120k, Q4 $95k"
Claude llama a render_chart con:
{
"type": "bar",
"title": "Quarterly Revenue",
"data": {
"labels": ["Q1", "Q2", "Q3", "Q4"],
"datasets": [{ "label": "Revenue ($k)", "data": [50, 80, 120, 95] }]
}
}
Un gráfico de barras interactivo se renderiza en línea en la conversación.
2. Gráfico circular
Solicitud: "Muestra la cuota de mercado de navegadores como un gráfico circular: Chrome 65%, Safari 19%, Firefox 8%, Edge 5%, Otros 3%"
Claude llama a render_chart con:
{
"type": "pie",
"title": "Browser Market Share",
"data": {
"labels": ["Chrome", "Safari", "Firefox", "Edge", "Other"],
"datasets": [{ "label": "Share", "data": [65, 19, 8, 5, 3] }]
}
}
Cada segmento recibe un color distintivo de la paleta integrada.
3. Panel con múltiples gráficos
Solicitud: "Crea un panel con usuarios activos mensuales como gráfico de líneas y registros por canal como gráfico de barras"
Claude llama a render_dashboard con:
{
"title": "Growth Dashboard",
"charts": [
{
"type": "line",
"title": "Monthly Active Users",
"data": {
"labels": ["Jan", "Feb", "Mar", "Apr", "May", "Jun"],
"datasets": [{ "label": "MAU", "data": [12000, 15000, 18000, 22000, 28000, 35000] }]
}
},
{
"type": "bar",
"title": "Signups by Channel",
"data": {
"labels": ["Organic", "Referral", "Paid", "Social"],
"datasets": [{ "label": "Signups", "data": [4500, 3200, 2800, 1500] }]
}
}
],
"columns": 2
}
Ambos gráficos se renderizan lado a lado en un diseño de cuadrícula.
Autoalojamiento
ChartPane se ejecuta en Cloudflare Workers.
npm install
cp .dev.vars.example .dev.vars # Configure secrets (optional)
npm run dev # Local dev server (port 8787 + sandbox on 3456)
npm run deploy # Deploy to Cloudflare Workers
Necesitarás crear tu propio espacio de nombres KV y base de datos D1: consulta los comentarios en wrangler.jsonc.
Desarrollo
npm run dev # wrangler dev + sandbox dev server (localhost:3456)
npm run build # Type-check (tsc --noEmit) + bundle UI
npm test # Run all tests (vitest)
npm run test:watch # Watch mode
Arquitectura
Las llamadas a herramientas de Claude fluyen a través de un servidor MCP ligero que valida la entrada y devuelve structuredContent. La interfaz del lado del navegador transforma la entrada en configuraciones de Chart.js y la renderiza en canvas. Toda la lógica compartida (tipos, validación, colores, configuración) reside en shared/.
Claude tool call → server.ts (validate) → structuredContent
→ mcp-app.ts (browser) → buildChartConfig() → Chart.js canvas
Privacidad
ChartPane registra solo metadatos de solicitudes (tipo de gráfico, título, marca de tiempo). Los valores de los datos de los gráficos nunca se almacenan. Los gráficos se renderizan completamente en el lado del cliente en tu navegador. Política completa: chartpane.com/privacy
Soporte
- Problemas en GitHub: github.com/ahmadnassri/chartpane/issues
- Correo electrónico: support@chartpane.com
Licencia
MIT