@bicharts/chart-mcp 0.6.122 → 0.6.124
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 +77 -77
- package/dist/index.mjs +123 -123
- package/package.json +3 -3
- package/skills/bic-charts/CHART-SHAPES.md +1 -0
- package/skills/bic-charts/SKILL.md +11 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bicharts/chart-mcp",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.124",
|
|
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.124",
|
|
55
|
+
"@bicharts/shape-core": "^0.6.124",
|
|
56
56
|
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
57
57
|
"@types/node": "^26.6.5",
|
|
58
58
|
"@types/papaparse": "^5.3.14",
|
|
@@ -53,6 +53,7 @@ on the same picture, not a looser one.
|
|
|
53
53
|
| Clustered heatmap | 2 categorical, 1 continuous | <=50 categories, needs 320x320 px | Plotly | Requires two variables for matrix values |
|
|
54
54
|
| 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
55
|
| Custom small multiples | 1 categorical, 1 continuous | <=16 categories, needs 320x240 px | D3, Matplotlib, Plotly, Seaborn | Best when comparing patterns across categories |
|
|
56
|
+
| 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 |
|
|
56
57
|
| Cutoff tuner | 1 continuous | needs 560x360 px | D3 | One row per case with a model score or rating and the actual yes/no outcome - churn, fraud, default, conversion - when the question is where to draw the line and what each choice costs |
|
|
57
58
|
| Cycle plot | 1 continuous, 24+ time points | needs 320x280 px | D3, PLOTLY | Best for multi-year monthly/quarterly/weekly data where the question is seasonality vs trend ('is Q4 always highest, and is each Q4 growing?') |
|
|
58
59
|
| Decomposition cards | 2 categorical, 1 continuous | needs 294x200 px | D3 | One measure that adds up and two or more category fields; a second measure shows each card's change |
|
|
@@ -624,8 +624,10 @@ column repeated on every fact row (a country's population on each sale) sums to
|
|
|
624
624
|
|
|
625
625
|
**When the chart is about the records themselves, its grain IS the records.** A scatter of customers, a
|
|
626
626
|
distribution, customer segments or a map of accounts takes one row per customer, account or order - the raw facts -
|
|
627
|
-
and the engine does the shaping. For totals (revenue by region, a monthly trend)
|
|
628
|
-
|
|
627
|
+
and the engine does the shaping. For totals (revenue by region, a monthly trend) the chart's grain is the simplest
|
|
628
|
+
request. Raw rows work too where the list offers grains: the types that draw totals are then listed under "Fits once the
|
|
629
|
+
rows are totalled", once per grain, and the person picks one (step 4). Where a list shows no such heading, raw rows for a
|
|
630
|
+
total lose the bar, card and donut charts: query the chart's grain.
|
|
629
631
|
Ratio measures (a growth %, an attainment %, a share) and measures from different fact tables stay as the model
|
|
630
632
|
computes them: raw rows can't rebuild them.
|
|
631
633
|
|
|
@@ -779,6 +781,13 @@ without naming:
|
|
|
779
781
|
If the list doesn't offer what you expected, read its notes: it names a type refused on a count
|
|
780
782
|
when your table is small, and it says when `name_filter` hid description matches.
|
|
781
783
|
|
|
784
|
+
**A grain is the person's choice, like the chart's form.** When the rows are finer than a type draws (raw rows where
|
|
785
|
+
it wants one per category), the list offers that type under "Fits once the rows are totalled", once per grain: each row
|
|
786
|
+
says how the rows are totalled first and carries a `projection` key, and a type listed twice is the same chart at two
|
|
787
|
+
grains. Don't pick one yourself and don't re-query to total the rows in DAX: ask which grain they want in their own
|
|
788
|
+
words ("revenue per country, or per region?"), then pass that row's name as `chart_type` and its key, copied exactly,
|
|
789
|
+
as `projection`. The chart is drawn at that grain and says so.
|
|
790
|
+
|
|
782
791
|
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.
|
|
783
792
|
|
|
784
793
|
The Selection explainer is a preview type: the server offers it only where it's switched on, so it may be missing from the
|