45+ interactive charts, dashboards, flowcharts, and KPIs inside any AI conversation
io.github.KyuRish/mcp-dashboards — Model Context Protocol (MCP) Server
The MCP server io.github.KyuRish/mcp-dashboards adds 45+ interactive charts, dashboards, flowcharts, and KPIs inside any AI conversation. It is positioned for data visualization workflows, including real-time, themeable charting, and interactive exports.
🛠️ Key Features
45+ interactive charts, dashboards, flowcharts, and KPIs
Use in any AI conversation
Data visualization with interactive elements
Theme support (themes)
🚀 Use Cases
Visualize data within an AI chat
Present KPI-style summaries as interactive components
MCP Dashboards demo Click any thumbnail to see full size
The problem
We use AI for everything - analysis, reports, strategy. But when it comes to actually seeing the story in your data, you're stuck copying numbers into a spreadsheet and building charts yourself. The conversation has the insight. The visualization is somewhere else.
The solution
MCP Dashboards renders interactive charts, dashboards, and KPI widgets directly inside your AI conversation. 32 chart tools covering 45+ chart subtypes (bar has stacked/drilldown, hero has 11 variants, flowchart has 6 node kinds + 5 edge styles, etc.), 21 themes, 4 visual discovery catalogs, live polling, PNG/PPT/A4 export - all from a single MCP server. No browser tabs, no copy-paste, no context switching.
Works in
Client
Interactive in-chat rendering
How
Claude Desktop
Yes (MCP Apps)
stdio config below
claude.ai (web)
Yes (MCP Apps)
remote connector
ChatGPT
Yes (MCP Apps)
remote server via Developer mode (Settings → Apps → Advanced)
VS Code GitHub Copilot
Yes (MCP Apps)
stdio config
Goose / Postman / MCPJam
Yes (MCP Apps)
stdio or remote
Claude Code (CLI)
Tools + browser preview fallback
claude mcp add below; charts open in a local browser tab
ChatGPT and claude.ai need a remotely hosted endpoint (Streamable HTTP mode below); the desktop clients spawn the server locally.
IMPORTANT
The only official npm package is mcp-dashboards, published from this repository. Similarly named packages are not ours: mcp-dashboards-shared was malware (see OSSF advisory MAL-2026-4296, removed by npm security in May 2026). Install only mcp-dashboards.
claude mcp add dashboard -- npx -y mcp-dashboards --stdio
Remote (Streamable HTTP)
bash
npx mcp-dashboards
# Server starts on http://127.0.0.1:3001/mcp
Bound to localhost by default. See Configuration if you need to expose it on your network or allow browser access from a non-localhost origin.
Supported clients
Works in any MCP Apps-compatible client: Claude Desktop, Claude Web, VS Code (GitHub Copilot), Goose, Postman, MCPJam. ChatGPT support is rolling out.
Just ask
No API to learn. Describe what you want in plain English:
"Compare Q1 vs Q2 revenue by region as a bar chart"
"Show my portfolio allocation as a donut chart with the boardroom theme"
"Build a dashboard with monthly sales KPIs and a trend line"
"Visualize website traffic by country on a world map"
"Track Bitcoin price live, updating every 30 seconds"
"Show the conversion funnel from signup to purchase"
"Rank the team by performance using a radar chart"
"Diagram my multi-agent pipeline as a flowchart and let me step through it"
The AI picks the right tool, formats your data, and renders the chart inline. Click any data point to ask follow-up questions.
Don't know where to start? Ask "show me the catalog" - opens a master dashboard with one live visual tile per customization dimension (a real bar chart for charts, a pie for themes, a progress ring for hero variants, a neon-glowing card for effects). Click any tile, hit Ask, and you'll drill into that sub-catalog.
Interactive charts, not images
Every chart is interactive HTML rendered directly in your conversation:
Explore in-chat - hover tooltips, click-to-select (feeds back to the AI), drill-down with breadcrumbs, scroll-zoom up to 12x on maps and heatmaps
Editable flowcharts - drag nodes, multi-select, rename via right-click, minimap + node list to navigate, step-through playback of the flow, then sync your layout back to the AI to save it
Live polling - real-time charts that auto-update from any API on a timer
Don't know where to start. Click any tile, hit Ask, drill in.
render_chart_catalog
All 32 chart types with mini previews
Looking for the right chart for your data
render_theme_catalog
All 21 themes with color/typography/effects
Picking a theme
render_hero_catalog
All 11 hero metric variants
Picking a KPI widget style
render_effects_catalog
All 5 effect presets, each applied to a real card
Picking an animation/glow style
Typography is still configurable on every chart via typography=<name> (8 options listed under Themes) - it just doesn't have its own catalog because all 8 options were visually identical without per-card font loading, which wasn't worth the build for one preview tool.
Then ask: "Monitor my portfolio total and P/L live" - the AI uses render_live_chart with pollArgs: { preset: "t212_cash" }.
Naming:POLL_PRESET_<NAME>_URL and POLL_PRESET_<NAME>_HEADERS (JSON object).
Public URLs (no auth needed)
For public APIs, use the URL directly:
"Show me Bitcoin price updating every 30 seconds" - uses pollArgs: { url: "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd" }.
How It Works
Built on MCP Apps. You ask the AI to visualize data, it calls the right tool, and the chart renders inline in your conversation. Self-contained - zero CDN, zero external requests.
MCP Apps supported (inline rendering): Claude Desktop, VS Code Insiders + MCP Apps extension, Goose, Postman.
No MCP Apps support? No problem. Every chart response also includes a clickable link to the same interactive chart in your browser:
http://localhost:PORT/chart/{id} - the clickable link in chat. Backed by a tiny same-machine HTTP server bound to 127.0.0.1, lazy-started on the first preview request.
file:///.../chart-{id}.html - the persistent shareable artifact. Same HTML bytes, written to disk so you can email, archive, or open it after the server has shut down.
Why both: Claude Code (VS Code) strips file://, vscode://, and command:// URL schemes from chat markdown, so only http:// produces a working clickable link. The file:// path is provided for sharing and offline viewing. Tool annotations (readOnlyHint, idempotentHint, openWorldHint) help clients reason about tool behavior.
Configuration
All optional. Defaults are safe - set these only if you need to override.
Env var
Default
What it does
MCP_DASHBOARDS_RETAIN_DAYS
7
How long to keep chart preview HTML files on disk. 0 disables auto-cleanup.
MCP_DASHBOARDS_DISABLE_PREVIEW
unset
Kill switch - no HTML files written, no preview server started, no preview links. Inline rendering still works in MCP Apps clients.
MCP_HTTP_BIND_HOST
127.0.0.1
HTTP-transport bind host. Stays on localhost by default. Set to 0.0.0.0 only if you trust your network.
MCP_CORS_ALLOWED_ORIGINS
localhost only
Comma-separated origins allowed to call the HTTP endpoint from a browser. Set this to add a non-localhost origin (e.g. https://your-app.com).
MCP_URL_ALLOWLIST
empty
Comma-separated hostnames that bypass the SSRF guard for render_from_url / poll_http. Use only for internal endpoints you fully trust.
MCP_OUTBOUND_RATE_PER_SEC
10
Per-host throttle for outbound HTTP calls.
MCP_OUTBOUND_BURST
20
How many initial requests can fire immediately before the rate kicks in.
POLL_PRESET_<NAME>_URL
-
Server-side preset URL for live polling. See Live Polling.
POLL_PRESET_<NAME>_HEADERS
-
Auth headers (JSON object) for the matching preset URL.
What's on disk
Chart HTML files are written to <system temp>/mcp-dashboards/ and auto-deleted after 7 days. The chart's built-in download button (PNG / PPT / A4) is the recommended way to save anything permanently.
Ask your AI to "list chart files" or "delete chart files older than 1 day" anytime - invokes list_chart_files / delete_chart_files.
Requirements: Node.js 18+.
Contributing
bash
git clone https://github.com/KyuRish/mcp-dashboards.git
cd mcp-dashboards
npm install
npm run build
npm run serve # http://localhost:3001
npm run dev # watch mode
All processing happens locally. No data is collected, transmitted, or stored externally.
External calls only happen when you explicitly ask - render_from_url and poll_http need a URL or preset you provide. Both refuse to fetch private, loopback, or link-local addresses (your 192.168.* network, AWS metadata at 169.254.169.254, etc.) so a prompt-injected AI can't quietly reach internal services. They also throttle per hostname so a runaway loop won't get your IP banned from a real API.
Credentials in env var presets never leave your machine. The browser preview server and the optional HTTP transport both bind to 127.0.0.1 by default and are not reachable from other devices. Chart HTML files live in your system temp folder and auto-delete after 7 days. See Configuration to change any of this.
License
FSL-1.1-MIT - Free to use for any purpose except building a competing commercial product. Each version converts to MIT two years after release. For commercial licensing, contact contact@kyuish.com.
Third-party software
The bundled UI artifact (dist/mcp-app.html) embeds open-source libraries from the Chart.js, html2canvas-pro, Luxon, TopoJSON, and Dagre projects, distributed under MIT or ISC licenses. Full attribution and license texts are reproduced in THIRD_PARTY_LICENSES.md.