A side-by-side look at the Maidr and Semiotic MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Maidr for data visualization work as a local process; choose Semiotic for data visualization as a local process. You can also run both side by side in one mcpServers block.
show_chart, update_chart, maidr_list_charts.renderChart, renderInteractiveChart, getSchema.Rows where the two servers differ are marked.
| Spec | M Maidr | |
|---|---|---|
| Category | Data Visualization | Data Visualization |
| Quality signal | 53/100 · Good | 67/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | No auth required | No auth required |
| Pricing | Free | Free |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 1 | 2,716 |
| Directory activity | 0 views 0 installs 0 upvotes | 5 views 0 installs 0 upvotes |
| Tools | 7 | 18 |
| Full listing | View Maidr | View Semiotic |
show_chartDraws the chart and shows it. Returns the `viewId` the other tools take.update_chartDraws a new chart and puts it in place of the one in that `viewId`'s view. Adds no view. A reader in the chart stays in it, on the new chart; anyone else keeps their focus. Both are told it changed.maidr_list_chartsReturns the chart's layers, point counts, and, while the reader is in the chart, where they are, live. Silent.maidr_get_layer_dataReturns a page of a layer's points, each with the `target` that `maidr_navigate` takes. Silent.maidr_navigateMoves the reader to a point and announces it. With `focus: true`, for a reader who asked to be taken there, maidr first moves their keyboard focus into the chart, and answers `focused: true`, or `focused: false` when it could not, leaving the move to wait for them.maidr_list_commandsReturns the reader's commands, each with its id, title, keys, and whether the model can run it, and the reader's current modes (text, sound, braille, autoplay and more). Silent.maidr_run_commandRuns one of the reader's commands, such as `toggle_braille`, `autoplay_forward` or `go_to_max_value`, as if they had pressed its keys, and announces the result. Commands that open a dialog or text field are the reader's own. With `focus: true`, for a reader who asked for it now, maidr first moves t…renderChartRender a Semiotic chart to static SVG. Supports the components returned by `getSchema` that are marked `[renderable]`. Pass `{ component: "LineChart", props: { data: [...], xAccessor: "x", yAccessor: "y" } }`. Returns SVG string plus a "Render evidence" JSON block (mark counts by scene type, resolv…renderInteractiveChartRender a static-data chart as a ChatGPT Apps widget. Uses the same Semiotic server render path as `renderChart`, then hydrates an iframe UI with fit, zoom, data, hover, and render-evidence controls.getSchemaReturn the prop schema for a specific component. Pass `{ component: "LineChart" }` to get its props, or omit `component` to list the complete schema-backed catalog. Components marked `[renderable]` are available through `renderChart`; realtime charts require a browser/live environment.suggestChartSample-row recommender. Pass `{ data: [{...}, ...] }` with 1–5 sample objects plus optional broad intent/capability filters.suggestChartsCapability-based recommender for bounded row data. Returns ranked chart suggestions with scores, reasons, caveats, import paths, and ready-to-use props.suggestStreamChartsRecommend streaming charts from a schema (shape, key, throughput). Returns `{ suggestions, excluded, stretchSuggestions }`.suggestStreamDashboardCompose a multi-panel dashboard from stream schemas and an audience layout policy.suggestDashboardBuild a multi-panel dashboard suggestion that covers distinct analytical intents.suggestStretchChartsRecommend audience-literacy stretch picks from an `AudienceProfile`.repairChartConfigCheck whether a requested chart fits a dataset and return ranked alternatives when it does not.interrogateChartReturn a statistical summary and chart-aware context for answering natural-language questions with optional annotations.diagnoseConfigCheck a chart configuration for common problems — empty data, bad dimensions, missing accessors, wrong data shape, and more. Returns a human-readable diagnostic report with actionable fixes.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"maidr": {
"command": "uvx",
"args": [
"maidr-mcp"
]
}
}
}
{
"mcpServers": {
"nteract-semiotic": {
"command": "npx",
"args": [
"-y",
"semiotic-mcp"
]
}
}
}