@bicharts/chart-mcp 0.6.124 → 0.6.126
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/dist/check-chart.mjs +119 -119
- package/dist/index.mjs +194 -193
- package/package.json +3 -3
- package/skills/bic-charts/CHART-SHAPES.md +4 -0
- package/skills/bic-charts/SKILL.md +5 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bicharts/chart-mcp",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.126",
|
|
4
4
|
"description": "AI Data Components for Power BI, Excel, Fabric Apps and the web, over MCP: working what-if apps, interactive tables and bivariate maps first, plus about 90 everyday chart types, with selection and cross-filtering already wired. It profiles your table locally; the code it writes is yours and runs with no license.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -51,8 +51,8 @@
|
|
|
51
51
|
},
|
|
52
52
|
"// dependencies": "NONE, deliberately. dist/ bundles every module the server uses, so a runtime dependency installs nothing it needs - it only makes npx fetch that package (and its tree) before the first start. Everything the bundle carries is a devDependency; scripts/verify-package.mjs fails the release if a dependency appears or a shipped file imports anything but Node's built-ins.",
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@bicharts/chart-host": "^0.6.
|
|
55
|
-
"@bicharts/shape-core": "^0.6.
|
|
54
|
+
"@bicharts/chart-host": "^0.6.126",
|
|
55
|
+
"@bicharts/shape-core": "^0.6.126",
|
|
56
56
|
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
57
57
|
"@types/node": "^26.6.5",
|
|
58
58
|
"@types/papaparse": "^5.3.14",
|
|
@@ -49,8 +49,10 @@ on the same picture, not a looser one.
|
|
|
49
49
|
| Card with multiple KPI | 2 continuous | needs 180x100 px | D3, Plotly | Multiple independent numeric metrics that should be surfaced together; KPI dashboards; long-narrow / short-wide viewports |
|
|
50
50
|
| Card with sparkline | 1 continuous | needs 140x80 px | D3, Plotly | One numeric metric trending over an ordered dimension; small viewports |
|
|
51
51
|
| Chord diagram | 2 categorical, 1 continuous | <=25 categories, <=30 nodes, needs 294x320 px | D3 | Requires matrix data showing bidirectional flows between entities; best for migration, trade, or relationship intensity data |
|
|
52
|
+
| Churn risk list | 1 categorical | needs 294x200 px | D3 | One row per customer with a name or id, when they started and when they left (blank while active) - at least one active customer |
|
|
52
53
|
| Circular heatmap | 1 categorical, 1 continuous | <=60 categories, needs 294x380 px | D3, Matplotlib, Plotly | Requires two dimensions - a cyclical one such as hour, weekday or month around the angle and a second category or date for the rings - and one measure for the colour |
|
|
53
54
|
| Clustered heatmap | 2 categorical, 1 continuous | <=50 categories, needs 320x320 px | Plotly | Requires two variables for matrix values |
|
|
55
|
+
| Cohort retention triangle | - | needs 340x280 px | D3 | One row per customer with a start date and an end date that is blank while still a customer, over at least a year of starts |
|
|
54
56
|
| Connected scatterplot | 2 continuous, 6+ time points | needs 300x300 px | D3, PLOTLY | Best for the joint trajectory of two related metrics over time (e.g. units vs revenue, unemployment vs inflation) where the path shape is the insight |
|
|
55
57
|
| Custom small multiples | 1 categorical, 1 continuous | <=16 categories, needs 320x240 px | D3, Matplotlib, Plotly, Seaborn | Best when comparing patterns across categories |
|
|
56
58
|
| Customer segments | 1 categorical, 2 continuous | needs 294x420 px | D3 | One row per customer with days since the last order (or the last order date), a count of orders and a spend, ideally with other fields such as region or acquisition channel - at least a hundred customers |
|
|
@@ -111,6 +113,7 @@ on the same picture, not a looser one.
|
|
|
111
113
|
| Radar (spider) chart | 1 continuous | <=8 axes, needs 700x480 px | D3, Matplotlib, Plotly | Requires multiple continuous variables across categories |
|
|
112
114
|
| Range-compare time series | 1 continuous, 15+ time points | needs 480x320 px | D3 | Best for a single measure tracked over many dates when the story is a chosen window: drag the two handles to total a period and compare its endpoints, like revenue across a campaign or sensor readings around an incident |
|
|
113
115
|
| Regression plot (line with CI) | 2 continuous | needs 294x380 px | D3, Matplotlib, Plotly, Seaborn, Statsmodels | Requires two continuous variables - a predictor and a response |
|
|
116
|
+
| Retention curves | - | needs 320x300 px | D3 | One row per customer with when they started and when they left (blank while still a customer), or their tenure and whether they left, plus a field to compare such as channel or plan - at least 30 customers |
|
|
114
117
|
| Ridgeline plots | 1 categorical, 1 continuous | <=25 categories, needs 280x280 px | D3, Matplotlib, Plotly, Seaborn | Best with many observations per category |
|
|
115
118
|
| Rose (Coxcomb) chart | 1 categorical | <=24 categories, needs 294x300 px | D3 | Best for cyclical or directional categories: wind direction, hour of day, month of year, compass sectors - anywhere the categories wrap around rather than running left to right |
|
|
116
119
|
| Rotating carousel | 1 continuous | <=12 categories, needs 294x200 px | D3 | Best when each category value deserves its own small chart and the tile has room for only one at a time; the reader turns it, or it turns itself |
|
|
@@ -133,6 +136,7 @@ on the same picture, not a looser one.
|
|
|
133
136
|
| Sunburst chart | 2 categorical, 1 continuous | needs 400x300 px | D3, Matplotlib, Plotly | Requires hierarchical categorical data |
|
|
134
137
|
| Table with embedded | 1 categorical, 1 continuous | <=40 categories, needs 294x200 px | D3 | Best for a small set of items compared across several attributes at once (a forecast/roster/scorecard table) |
|
|
135
138
|
| Ternary plot | 3 continuous | needs 294x320 px | D3 | Three measures that add up to the same total on every row - product mix, budget allocation, vote share, channel split |
|
|
139
|
+
| Territory planner | 1 categorical, lat/lon | needs 420x380 px | D3 | One row per account with its location, its current rep and a workload measure - accounts by sales owner with yearly visit hours, stores by area manager - for 2 to 12 reps in North America |
|
|
136
140
|
| Thermometer | 1 continuous, a bounded scale | needs 90x220 px | D3 | A value against a ceiling the data states, overall or one tube per category, in a tall narrow tile - a sidebar rail or a column of KPIs down a page edge; a constant value is a valid reading |
|
|
137
141
|
| Time series plot | 1 continuous | needs 460x340 px | D3, Plotly | Requires a datetime axis with at least one continuous variable |
|
|
138
142
|
| Trail | 2 continuous | needs 294x220 px | D3 | Best when a series has both a level and a weight: price with traded volume, sentiment with mention count, a metric with the sample size behind it |
|
|
@@ -777,6 +777,9 @@ without naming:
|
|
|
777
777
|
| a table with one row per item and each value DRAWN (bars, dots or icons in the cells), compact, for scanning down a column and nothing more | Table with embedded |
|
|
778
778
|
| a table a reader WORKS with: sorts, drags column widths, copies cells out, hides columns, scrolls a wide table sideways with frozen columns or rows, opens a row's detail; plain values by default, and where the request asks, data bars, chips, icons, or one value compared with several others as bars (this week against its averages) | Interactive table (a preview type) - name the cells to draw in `prompt`; widths, sort and hidden columns are the reader's, kept through the host's view state |
|
|
779
779
|
| circling a group of points to see what sets them apart from the rest | Selection explainer (a preview type) - the lasso and the comparison are drawn inside the chart; put the other fields to compare in the same table (which ones: below); on a page, give it `selects` so a circled group filters the page (step 6) |
|
|
780
|
+
| how long customers stay, by channel or plan, and whether a gap between groups is real | Retention curves (a preview type) - one row per customer with the start and end dates; the Compare by switch is drawn inside the chart |
|
|
781
|
+
| each start month or quarter's share of customers still with us one, three, six or more months later | Cohort retention triangle (a preview type) - it needs the start date; the months nobody could have been watched yet are drawn as not seen, never 0% |
|
|
782
|
+
| the customers most likely to leave next, with the reason | Churn risk list (a preview type) - one row per customer with an id or name; it lists every active customer, most likely to leave first |
|
|
780
783
|
|
|
781
784
|
If the list doesn't offer what you expected, read its notes: it names a type refused on a count
|
|
782
785
|
when your table is small, and it says when `name_filter` hid description matches.
|
|
@@ -790,6 +793,8 @@ as `projection`. The chart is drawn at that grain and says so.
|
|
|
790
793
|
|
|
791
794
|
The Interactive table and the Variance grid are preview types too, so either may be missing from the list. When the person asked for one and it isn't listed, say so and ask how to go on; don't build a table by hand in its place.
|
|
792
795
|
|
|
796
|
+
Retention curves, the Cohort retention triangle and the Churn risk list are preview types, so any of them may be missing from the list; when the person asked for one and it isn't listed, say so and ask how to go on. Query ONE row per customer: the start and end dates as dates (a blank end while still a customer), the as-of date if the model has one (a snapshot date or a `Data As Of` measure), the fields to compare, an id or name, and last activity as a measure. Never join the activity rows into the customer query, and never compute retention, a curve, a cohort share or a risk score in the app: every number and word is the chart's.
|
|
797
|
+
|
|
793
798
|
The Selection explainer is a preview type: the server offers it only where it's switched on, so it may be missing from the
|
|
794
799
|
list even when the data fits. When `list_eligible_charts` doesn't list it for your data, tell the person it isn't available
|
|
795
800
|
for this data right now, and ask how they want to go on. Don't silently draw a plain scatter in its place, and don't write the
|