mcp-dashboards 1.1.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +97 -8
- package/README.md +193 -157
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp-app.html +806 -146
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1003 -15
- package/dist/server.js.map +1 -1
- package/package.json +33 -9
package/LICENSE
CHANGED
|
@@ -1,13 +1,102 @@
|
|
|
1
|
-
MIT License
|
|
1
|
+
# Functional Source License, Version 1.1, MIT Future License
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Abbreviation
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
FSL-1.1-MIT
|
|
6
|
+
|
|
7
|
+
## Notice
|
|
8
|
+
|
|
9
|
+
Copyright 2026 Rishabh Dogra (KyuRish) <contact@kyuish.com>
|
|
10
|
+
|
|
11
|
+
## Terms and Conditions
|
|
12
|
+
|
|
13
|
+
### Licensor ("We")
|
|
14
|
+
|
|
15
|
+
The party offering the Software under these Terms and Conditions.
|
|
16
|
+
|
|
17
|
+
### The Software
|
|
18
|
+
|
|
19
|
+
The "Software" is each version of the software that we make available under
|
|
20
|
+
these Terms and Conditions, as indicated by our inclusion of these Terms and
|
|
21
|
+
Conditions with the Software.
|
|
22
|
+
|
|
23
|
+
### License Grant
|
|
24
|
+
|
|
25
|
+
Subject to your compliance with this License Grant and the Patents,
|
|
26
|
+
Redistribution and Trademark clauses below, we hereby grant you the right to
|
|
27
|
+
use, copy, modify, create derivative works, publicly perform, publicly display
|
|
28
|
+
and redistribute the Software for any Permitted Purpose identified below.
|
|
29
|
+
|
|
30
|
+
### Permitted Purpose
|
|
31
|
+
|
|
32
|
+
A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
|
|
33
|
+
means making the Software available to others in a commercial product or
|
|
34
|
+
service that:
|
|
35
|
+
|
|
36
|
+
1. substitutes for the Software;
|
|
37
|
+
|
|
38
|
+
2. substitutes for any other product or service we offer using the Software
|
|
39
|
+
that exists as of the date we make the Software available; or
|
|
40
|
+
|
|
41
|
+
3. offers the same or substantially similar functionality as the Software.
|
|
42
|
+
|
|
43
|
+
Permitted Purposes specifically include using the Software:
|
|
44
|
+
|
|
45
|
+
1. for your internal use and access;
|
|
46
|
+
|
|
47
|
+
2. for non-commercial education;
|
|
48
|
+
|
|
49
|
+
3. for non-commercial research; and
|
|
50
|
+
|
|
51
|
+
4. in connection with professional services that you provide to a licensee
|
|
52
|
+
using the Software in accordance with these Terms and Conditions.
|
|
53
|
+
|
|
54
|
+
### Patents
|
|
55
|
+
|
|
56
|
+
To the extent your use for a Permitted Purpose would necessarily infringe our
|
|
57
|
+
patents, the license grant above includes a license under our patents. If you
|
|
58
|
+
make a claim against any party that the Software infringes or contributes to
|
|
59
|
+
the infringement of any patent, then your patent license to the Software ends
|
|
60
|
+
immediately.
|
|
61
|
+
|
|
62
|
+
### Redistribution
|
|
63
|
+
|
|
64
|
+
The Terms and Conditions apply to all copies, modifications and derivatives of
|
|
65
|
+
the Software.
|
|
66
|
+
|
|
67
|
+
If you redistribute any copies, modifications or derivatives of the Software,
|
|
68
|
+
you must include a copy of or a link to these Terms and Conditions and not
|
|
69
|
+
remove any copyright notices provided in or with the Software.
|
|
70
|
+
|
|
71
|
+
### Disclaimer
|
|
72
|
+
|
|
73
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
|
|
74
|
+
IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
|
|
75
|
+
PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
|
|
76
|
+
|
|
77
|
+
IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
|
|
78
|
+
SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
|
|
79
|
+
EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
|
|
80
|
+
|
|
81
|
+
### Trademarks
|
|
82
|
+
|
|
83
|
+
Except for displaying the License Details and identifying us as the origin of
|
|
84
|
+
the Software, you have no right under these Terms and Conditions to use our
|
|
85
|
+
trademarks, trade names, service marks or product names.
|
|
86
|
+
|
|
87
|
+
## Grant of Future License
|
|
88
|
+
|
|
89
|
+
We hereby irrevocably grant you an additional license to use the Software under
|
|
90
|
+
the MIT license that is effective on the second anniversary of the date we make
|
|
91
|
+
the Software available. On or after that date, you may use the Software under
|
|
92
|
+
the MIT license, in which case the following will apply:
|
|
93
|
+
|
|
94
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
95
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
96
|
+
the Software without restriction, including without limitation the rights to
|
|
97
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
98
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
|
99
|
+
so, subject to the following conditions:
|
|
11
100
|
|
|
12
101
|
The above copyright notice and this permission notice shall be included in all
|
|
13
102
|
copies or substantial portions of the Software.
|
package/README.md
CHANGED
|
@@ -1,211 +1,247 @@
|
|
|
1
|
-
# MCP
|
|
1
|
+
# MCP Dashboards
|
|
2
2
|
|
|
3
|
-
mcp-name: io.github.KyuRish/mcp-
|
|
3
|
+
<!-- mcp-name: io.github.KyuRish/mcp-dashboards -->
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
### Your AI can talk about data. Now it can show it.
|
|
6
6
|
|
|
7
|
-
[](LICENSE)
|
|
7
|
+
[](https://www.npmjs.com/package/mcp-dashboards)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
[](https://buymeacoffee.com/kyuish)
|
|
10
|
+
[](https://github.com/sponsors/KyuRish)
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
<p align="center">
|
|
13
|
+
<img src="assets/demo.gif" width="400" alt="MCP Dashboards demo" />
|
|
14
|
+
<br>
|
|
15
|
+
<a href="assets/dashboard-example.png"><img src="assets/dashboard-example.png" width="115" height="220" alt="Infrastructure Command Center dashboard" /></a>
|
|
16
|
+
<a href="assets/chart-catalog.png"><img src="assets/chart-catalog.png" width="115" height="220" alt="Chart Catalog - 45+ chart types" /></a>
|
|
17
|
+
<a href="assets/theme-catalog.png"><img src="assets/theme-catalog.png" width="115" height="220" alt="Theme Catalog - 20 themes" /></a>
|
|
18
|
+
<br><sub>Click any thumbnail to see full size</sub>
|
|
19
|
+
</p>
|
|
11
20
|
|
|
12
|
-
##
|
|
21
|
+
## The problem
|
|
13
22
|
|
|
14
|
-
|
|
15
|
-
- **Bar Charts** - vertical/horizontal, stacked, multi-series support
|
|
16
|
-
- **Line & Area Charts** - smooth curves, gradient fills, time series
|
|
17
|
-
- **Sortable Data Tables** - click-to-sort columns, numeric alignment, striped rows
|
|
18
|
-
- **Full Dashboards** - KPI cards with trend indicators + multiple charts in a responsive grid
|
|
19
|
-
- **Auto-Detect from JSON** - pass any JSON and get the best visualization automatically
|
|
20
|
-
- **Auto Dark/Light Mode** - adapts to your system theme
|
|
21
|
-
- **Fully Self-Contained** - Chart.js bundled inline, zero external requests
|
|
22
|
-
- **Animated** - staggered card entrances, smooth hover effects, loading states
|
|
23
|
+
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.
|
|
23
24
|
|
|
24
|
-
##
|
|
25
|
+
## The solution
|
|
26
|
+
|
|
27
|
+
MCP Dashboards renders interactive charts, dashboards, and KPI widgets directly inside your AI conversation. 45+ chart types, 20 themes, live polling, PNG/PPT/A4 export - all from a single MCP server. No browser tabs, no copy-paste, no context switching.
|
|
28
|
+
|
|
29
|
+
## Quick Start
|
|
25
30
|
|
|
26
31
|
### Claude Desktop
|
|
27
32
|
|
|
28
|
-
Add to your
|
|
33
|
+
Add to your `claude_desktop_config.json`:
|
|
34
|
+
|
|
35
|
+
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
36
|
+
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
29
37
|
|
|
30
38
|
```json
|
|
31
39
|
{
|
|
32
40
|
"mcpServers": {
|
|
33
41
|
"dashboard": {
|
|
34
42
|
"command": "npx",
|
|
35
|
-
"args": ["-y", "mcp-
|
|
43
|
+
"args": ["-y", "mcp-dashboards", "--stdio"]
|
|
36
44
|
}
|
|
37
45
|
}
|
|
38
46
|
}
|
|
39
47
|
```
|
|
40
48
|
|
|
41
|
-
### Claude Code
|
|
49
|
+
### Claude Code / VS Code
|
|
42
50
|
|
|
43
51
|
```bash
|
|
44
|
-
claude mcp add dashboard -- npx -y mcp-
|
|
52
|
+
claude mcp add dashboard -- npx -y mcp-dashboards --stdio
|
|
45
53
|
```
|
|
46
54
|
|
|
47
55
|
### Remote (Streamable HTTP)
|
|
48
56
|
|
|
49
57
|
```bash
|
|
50
|
-
npx mcp-
|
|
58
|
+
npx mcp-dashboards
|
|
51
59
|
# Server starts on http://localhost:3001/mcp
|
|
52
60
|
```
|
|
53
61
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
**
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
**
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
|
104
|
-
|
|
105
|
-
|
|
|
106
|
-
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
62
|
+
### Supported clients
|
|
63
|
+
|
|
64
|
+
Works in any MCP Apps-compatible client: **Claude Desktop**, **Claude Web**, **VS Code** (GitHub Copilot), **Goose**, **Postman**, **MCPJam**. ChatGPT support is rolling out.
|
|
65
|
+
|
|
66
|
+
## Just ask
|
|
67
|
+
|
|
68
|
+
No API to learn. Describe what you want in plain English:
|
|
69
|
+
|
|
70
|
+
- *"Compare Q1 vs Q2 revenue by region as a bar chart"*
|
|
71
|
+
- *"Show my portfolio allocation as a donut chart with the boardroom theme"*
|
|
72
|
+
- *"Build a dashboard with monthly sales KPIs and a trend line"*
|
|
73
|
+
- *"Visualize website traffic by country on a world map"*
|
|
74
|
+
- *"Track Bitcoin price live, updating every 30 seconds"*
|
|
75
|
+
- *"Show the conversion funnel from signup to purchase"*
|
|
76
|
+
- *"Rank the team by performance using a radar chart"*
|
|
77
|
+
|
|
78
|
+
The AI picks the right tool, formats your data, and renders the chart inline. Click any data point to ask follow-up questions.
|
|
79
|
+
|
|
80
|
+
## What makes this different
|
|
81
|
+
|
|
82
|
+
Other MCP chart tools generate static images. MCP Dashboards renders **interactive HTML** inside your conversation.
|
|
83
|
+
|
|
84
|
+
### Explore your data in-chat
|
|
85
|
+
|
|
86
|
+
- **Hover tooltips** on every data point - no guessing values
|
|
87
|
+
- **Click to select** any bar, slice, or point - selections feed back to the AI for follow-up questions
|
|
88
|
+
- **Drill-down** into bar charts with breadcrumb navigation
|
|
89
|
+
- **Zoom & pan** on geo maps, treemaps, and heatmaps - scroll-wheel zoom up to 12x with hi-res re-rendering
|
|
90
|
+
- **Live polling** - real-time charts that auto-update from any API (stock prices, server metrics, crypto)
|
|
91
|
+
- **KPI sparklines** - inline trend mini-charts in dashboard metric cards
|
|
92
|
+
|
|
93
|
+
### Meeting in 5 minutes? Export and go
|
|
94
|
+
|
|
95
|
+
- **PPT slides** - one-click download as a 16:9 title slide or background-ready image
|
|
96
|
+
- **A4 documents** - paginated multi-page export with intelligent page breaks that never cut through a chart
|
|
97
|
+
- **PNG** - per-chart screenshots with title and theme baked in
|
|
98
|
+
- **CSV** - raw data export from any table
|
|
99
|
+
|
|
100
|
+
Ask the AI to build your dashboard. Hit the export dropdown - grab a 16:9 title slide, a background image, or a paginated A4 document. One click, presentation-ready.
|
|
101
|
+
|
|
102
|
+
### 20 themes, 900+ combinations
|
|
103
|
+
|
|
104
|
+
Boardroom gold, neon cyberpunk, forest earth, clinical white. Mix palettes, typography (8 options), and effects (shimmer, neon, glow, glass, lift). Animated gradient titles export correctly to PNG.
|
|
105
|
+
|
|
106
|
+
**45+ chart types across 20 themes = 900+ visual combinations.** Every one of them interactive.
|
|
107
|
+
|
|
108
|
+
<details>
|
|
109
|
+
<summary><strong>All 31 Tools</strong></summary>
|
|
110
|
+
|
|
111
|
+
| Tool | Type | Best For |
|
|
112
|
+
|------|------|----------|
|
|
113
|
+
| `render_pie_chart` | Pie/Donut | Composition - "what makes up the whole?" |
|
|
114
|
+
| `render_bar_chart` | Bar | Comparison - vertical, horizontal, stacked, drill-down |
|
|
115
|
+
| `render_line_chart` | Line/Area | Trends - smooth curves, gradient fills, time series |
|
|
116
|
+
| `render_scatter_chart` | Scatter | Relationships - per-point labels, annotations, quadrants |
|
|
117
|
+
| `render_candlestick_chart` | Candlestick | Finance - OHLC data with volume bars |
|
|
118
|
+
| `render_radar_chart` | Radar | Multi-axis comparison - skills, scores, product attributes |
|
|
119
|
+
| `render_treemap_chart` | Treemap | Hierarchy - nested rectangles sized by value |
|
|
120
|
+
| `render_sankey_chart` | Sankey | Flow - money, users, or resources between stages |
|
|
121
|
+
| `render_wordcloud_chart` | Word Cloud | Frequency - sized words from text analysis |
|
|
122
|
+
| `render_boxplot_chart` | Boxplot/Violin | Distribution - quartiles, outliers, density shapes |
|
|
123
|
+
| `render_live_chart` | Live | Real-time - auto-polls any MCP tool on a timer |
|
|
124
|
+
| `poll_http` | Data proxy | Fetch JSON from any HTTP endpoint - secure presets or public URLs |
|
|
125
|
+
| `render_bullet_chart` | Bullet | KPI vs target - 2-8 zone bands with labels |
|
|
126
|
+
| `render_lollipop_chart` | Lollipop | Ranking - clean dots with optional target markers |
|
|
127
|
+
| `render_dumbbell_chart` | Dumbbell | Gaps - before/after with scale labels and zone bands |
|
|
128
|
+
| `render_variance_chart` | Variance | Budget - actual vs budget, color-coded over/under |
|
|
129
|
+
| `render_funnel_chart` | Funnel | Conversion - staged drop-off with percentages |
|
|
130
|
+
| `render_slope_chart` | Slope | Change - ranking shifts between two periods |
|
|
131
|
+
| `render_waffle_chart` | Waffle | Proportion - 10x10 grid showing composition |
|
|
132
|
+
| `render_sparkline_chart` | Sparkline | Compact trends - mini cards with change indicators |
|
|
133
|
+
| `render_radial_cluster` | Radial | Health check - multi-metric ring gauges with status |
|
|
134
|
+
| `render_waterfall_chart` | Waterfall | Cumulative - cascading bars showing impact |
|
|
135
|
+
| `render_heatmap_chart` | Heatmap | Intensity - 2D grid with color mapping |
|
|
136
|
+
| `render_geo_chart` | Geo/Map | Geography - color-coded countries by value (choropleth) |
|
|
137
|
+
| `render_bubble_map` | Bubble Map | Pin map - sized circles at lat/lng coordinates |
|
|
138
|
+
| `render_timeline_chart` | Timeline | Progress - milestone tracker with status indicators |
|
|
139
|
+
| `render_hero_metric` | Hero | KPI widgets - 11 variants (progress ring, gem, orb, NPS, etc.) |
|
|
140
|
+
| `render_dashboard` | Dashboard | Everything - KPI cards + multiple charts in responsive grid |
|
|
141
|
+
| `render_table` | Table | Data - sortable columns, striped rows, CSV export |
|
|
142
|
+
| `render_from_json` | Auto-detect | Any JSON data - picks the best chart automatically |
|
|
143
|
+
| `render_from_url` | URL fetch | Fetches JSON from a URL and auto-visualizes |
|
|
144
|
+
|
|
145
|
+
</details>
|
|
146
|
+
|
|
147
|
+
<details>
|
|
148
|
+
<summary><strong>Which chart should I use?</strong></summary>
|
|
149
|
+
|
|
150
|
+
| Question | Best Chart | Also Works |
|
|
151
|
+
|----------|-----------|------------|
|
|
152
|
+
| "What makes up the whole?" | Pie/Waffle | Treemap, Stacked bar |
|
|
153
|
+
| "How do values compare?" | Bar | Lollipop, Bullet, Radar |
|
|
154
|
+
| "What's the trend over time?" | Line | Sparkline, Slope |
|
|
155
|
+
| "Are we hitting targets?" | Bullet | Variance, Radial |
|
|
156
|
+
| "Where's the gap?" | Dumbbell | Variance |
|
|
157
|
+
| "How does X relate to Y?" | Scatter | Heatmap |
|
|
158
|
+
| "What's the conversion rate?" | Funnel | Waterfall, Sankey |
|
|
159
|
+
| "What changed between periods?" | Slope | Dumbbell |
|
|
160
|
+
| "What's the financial picture?" | Candlestick | Line |
|
|
161
|
+
| "Show me the KPI" | Hero metric | Dashboard |
|
|
162
|
+
| "What's the distribution?" | Boxplot | Violin (same tool) |
|
|
163
|
+
| "Where does money/traffic flow?" | Sankey | Treemap |
|
|
164
|
+
| "How do options score across axes?" | Radar | Heatmap |
|
|
165
|
+
| "What are the top keywords?" | Word Cloud | Bar, Treemap |
|
|
166
|
+
| "Where are users/sales/revenue?" | Geo map | Bubble map, Heatmap |
|
|
167
|
+
| "Monitor this in real-time" | Live chart | - |
|
|
168
|
+
|
|
169
|
+
</details>
|
|
170
|
+
|
|
171
|
+
## Themes
|
|
172
|
+
|
|
173
|
+
20 built-in themes. Pass `theme` to any tool.
|
|
174
|
+
|
|
175
|
+
| Family | Themes |
|
|
176
|
+
|--------|--------|
|
|
177
|
+
| **Classic** | `boardroom`, `corporate`, `sales-floor`, `golden-treasury`, `clinical`, `startup`, `ops-control`, `tokyo-midnight`, `zen-garden`, `consultant` |
|
|
178
|
+
| **Black/AI** | `black-tron` (cyan neon), `black-elegance` (warm gold), `black-matrix` (green hacker) |
|
|
179
|
+
| **Forest** | `forest-amber` (autumn), `forest-earth` (terracotta) |
|
|
180
|
+
| **Sky** | `sky-light` (airy blue), `sky-ocean` (deep navy), `sky-twilight` (sunset) |
|
|
181
|
+
| **Gray/ML** | `gray-hf` (warm yellow accent), `gray-copilot` (teal on dark) |
|
|
182
|
+
|
|
183
|
+
Mix-and-match with `palette`, `typography` (8 options: system, mono, professional, editorial, bold, techno, cyberpunk, luxury), and `effects` (5 presets: none, subtle, shimmer, neon, energetic).
|
|
184
|
+
|
|
185
|
+
## Live Polling
|
|
186
|
+
|
|
187
|
+
Real-time charts that auto-update from any API. The live chart polls data via `poll_http`, which supports two modes:
|
|
188
|
+
|
|
189
|
+
### Secure presets (authenticated APIs)
|
|
190
|
+
|
|
191
|
+
Configure presets via env vars. Credentials stay server-side and never appear in the conversation.
|
|
111
192
|
|
|
193
|
+
```json
|
|
194
|
+
{
|
|
195
|
+
"mcpServers": {
|
|
196
|
+
"dashboard": {
|
|
197
|
+
"command": "npx",
|
|
198
|
+
"args": ["-y", "mcp-dashboards", "--stdio"],
|
|
199
|
+
"env": {
|
|
200
|
+
"POLL_PRESET_T212_CASH_URL": "https://live.trading212.com/api/v0/equity/account/cash",
|
|
201
|
+
"POLL_PRESET_T212_CASH_HEADERS": "{\"Authorization\": \"Bearer YOUR_API_KEY\"}"
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
112
206
|
```
|
|
113
|
-
"Create a sales dashboard with total revenue, growth rate, and customer count as KPIs,
|
|
114
|
-
plus a line chart of monthly revenue and a pie chart of revenue by region"
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
**Parameters:**
|
|
118
|
-
| Name | Type | Required | Description |
|
|
119
|
-
|------|------|----------|-------------|
|
|
120
|
-
| title | string | Yes | Dashboard title |
|
|
121
|
-
| kpis | [{label, value, change?, prefix?, suffix?}] | No | KPI metric cards |
|
|
122
|
-
| charts | [{type, title?, ...chartConfig}] | Yes | Charts to display |
|
|
123
|
-
|
|
124
|
-
**KPI fields:**
|
|
125
|
-
- `label` - metric name
|
|
126
|
-
- `value` - the number or text
|
|
127
|
-
- `change` - percentage change (positive = green arrow up, negative = red arrow down)
|
|
128
|
-
- `prefix` - e.g. "$", "Rs."
|
|
129
|
-
- `suffix` - e.g. "%", " users"
|
|
130
207
|
|
|
131
|
-
|
|
208
|
+
Then ask: *"Monitor my portfolio total and P/L live"* - the AI uses `render_live_chart` with `pollArgs: { preset: "t212_cash" }`.
|
|
132
209
|
|
|
133
|
-
|
|
210
|
+
**Naming:** `POLL_PRESET_<NAME>_URL` and `POLL_PRESET_<NAME>_HEADERS` (JSON object).
|
|
134
211
|
|
|
135
|
-
|
|
136
|
-
"Show me a table of the top 10 countries by GDP"
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
**Parameters:**
|
|
140
|
-
| Name | Type | Required | Description |
|
|
141
|
-
|------|------|----------|-------------|
|
|
142
|
-
| title | string | Yes | Table title |
|
|
143
|
-
| columns | string[] | Yes | Column names in display order |
|
|
144
|
-
| rows | [{key: value}] | Yes | Array of row objects |
|
|
145
|
-
| options.sortable | boolean | No | Enable sorting (default: true) |
|
|
146
|
-
| options.striped | boolean | No | Alternating row colors (default: false) |
|
|
212
|
+
### Public URLs (no auth needed)
|
|
147
213
|
|
|
148
|
-
|
|
214
|
+
For public APIs, use the URL directly:
|
|
149
215
|
|
|
150
|
-
|
|
216
|
+
*"Show me Bitcoin price updating every 30 seconds"* - uses `pollArgs: { url: "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd" }`.
|
|
151
217
|
|
|
152
|
-
|
|
153
|
-
"Visualize this JSON data: [{"month": "Jan", "sales": 1200}, ...]"
|
|
154
|
-
```
|
|
218
|
+
## How It Works
|
|
155
219
|
|
|
156
|
-
|
|
157
|
-
- `[{name, value}]` (1 string + 1 number key) - Pie chart
|
|
158
|
-
- `[{category, sales, profit}]` (1 string + N number keys) - Grouped bar chart
|
|
159
|
-
- `[{date, price}]` (date-like key + number keys) - Line chart
|
|
160
|
-
- `{key: number}` (flat object with numeric values) - Pie chart
|
|
161
|
-
- `[1, 2, 3]` (array of numbers) - Bar chart
|
|
162
|
-
- Complex objects with 3+ keys - Sortable table
|
|
163
|
-
- Unrecognizable - Raw JSON display
|
|
220
|
+
Built on [MCP Apps](https://modelcontextprotocol.io/docs/extensions/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.
|
|
164
221
|
|
|
165
|
-
**
|
|
166
|
-
| Name | Type | Required | Description |
|
|
167
|
-
|------|------|----------|-------------|
|
|
168
|
-
| title | string | Yes | Chart title |
|
|
169
|
-
| data | any | Yes | Any JSON data |
|
|
170
|
-
| options.preferredType | string | No | Force: "pie", "bar", "line", or "table" |
|
|
222
|
+
**Requirements:** Node.js 18+ and an MCP Apps-compatible client.
|
|
171
223
|
|
|
172
|
-
|
|
224
|
+
<details>
|
|
225
|
+
<summary><strong>Contributing</strong></summary>
|
|
173
226
|
|
|
174
227
|
```bash
|
|
175
|
-
git clone https://github.com/KyuRish/mcp-
|
|
176
|
-
cd mcp-
|
|
228
|
+
git clone https://github.com/KyuRish/mcp-dashboards.git
|
|
229
|
+
cd mcp-dashboards
|
|
177
230
|
npm install
|
|
178
231
|
npm run build
|
|
179
|
-
npm run serve
|
|
232
|
+
npm run serve # http://localhost:3001
|
|
233
|
+
npm run dev # watch mode
|
|
180
234
|
```
|
|
181
235
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
| Script | Description |
|
|
185
|
-
|--------|-------------|
|
|
186
|
-
| `npm run build` | Build UI + server |
|
|
187
|
-
| `npm run build:ui` | Bundle HTML with Vite |
|
|
188
|
-
| `npm run build:server` | Compile TypeScript server |
|
|
189
|
-
| `npm run serve` | Start HTTP server on port 3001 |
|
|
190
|
-
| `npm start` | Build + serve |
|
|
191
|
-
|
|
192
|
-
## How It Works
|
|
193
|
-
|
|
194
|
-
This server uses [MCP Apps](https://modelcontextprotocol.io/docs/extensions/apps) (SEP-1865) to return interactive HTML that renders inside AI clients as sandboxed iframes.
|
|
195
|
-
|
|
196
|
-
1. You ask the AI to visualize data
|
|
197
|
-
2. AI calls the appropriate MCP tool with your data
|
|
198
|
-
3. Server generates structured content + links to a bundled HTML resource
|
|
199
|
-
4. Client renders the HTML as an interactive widget inline in the conversation
|
|
200
|
-
5. Chart.js handles rendering, tooltips, hover effects - all inside the iframe
|
|
236
|
+
</details>
|
|
201
237
|
|
|
202
|
-
|
|
238
|
+
## Support
|
|
203
239
|
|
|
204
|
-
|
|
240
|
+
If MCP Dashboards is useful to you:
|
|
205
241
|
|
|
206
|
-
|
|
207
|
-
|
|
242
|
+
[](https://buymeacoffee.com/kyuish)
|
|
243
|
+
[](https://github.com/sponsors/KyuRish)
|
|
208
244
|
|
|
209
245
|
## License
|
|
210
246
|
|
|
211
|
-
MIT
|
|
247
|
+
[FSL-1.1-MIT](LICENSE) - 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](mailto:contact@kyuish.com).
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Entry point for the MCP
|
|
4
|
-
* Run with: npx mcp-
|
|
3
|
+
* Entry point for the MCP Dashboards server.
|
|
4
|
+
* Run with: npx mcp-dashboards
|
|
5
5
|
* Or: node dist/index.js [--stdio]
|
|
6
6
|
*/
|
|
7
7
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
@@ -39,7 +39,7 @@ async function startStreamableHTTPServer(factory) {
|
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
41
|
const httpServer = app.listen(port, () => {
|
|
42
|
-
console.log(`MCP
|
|
42
|
+
console.log(`MCP Dashboards server listening on http://localhost:${port}/mcp`);
|
|
43
43
|
});
|
|
44
44
|
const shutdown = () => {
|
|
45
45
|
console.log("\nShutting down...");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAGnG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,KAAK,UAAU,yBAAyB,CACtC,OAAwB;IAExB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC9B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAEhC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;YAClD,kBAAkB,EAAE,SAAS;SAC9B,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE;oBACzD,EAAE,EAAE,IAAI;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAGnG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,KAAK,UAAU,yBAAyB,CACtC,OAAwB;IAExB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC9B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAEhC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;YAClD,kBAAkB,EAAE,SAAS;SAC9B,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE;oBACzD,EAAE,EAAE,IAAI;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,uDAAuD,IAAI,MAAM,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAwB;IACtD,MAAM,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,MAAM,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|