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 CHANGED
@@ -1,13 +1,102 @@
1
- MIT License
1
+ # Functional Source License, Version 1.1, MIT Future License
2
2
 
3
- Copyright (c) 2026 KyuRish
3
+ ## Abbreviation
4
4
 
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
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 Dashboard
1
+ # MCP Dashboards
2
2
 
3
- mcp-name: io.github.KyuRish/mcp-dashboard
3
+ <!-- mcp-name: io.github.KyuRish/mcp-dashboards -->
4
4
 
5
- **Turn your data into interactive dashboards inside any AI client.**
5
+ ### Your AI can talk about data. Now it can show it.
6
6
 
7
- [![npm](https://img.shields.io/npm/v/mcp-dashboard)](https://www.npmjs.com/package/mcp-dashboard)
8
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
7
+ [![npm](https://img.shields.io/npm/v/mcp-dashboards)](https://www.npmjs.com/package/mcp-dashboards)
8
+ [![License: FSL-1.1-MIT](https://img.shields.io/badge/License-FSL--1.1--MIT-blue.svg)](LICENSE)
9
+ [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-support-yellow?logo=buy-me-a-coffee&logoColor=white)](https://buymeacoffee.com/kyuish)
10
+ [![GitHub Sponsors](https://img.shields.io/badge/Sponsor-GitHub-ea4aaa?logo=github)](https://github.com/sponsors/KyuRish)
9
11
 
10
- The first MCP server that renders live, interactive Chart.js visualizations directly inside Claude Desktop, VS Code, and other MCP Apps-compatible clients. No browser needed - your charts appear right in the conversation.
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>&nbsp;
16
+ <a href="assets/chart-catalog.png"><img src="assets/chart-catalog.png" width="115" height="220" alt="Chart Catalog - 45+ chart types" /></a>&nbsp;
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
- ## Features
21
+ ## The problem
13
22
 
14
- - **Pie & Donut Charts** - key-value data with percentages, labels, hover tooltips
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
- ## Installation
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 Claude Desktop config (`claude_desktop_config.json`):
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-dashboard", "--stdio"]
43
+ "args": ["-y", "mcp-dashboards", "--stdio"]
36
44
  }
37
45
  }
38
46
  }
39
47
  ```
40
48
 
41
- ### Claude Code (VS Code)
49
+ ### Claude Code / VS Code
42
50
 
43
51
  ```bash
44
- claude mcp add dashboard -- npx -y mcp-dashboard --stdio
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-dashboard
58
+ npx mcp-dashboards
51
59
  # Server starts on http://localhost:3001/mcp
52
60
  ```
53
61
 
54
- ## Tools
55
-
56
- ### `render_pie_chart`
57
-
58
- Render a pie or donut chart from label-value pairs.
59
-
60
- ```
61
- "Show me a pie chart of browser market share:
62
- Chrome 65%, Safari 18%, Firefox 8%, Edge 5%, Other 4%"
63
- ```
64
-
65
- **Parameters:**
66
- | Name | Type | Required | Description |
67
- |------|------|----------|-------------|
68
- | title | string | Yes | Chart title |
69
- | data | [{label, value}] | Yes | Array of segments |
70
- | options.donut | boolean | No | Hollow center (default: false) |
71
- | options.showLegend | boolean | No | Show legend (default: true) |
72
-
73
- ### `render_bar_chart`
74
-
75
- Render vertical or horizontal bar charts with multi-series support.
76
-
77
- ```
78
- "Create a bar chart comparing Q1-Q4 revenue for 2024 vs 2025"
79
- ```
80
-
81
- **Parameters:**
82
- | Name | Type | Required | Description |
83
- |------|------|----------|-------------|
84
- | title | string | Yes | Chart title |
85
- | labels | string[] | Yes | Category labels |
86
- | datasets | [{label, data}] | Yes | Data series |
87
- | options.horizontal | boolean | No | Horizontal bars (default: false) |
88
- | options.stacked | boolean | No | Stack datasets (default: false) |
89
-
90
- ### `render_line_chart`
91
-
92
- Render line or area charts with smooth curves and gradient fills.
93
-
94
- ```
95
- "Plot my portfolio value over the last 12 months as a line chart"
96
- ```
97
-
98
- **Parameters:**
99
- | Name | Type | Required | Description |
100
- |------|------|----------|-------------|
101
- | title | string | Yes | Chart title |
102
- | labels | string[] | Yes | X-axis labels |
103
- | datasets | [{label, data}] | Yes | Data series |
104
- | options.fill | boolean | No | Area fill (default: true) |
105
- | options.smooth | boolean | No | Smooth curves (default: true) |
106
- | options.showPoints | boolean | No | Show data points (default: false) |
107
-
108
- ### `render_dashboard`
109
-
110
- Render a full dashboard with KPI cards and multiple charts.
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
- ### `render_table`
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
- Render a sortable, interactive data table. Click column headers to sort.
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
- ### `render_from_json`
214
+ For public APIs, use the URL directly:
149
215
 
150
- Pass any JSON data and get the best visualization automatically.
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
- **Auto-detection rules:**
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
- **Parameters:**
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
- ## Development
224
+ <details>
225
+ <summary><strong>Contributing</strong></summary>
173
226
 
174
227
  ```bash
175
- git clone https://github.com/KyuRish/mcp-dashboard.git
176
- cd mcp-dashboard
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
- ### Scripts
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
- The entire UI (Chart.js + CSS + JS) is bundled into a single self-contained HTML file using Vite + vite-plugin-singlefile. No CDN, no external requests.
238
+ ## Support
203
239
 
204
- ## Requirements
240
+ If MCP Dashboards is useful to you:
205
241
 
206
- - Node.js 18+
207
- - An MCP Apps-compatible client (Claude Desktop, VS Code, Goose, etc.)
242
+ [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-support-yellow?logo=buy-me-a-coffee&logoColor=white)](https://buymeacoffee.com/kyuish)
243
+ [![GitHub Sponsors](https://img.shields.io/badge/Sponsor-GitHub-ea4aaa?logo=github)](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
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Entry point for the MCP Dashboard server.
4
- * Run with: npx mcp-dashboard
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
  export {};
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Entry point for the MCP Dashboard server.
4
- * Run with: npx mcp-dashboard
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 Dashboard server listening on http://localhost:${port}/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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}