LabscoMCP early access ↗
nteractMCP SERVER · OFFICIAL PROJECT

Semiotic

Render charts to SVG, get schema-checked props, and have the right chart type recommended for your data — all as tool calls.

by nteract ↗Diagrams & Charts✓ Official

LABSCO SUMMARY

Render evidence is the part other chart tools do not give you.

An SVG that renders is not the same as a chart that drew your data. Getting mark counts, resolved axis domains and an empty flag back with the image means an agent can tell an empty chart from a working one without a human looking at it. The recommendation tools work the other way round — hand over sample rows and get ranked chart types with reasons, caveats and ready-to-use props.

What it is

The MCP server that ships with Semiotic, a React data-visualisation library. It exists so an AI assistant writes chart code that works the first time: schemas are machine-readable, rendering happens server-side, and bad configurations come back with diagnostics rather than a blank canvas.

What you get

  • A chart rendered to static SVG, answered with a render-evidence block — mark counts by scene type, resolved axis domains, an empty flag, annotation count and accessible name — so the agent can confirm data marks actually drew — renderChart
  • The prop schema for one component, or the whole schema-backed catalogue, with renderable components marked — getSchema
  • Chart recommendations from sample rows or from capabilities, plus stream-oriented, dashboard and audience-literacy variants — suggestChart, suggestCharts, suggestStreamCharts, suggestDashboard, suggestStretchCharts
  • Configuration checked for empty data, bad dimensions, missing accessors and wrong data shape, returning a readable report with fixes — diagnoseConfig
  • A requested chart checked against the dataset with ranked alternatives when it does not fit — repairChartConfig
  • A statistical summary and chart-aware context for answering questions about a chart — interrogateChart
  • Theme presets applied, and a pre-filled GitHub issue URL generated — applyTheme, reportIssue
  • A ChatGPT Apps widget with fit, zoom, hover and render-evidence controls — renderInteractiveChart
  • Resources to read directly, including semiotic://schema, semiotic://schema/{component}, semiotic://behavior-contracts, semiotic://system-prompt and semiotic://examples, plus the build-semiotic-chart and debug-semiotic-chart prompts

Requirements

No API keys and no authentication. The README runs it under the name semiotic-mcp, which npm does not have; the published package is semiotic 3.9.1. It runs locally over stdio, and HTTP mode is --http --port 3001, bound to 127.0.0.1 unless you deliberately change the host; since 3.7.2 it is stateless, so it autoscales without sticky sessions. A Cloud Run deployment wrapper is included, with MCP_ALLOWED_HOSTS for host-header allowlisting.

Setup effort

One command — npm install semiotic