# maidr [Health: Active]

**Category:** 📊 Data Visualization  
**Repository:** https://github.com/xability/maidr-mcp  
**GitHub Stars:** 1  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/maidr

## Description
Accessible maidr charts in ChatGPT and Claude, explored by sound, braille and screen reader

## Tools
Capabilities this server exposes over MCP:

- **show_chart** — Draws the chart and shows it. Returns the `viewId` the other tools take.
- **update_chart** — Draws 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_charts** — Returns the chart's layers, point counts, and, while the reader is in the chart, where they are, live. Silent.
- **maidr_get_layer_data** — Returns a page of a layer's points, each with the `target` that `maidr_navigate` takes. Silent.
- **maidr_navigate** — Moves 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_commands** — Returns 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_command** — Runs 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…

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "maidr": {
    "command": "uvx",
    "args": ["maidr-mcp"]
  }
}
```

## Documentation

## What the maidr MCP server does

The maidr MCP server brings accessible charts into ChatGPT and Claude conversations through MCP Apps. A model supplies chart data to `show_chart`, and the resulting view exposes the chart to readers who use keyboard navigation, screen readers, sound, or braille. The model can also update an existing view without creating another one.

The server is intended for conversations where a reader needs more than a static image. It can identify layers and point counts, inspect paged layer data, move the reader to navigable points, and operate chart commands such as changing braille mode, starting autoplay, or moving to a maximum value.

## How it works

`show_chart` renders the supplied data on the server with matplotlib and py-maidr. The chart view receives SVG through the tool result metadata, keeping that SVG out of the model’s context. The view loads pinned versions of maidr.js and the MCP Apps SDK from jsDelivr, then relays model requests to the chart’s own maidr tools.

As the reader moves through a chart, the view sends its current position back with `ui/update-model-context`. The model can therefore answer questions about the reader’s location without always making another tool call. A long-poll relay normally delivers requests immediately; fallback short polling is used when a host does not keep the long request open.

When `update_chart` replaces a chart, the reader remains in the chart if they were already there, while other focus remains unchanged. Pending navigation or command requests are preserved as waiting status where appropriate, and a remounted view can retrieve the latest chart.

## Tools and capabilities

The model-facing tools include:

- `show_chart` to create a chart and return its `viewId`.
- `update_chart` to replace the chart associated with a view.
- `maidr_list_charts` to inspect layers, point counts, and live reader position.
- `maidr_get_layer_data` to retrieve pages of points and navigation targets.
- `maidr_navigate` to move to a point and announce it, optionally requesting focus.
- `maidr_list_commands` to inspect available commands, keys, and reader modes.
- `maidr_run_command` to execute a supported command and announce its result.

Supported chart inputs include bar, line, step, scatter, histogram, box, violin, heatmap, pie, and candlestick charts. Navigation is available for bar, line, step, scatter points, histogram, and heatmap layers; box, violin, pie, and candlestick layers do not provide navigation targets according to the supplied support table.

## Limitations and notes

The project is marked experimental. Its end-to-end flow has been checked in the MCP Apps SDK reference host, but not yet in claude.ai or ChatGPT. The chart view depends on loading maidr.js and the MCP Apps SDK from jsDelivr.

Focus handling is deliberate: the view does not move keyboard focus merely because the reader left the chart. A model should request focus when the reader explicitly asks to be taken somewhere or have an action performed immediately. Otherwise, navigation and commands can wait until the reader enters the chart. Commands that open dialogs or text fields remain the reader’s responsibility.

_Full upstream README: https://allmcps.com/mcp/maidr/readme_

