@cyanheads/eurostat-mcp-server 0.3.0 → 0.5.0

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.
Files changed (53) hide show
  1. package/CLAUDE.md +1 -1
  2. package/Dockerfile +16 -3
  3. package/README.md +50 -7
  4. package/dist/config/server-config.d.ts +2 -0
  5. package/dist/config/server-config.d.ts.map +1 -1
  6. package/dist/config/server-config.js +14 -0
  7. package/dist/config/server-config.js.map +1 -1
  8. package/dist/index.js +28 -2
  9. package/dist/index.js.map +1 -1
  10. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.d.ts +40 -0
  11. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.d.ts.map +1 -0
  12. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js +113 -0
  13. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js.map +1 -0
  14. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.d.ts +34 -0
  15. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.d.ts.map +1 -0
  16. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js +98 -0
  17. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js.map +1 -0
  18. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts +93 -0
  19. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts.map +1 -0
  20. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js +362 -0
  21. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js.map +1 -0
  22. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js +2 -2
  23. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js.map +1 -1
  24. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js +2 -2
  25. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js.map +1 -1
  26. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts +9 -0
  27. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts.map +1 -1
  28. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js +68 -10
  29. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js.map +1 -1
  30. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js +3 -3
  31. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js.map +1 -1
  32. package/dist/services/canvas-accessor.d.ts +31 -0
  33. package/dist/services/canvas-accessor.d.ts.map +1 -0
  34. package/dist/services/canvas-accessor.js +64 -0
  35. package/dist/services/canvas-accessor.js.map +1 -0
  36. package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts +89 -0
  37. package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts.map +1 -0
  38. package/dist/services/eurostat-bulk/eurostat-bulk-service.js +501 -0
  39. package/dist/services/eurostat-bulk/eurostat-bulk-service.js.map +1 -0
  40. package/dist/services/eurostat-bulk/types.d.ts +98 -0
  41. package/dist/services/eurostat-bulk/types.d.ts.map +1 -0
  42. package/dist/services/eurostat-bulk/types.js +82 -0
  43. package/dist/services/eurostat-bulk/types.js.map +1 -0
  44. package/dist/services/eurostat-data/eurostat-data-service.d.ts +63 -8
  45. package/dist/services/eurostat-data/eurostat-data-service.d.ts.map +1 -1
  46. package/dist/services/eurostat-data/eurostat-data-service.js +107 -13
  47. package/dist/services/eurostat-data/eurostat-data-service.js.map +1 -1
  48. package/dist/services/eurostat-data/types.d.ts +30 -0
  49. package/dist/services/eurostat-data/types.d.ts.map +1 -1
  50. package/dist/services/eurostat-data/types.js +4 -0
  51. package/dist/services/eurostat-data/types.js.map +1 -1
  52. package/package.json +2 -1
  53. package/server.json +85 -3
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @fileoverview Domain types and the static flag dictionaries for the Eurostat
3
+ * SDMX 2.1 bulk (TSV) service.
4
+ * @module services/eurostat-bulk/types
5
+ */
6
+ /** Period column name. `time` matches the dimension name JSON-stat uses. */
7
+ export const TIME_COLUMN = 'time';
8
+ /** Measure column names — the non-dimension columns of a {@link BulkRow}. */
9
+ export const OBS_VALUE_COLUMN = 'obs_value';
10
+ export const OBS_FLAG_COLUMN = 'obs_flag';
11
+ export const OBS_FLAG_LABEL_COLUMN = 'obs_flag_label';
12
+ export const CONF_STATUS_COLUMN = 'conf_status';
13
+ export const CONF_STATUS_LABEL_COLUMN = 'conf_status_label';
14
+ /**
15
+ * Eurostat's `OBS_FLAG` codelist, verbatim from
16
+ * `sdmx/2.1/codelist/ESTAT/OBS_FLAG` — all 42 codes.
17
+ *
18
+ * Codes are composite: a cell flagged `bdep` is one code meaning "break in time
19
+ * series, definition differs, estimated, provisional", not four codes to be
20
+ * decomposed. Lookups that miss return `undefined` and the row's label column is
21
+ * `null` — Eurostat can ship a code in data that its published codelist omits,
22
+ * and an invented label is worse than an absent one.
23
+ */
24
+ export const OBS_FLAG_LABELS = {
25
+ b: 'break in time series',
26
+ bd: 'break in time series, definition differs (see metadata)',
27
+ bde: 'break in time series, definition differs (see metadata), estimated',
28
+ bdep: 'break in time series, definition differs (see metadata), estimated, provisional',
29
+ bdf: 'break in time series, definition differs (see metadata), forecast',
30
+ bdi: 'break in time series, definition differs (see metadata), value imputed by Eurostat or other receiving agencies',
31
+ bdip: 'break in time series, definition differs (see metadata), value imputed by Eurostat or other receiving agencies, provisional',
32
+ bdm: 'break in time series, definition differs (see metadata), missing value; data cannot exist',
33
+ bdn: 'break in time series, definition differs (see metadata), not significant',
34
+ bdp: 'break in time series, definition differs (see metadata), provisional',
35
+ bdu: 'break in time series, definition differs (see metadata), low reliability',
36
+ be: 'break in time series, estimated',
37
+ bep: 'break in time series, estimated, provisional',
38
+ bf: 'break in time series, forecast',
39
+ bi: 'break in time series, value imputed by Eurostat or other receiving agencies',
40
+ bip: 'break in time series, value imputed by Eurostat or other receiving agencies, provisional',
41
+ bm: 'break in time series, missing value; data cannot exist',
42
+ bn: 'break in time series, not significant',
43
+ bp: 'break in time series, provisional',
44
+ bpu: 'break in time series, provisional, low reliability',
45
+ bu: 'break in time series, low reliability',
46
+ d: 'definition differs (see metadata)',
47
+ de: 'definition differs (see metadata), estimated',
48
+ dep: 'definition differs (see metadata), estimated, provisional',
49
+ df: 'definition differs (see metadata), forecast',
50
+ di: 'definition differs (see metadata), value imputed by Eurostat or other receiving agencies',
51
+ dip: 'definition differs (see metadata), value imputed by Eurostat or other receiving agencies, provisional',
52
+ dm: 'definition differs (see metadata), missing value; data cannot exist',
53
+ dn: 'definition differs (see metadata), not significant',
54
+ dp: 'definition differs (see metadata), provisional',
55
+ dpu: 'definition differs (see metadata), provisional, low reliability',
56
+ du: 'definition differs (see metadata), low reliability',
57
+ e: 'estimated',
58
+ ep: 'estimated, provisional',
59
+ f: 'forecast',
60
+ i: 'value imputed by Eurostat or other receiving agencies',
61
+ ip: 'value imputed by Eurostat or other receiving agencies, provisional',
62
+ m: 'missing value; data cannot exist',
63
+ n: 'not significant',
64
+ p: 'provisional',
65
+ pu: 'provisional, low reliability',
66
+ u: 'low reliability',
67
+ };
68
+ /**
69
+ * Eurostat's `CONF_STATUS` codelist, verbatim from
70
+ * `sdmx/2.1/codelist/ESTAT/CONF_STATUS` — all three codes.
71
+ *
72
+ * `C` is what appears in TSV data, behind the `@` of a cell like `: @C`. The
73
+ * same cells surface in JSON-stat folded into the observation status instead,
74
+ * as `|C` labelled `|confidential`, which is why a bulk-staged table and a
75
+ * query-staged one disagree about where a confidentiality marker lives.
76
+ */
77
+ export const CONF_STATUS_LABELS = {
78
+ C: 'confidential',
79
+ N: 'not for publication',
80
+ P: 'information under non-statistical secrecy arrangements',
81
+ };
82
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/eurostat-bulk/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC;AAClC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAChD,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,eAAe,GAAqC;IAC/D,CAAC,EAAE,sBAAsB;IACzB,EAAE,EAAE,yDAAyD;IAC7D,GAAG,EAAE,oEAAoE;IACzE,IAAI,EAAE,iFAAiF;IACvF,GAAG,EAAE,mEAAmE;IACxE,GAAG,EAAE,gHAAgH;IACrH,IAAI,EAAE,6HAA6H;IACnI,GAAG,EAAE,2FAA2F;IAChG,GAAG,EAAE,0EAA0E;IAC/E,GAAG,EAAE,sEAAsE;IAC3E,GAAG,EAAE,0EAA0E;IAC/E,EAAE,EAAE,iCAAiC;IACrC,GAAG,EAAE,8CAA8C;IACnD,EAAE,EAAE,gCAAgC;IACpC,EAAE,EAAE,6EAA6E;IACjF,GAAG,EAAE,0FAA0F;IAC/F,EAAE,EAAE,wDAAwD;IAC5D,EAAE,EAAE,uCAAuC;IAC3C,EAAE,EAAE,mCAAmC;IACvC,GAAG,EAAE,oDAAoD;IACzD,EAAE,EAAE,uCAAuC;IAC3C,CAAC,EAAE,mCAAmC;IACtC,EAAE,EAAE,8CAA8C;IAClD,GAAG,EAAE,2DAA2D;IAChE,EAAE,EAAE,6CAA6C;IACjD,EAAE,EAAE,0FAA0F;IAC9F,GAAG,EAAE,uGAAuG;IAC5G,EAAE,EAAE,qEAAqE;IACzE,EAAE,EAAE,oDAAoD;IACxD,EAAE,EAAE,gDAAgD;IACpD,GAAG,EAAE,iEAAiE;IACtE,EAAE,EAAE,oDAAoD;IACxD,CAAC,EAAE,WAAW;IACd,EAAE,EAAE,wBAAwB;IAC5B,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,uDAAuD;IAC1D,EAAE,EAAE,oEAAoE;IACxE,CAAC,EAAE,kCAAkC;IACrC,CAAC,EAAE,iBAAiB;IACpB,CAAC,EAAE,aAAa;IAChB,EAAE,EAAE,8BAA8B;IAClC,CAAC,EAAE,iBAAiB;CACrB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAqC;IAClE,CAAC,EAAE,cAAc;IACjB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,wDAAwD;CAC5D,CAAC"}
@@ -4,9 +4,10 @@
4
4
  * @module services/eurostat-data/eurostat-data-service
5
5
  */
6
6
  import type { Context } from '@cyanheads/mcp-ts-core';
7
+ import type { ColumnSchema } from '@cyanheads/mcp-ts-core/canvas';
7
8
  import type { AppConfig } from '@cyanheads/mcp-ts-core/config';
8
9
  import type { StorageService } from '@cyanheads/mcp-ts-core/storage';
9
- import { type DatasetMeta, type DimensionValuesResult, type GeoLevel, type QueryResult } from './types.js';
10
+ import { type DatasetMeta, type DimensionValuesResult, type GeoLevel, type Observation, type ObservationRow, type QueryExecution } from './types.js';
10
11
  export declare class EurostatDataService {
11
12
  constructor(_config: AppConfig, _storage: StorageService);
12
13
  private buildUrl;
@@ -27,12 +28,26 @@ export declare class EurostatDataService {
27
28
  */
28
29
  private scanCells;
29
30
  /**
30
- * Decode a JSON-stat 2.0 response into labeled observations using stride-based indexing.
31
+ * Walk a JSON-stat 2.0 response's populated cells, yielding one labeled
32
+ * observation at a time via stride-based indexing.
31
33
  *
32
- * Stops once `limit` observations have been built, in ascending linear-index order — an
33
- * order the decoder sets itself rather than reading from the upstream key order, so the
34
- * rows returned for a given response are the same every time. Bounding here keeps an
35
- * oversized match from ever materializing as observation objects; the counts that
34
+ * Cells come out in ascending linear-index order — an order this walk sets
35
+ * itself rather than reading from the upstream key order, so a given response
36
+ * always yields the same rows in the same sequence. Being a generator, it
37
+ * allocates one observation per pull and none in advance, which is what lets
38
+ * the same walk serve both a capped decode and an uncapped dataframe spill.
39
+ *
40
+ * This is the only place cell membership is decided: a cell is an observation
41
+ * when its linear index appears in `value` or in `status`. `scanCells` counts
42
+ * that same predicate from the other direction (over the key maps) so the
43
+ * totals it reports describe exactly this set.
44
+ */
45
+ private iterateObservations;
46
+ /**
47
+ * Take the first `limit` observations off {@link iterateObservations}.
48
+ *
49
+ * Bounding here keeps an oversized match from ever materializing as observation
50
+ * objects — the walk stops the moment the cap is reached. The counts that
36
51
  * describe the whole match come from `scanCells`.
37
52
  */
38
53
  private decodeObservations;
@@ -65,6 +80,16 @@ export declare class EurostatDataService {
65
80
  * dimension list, period range, observation count and metadata URL along with it.
66
81
  */
67
82
  getDatasetInfo(datasetCode: string, ctx: Context): Promise<DatasetMeta>;
83
+ /**
84
+ * The dataset's dimensions in key order, `time` excluded.
85
+ *
86
+ * This is the order the SDMX positional key is built from, and it is read from
87
+ * the JSON-stat `id` array of a one-period slice — the cheapest response that
88
+ * carries the full dimension list. Verified against live SDMX TSV headers on
89
+ * 4-, 6- and 7-dimension datasets: the TSV header's comma-joined key field is
90
+ * exactly this array.
91
+ */
92
+ getDimensionOrder(datasetCode: string, ctx: Context): Promise<string[]>;
68
93
  /**
69
94
  * Build a filter that pins every dimension except `exceptDim` to its first (index 0)
70
95
  * value, drawn from a probe response. Eurostat orders the primary/aggregate value first
@@ -89,10 +114,40 @@ export declare class EurostatDataService {
89
114
  getDimensionValues(datasetCode: string, dimension: string, geoLevel: GeoLevel | undefined, ctx: Context): Promise<DimensionValuesResult>;
90
115
  /**
91
116
  * Query dataset observations with dimension filters.
92
- * Returns decoded observations.
117
+ *
118
+ * Returns the capped observation list alongside `rows()`, a lazy generator
119
+ * over the whole match. Both read the same response body — already in memory
120
+ * before decoding starts — so reaching the rows past the cap costs no
121
+ * additional upstream request.
93
122
  */
94
- queryDataset(datasetCode: string, filters: Record<string, string[]>, geoLevel: GeoLevel | undefined, sinceP: string | undefined, untilP: string | undefined, lastN: number | undefined, lang: string, ctx: Context): Promise<QueryResult>;
123
+ queryDataset(datasetCode: string, filters: Record<string, string[]>, geoLevel: GeoLevel | undefined, sinceP: string | undefined, untilP: string | undefined, lastN: number | undefined, lang: string, ctx: Context): Promise<QueryExecution>;
124
+ /** {@link iterateObservations}, flattened to dataframe rows one at a time. */
125
+ private iterateRows;
95
126
  }
127
+ /**
128
+ * Flatten one observation into a dataframe row.
129
+ *
130
+ * The inverse of the nested shape `Observation` carries: each dimension
131
+ * contributes `<dim>` (code) and `<dim>_label`, and the status flag contributes
132
+ * `obs_flag` / `obs_flag_label`. A dimension the observation does not carry
133
+ * yields `null` in both of its columns rather than an absent key, so every row
134
+ * has the same column set the table is declared with.
135
+ */
136
+ export declare function toObservationRow(obs: Observation, dimensionsUsed: string[]): ObservationRow;
137
+ /**
138
+ * Explicit canvas column schema for {@link toObservationRow}'s output.
139
+ *
140
+ * Declared rather than sniffed. Inference reads only the leading rows, which is
141
+ * enough to get the measure column wrong twice over: an all-integer prefix types
142
+ * it `BIGINT`, which the canvas then serializes as a string, and an all-missing
143
+ * prefix types it from nulls alone. Every column is nullable — a dimension can
144
+ * be absent from a cell, and a status flag usually is.
145
+ *
146
+ * Names and order mirror {@link toObservationRow}. Nothing in the type system
147
+ * ties a row's keys to a schema's names, so the service tests assert the two
148
+ * against each other instead.
149
+ */
150
+ export declare function observationRowSchema(dimensionsUsed: string[]): ColumnSchema[];
96
151
  export declare function initEurostatDataService(config: AppConfig, storage: StorageService): void;
97
152
  export declare function getEurostatDataService(): EurostatDataService;
98
153
  //# sourceMappingURL=eurostat-data-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eurostat-data-service.d.ts","sourceRoot":"","sources":["../../../src/services/eurostat-data/eurostat-data-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAO/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EAIb,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAMpB,qBAAa,mBAAmB;IAI9B,YAAY,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAI;IAE5D,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,SAAS;IA0DjB,OAAO,CAAC,mBAAmB;IAwC3B,oFAAoF;IACpF,OAAO,CAAC,cAAc;IAStB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,SAAS;IA6CjB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IA4D1B,OAAO,CAAC,iBAAiB;IAQzB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,eAAe;IA4CvB;;;;;;;;;;;;;OAaG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAkB5E;IAED;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAmBrB;;;;;;;;;;;;OAYG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,qBAAqB,CAAC,CA4ChC;IAED;;;OAGG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACjC,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,WAAW,CAAC,CA6EtB;CACF;AAMD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAExF;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,CAO5D"}
1
+ {"version":3,"file":"eurostat-data-service.d.ts","sourceRoot":"","sources":["../../../src/services/eurostat-data/eurostat-data-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAO/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EAMb,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAMpB,qBAAa,mBAAmB;IAI9B,YAAY,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAI;IAE5D,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,SAAS;IA0DjB,OAAO,CAAC,mBAAmB;IAwC3B,oFAAoF;IACpF,OAAO,CAAC,cAAc;IAStB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,SAAS;IA6CjB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAE,mBAAmB;IAyD5B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,iBAAiB;IAQzB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,eAAe;IA4CvB;;;;;;;;;;;;;OAaG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAkB5E;IAED;;;;;;;;OAQG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAU5E;IAED;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAmBrB;;;;;;;;;;;;OAYG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,qBAAqB,CAAC,CA4ChC;IAED;;;;;;;OAOG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACjC,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,cAAc,CAAC,CAgFzB;IAED,8EAA8E;IAC9E,OAAO,CAAE,WAAW;CAQrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,cAAc,CAW3F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAU7E;AAMD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAExF;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,CAO5D"}
@@ -6,7 +6,7 @@
6
6
  import { McpError, notFound, serviceUnavailable, validationError, } from '@cyanheads/mcp-ts-core/errors';
7
7
  import { fetchWithTimeout, withRetry } from '@cyanheads/mcp-ts-core/utils';
8
8
  import { getServerConfig } from '../../config/server-config.js';
9
- import { OBS_CAP, } from './types.js';
9
+ import { OBS_CAP, OBS_FLAG_COLUMN, OBS_FLAG_LABEL_COLUMN, OBS_VALUE_COLUMN, } from './types.js';
10
10
  // Context satisfies the runtime contract of RequestContext but lacks the index signature
11
11
  // required by fetchWithTimeout/withRetry.
12
12
  const asReqCtx = (ctx) => ctx;
@@ -176,17 +176,23 @@ export class EurostatDataService {
176
176
  return { obsCount, missingObsCount, timeCodes: timeCodes.sort() };
177
177
  }
178
178
  /**
179
- * Decode a JSON-stat 2.0 response into labeled observations using stride-based indexing.
179
+ * Walk a JSON-stat 2.0 response's populated cells, yielding one labeled
180
+ * observation at a time via stride-based indexing.
180
181
  *
181
- * Stops once `limit` observations have been built, in ascending linear-index order — an
182
- * order the decoder sets itself rather than reading from the upstream key order, so the
183
- * rows returned for a given response are the same every time. Bounding here keeps an
184
- * oversized match from ever materializing as observation objects; the counts that
185
- * describe the whole match come from `scanCells`.
182
+ * Cells come out in ascending linear-index order — an order this walk sets
183
+ * itself rather than reading from the upstream key order, so a given response
184
+ * always yields the same rows in the same sequence. Being a generator, it
185
+ * allocates one observation per pull and none in advance, which is what lets
186
+ * the same walk serve both a capped decode and an uncapped dataframe spill.
187
+ *
188
+ * This is the only place cell membership is decided: a cell is an observation
189
+ * when its linear index appears in `value` or in `status`. `scanCells` counts
190
+ * that same predicate from the other direction (over the key maps) so the
191
+ * totals it reports describe exactly this set.
186
192
  */
187
- decodeObservations(data, limit) {
193
+ *iterateObservations(data) {
188
194
  if (!data.id || !data.size || !data.dimension)
189
- return [];
195
+ return;
190
196
  const dims = data.id;
191
197
  const sizes = data.size;
192
198
  const value = data.value ?? {};
@@ -205,9 +211,8 @@ export class EurostatDataService {
205
211
  label: cat.label?.[code] ?? code,
206
212
  }));
207
213
  });
208
- const observations = [];
209
214
  const totalCells = sizes.reduce((a, b) => a * b, 1);
210
- for (let linearIdx = 0; linearIdx < totalCells && observations.length < limit; linearIdx++) {
215
+ for (let linearIdx = 0; linearIdx < totalCells; linearIdx++) {
211
216
  const keyStr = String(linearIdx);
212
217
  if (!(keyStr in value) && !(keyStr in status))
213
218
  continue;
@@ -233,7 +238,22 @@ export class EurostatDataService {
233
238
  label: statusLabels[statusCode] ?? statusCode,
234
239
  };
235
240
  }
241
+ yield obs;
242
+ }
243
+ }
244
+ /**
245
+ * Take the first `limit` observations off {@link iterateObservations}.
246
+ *
247
+ * Bounding here keeps an oversized match from ever materializing as observation
248
+ * objects — the walk stops the moment the cap is reached. The counts that
249
+ * describe the whole match come from `scanCells`.
250
+ */
251
+ decodeObservations(data, limit) {
252
+ const observations = [];
253
+ for (const obs of this.iterateObservations(data)) {
236
254
  observations.push(obs);
255
+ if (observations.length >= limit)
256
+ break;
237
257
  }
238
258
  return observations;
239
259
  }
@@ -319,6 +339,23 @@ export class EurostatDataService {
319
339
  }
320
340
  return this.extractMetadata(data, datasetCode, timeSlice);
321
341
  }
342
+ /**
343
+ * The dataset's dimensions in key order, `time` excluded.
344
+ *
345
+ * This is the order the SDMX positional key is built from, and it is read from
346
+ * the JSON-stat `id` array of a one-period slice — the cheapest response that
347
+ * carries the full dimension list. Verified against live SDMX TSV headers on
348
+ * 4-, 6- and 7-dimension datasets: the TSV header's comma-joined key field is
349
+ * exactly this array.
350
+ */
351
+ async getDimensionOrder(datasetCode, ctx) {
352
+ const data = await this.fetchJson(this.buildUrl(datasetCode, { lastTimePeriod: '1' }), ctx);
353
+ const order = (data.id ?? []).filter((dim) => dim !== 'time');
354
+ if (order.length === 0) {
355
+ throw serviceUnavailable(`Eurostat reported no dimensions for dataset "${datasetCode}", so a positional filter key cannot be built. Retry without filters to download the whole dataset.`, { reason: 'upstream_fault', datasetCode });
356
+ }
357
+ return order;
358
+ }
322
359
  /**
323
360
  * Build a filter that pins every dimension except `exceptDim` to its first (index 0)
324
361
  * value, drawn from a probe response. Eurostat orders the primary/aggregate value first
@@ -395,7 +432,11 @@ export class EurostatDataService {
395
432
  }
396
433
  /**
397
434
  * Query dataset observations with dimension filters.
398
- * Returns decoded observations.
435
+ *
436
+ * Returns the capped observation list alongside `rows()`, a lazy generator
437
+ * over the whole match. Both read the same response body — already in memory
438
+ * before decoding starts — so reaching the rows past the cap costs no
439
+ * additional upstream request.
399
440
  */
400
441
  async queryDataset(datasetCode, filters, geoLevel, sinceP, untilP, lastN, lang, ctx) {
401
442
  // A zero-length filter array places no restriction on the request. Drop those entries once,
@@ -446,17 +487,70 @@ export class EurostatDataService {
446
487
  const start = timeCodes[0] ?? this.extractAnnotation(data, 'OBS_PERIOD_OVERALL_OLDEST', 'title');
447
488
  const end = timeCodes.at(-1) ?? this.extractAnnotation(data, 'OBS_PERIOD_OVERALL_LATEST', 'title');
448
489
  const timeRange = { ...(start && { start }), ...(end && { end }) };
490
+ const dimensionsUsed = data.id ?? [];
449
491
  return {
450
492
  datasetCode,
451
493
  datasetLabel: data.label ?? datasetCode,
452
- dimensionsUsed: data.id ?? [],
494
+ dimensionsUsed,
453
495
  observations,
454
496
  obsCount,
455
497
  timeRange,
456
498
  missingObsCount,
457
499
  appliedFilters,
500
+ rows: () => this.iterateRows(data, dimensionsUsed),
458
501
  };
459
502
  }
503
+ /** {@link iterateObservations}, flattened to dataframe rows one at a time. */
504
+ *iterateRows(data, dimensionsUsed) {
505
+ for (const obs of this.iterateObservations(data)) {
506
+ yield toObservationRow(obs, dimensionsUsed);
507
+ }
508
+ }
509
+ }
510
+ /**
511
+ * Flatten one observation into a dataframe row.
512
+ *
513
+ * The inverse of the nested shape `Observation` carries: each dimension
514
+ * contributes `<dim>` (code) and `<dim>_label`, and the status flag contributes
515
+ * `obs_flag` / `obs_flag_label`. A dimension the observation does not carry
516
+ * yields `null` in both of its columns rather than an absent key, so every row
517
+ * has the same column set the table is declared with.
518
+ */
519
+ export function toObservationRow(obs, dimensionsUsed) {
520
+ const row = {};
521
+ for (const dim of dimensionsUsed) {
522
+ const cell = obs.dimensions[dim];
523
+ row[dim] = cell?.code ?? null;
524
+ row[`${dim}_label`] = cell?.label ?? null;
525
+ }
526
+ row[OBS_VALUE_COLUMN] = obs.value;
527
+ row[OBS_FLAG_COLUMN] = obs.status?.code ?? null;
528
+ row[OBS_FLAG_LABEL_COLUMN] = obs.status?.label ?? null;
529
+ return row;
530
+ }
531
+ /**
532
+ * Explicit canvas column schema for {@link toObservationRow}'s output.
533
+ *
534
+ * Declared rather than sniffed. Inference reads only the leading rows, which is
535
+ * enough to get the measure column wrong twice over: an all-integer prefix types
536
+ * it `BIGINT`, which the canvas then serializes as a string, and an all-missing
537
+ * prefix types it from nulls alone. Every column is nullable — a dimension can
538
+ * be absent from a cell, and a status flag usually is.
539
+ *
540
+ * Names and order mirror {@link toObservationRow}. Nothing in the type system
541
+ * ties a row's keys to a schema's names, so the service tests assert the two
542
+ * against each other instead.
543
+ */
544
+ export function observationRowSchema(dimensionsUsed) {
545
+ return [
546
+ ...dimensionsUsed.flatMap((dim) => [
547
+ { name: dim, type: 'VARCHAR', nullable: true },
548
+ { name: `${dim}_label`, type: 'VARCHAR', nullable: true },
549
+ ]),
550
+ { name: OBS_VALUE_COLUMN, type: 'DOUBLE', nullable: true },
551
+ { name: OBS_FLAG_COLUMN, type: 'VARCHAR', nullable: true },
552
+ { name: OBS_FLAG_LABEL_COLUMN, type: 'VARCHAR', nullable: true },
553
+ ];
460
554
  }
461
555
  // --- Init/accessor pattern ---
462
556
  let _service;
@@ -1 +1 @@
1
- {"version":3,"file":"eurostat-data-service.js","sourceRoot":"","sources":["../../../src/services/eurostat-data/eurostat-data-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eurostat-data-service.js","sourceRoot":"","sources":["../../../src/services/eurostat-data/eurostat-data-service.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,20 @@ export interface Observation {
58
58
  };
59
59
  value: number | null;
60
60
  }
61
+ /**
62
+ * One observation flattened into a dataframe row.
63
+ *
64
+ * A dataframe column holds a scalar, so `Observation`'s nested `{code, label}`
65
+ * pair per dimension is split across two columns — `<dim>` for the code and
66
+ * `<dim>_label` for the label — and the status flag likewise. The measure
67
+ * columns carry the `obs_` prefix Eurostat's own SDMX-CSV output uses, which
68
+ * also keeps them clear of any dimension code.
69
+ */
70
+ export type ObservationRow = Record<string, string | number | null>;
71
+ /** Measure column names — the non-dimension columns of an {@link ObservationRow}. */
72
+ export declare const OBS_VALUE_COLUMN = "obs_value";
73
+ export declare const OBS_FLAG_COLUMN = "obs_flag";
74
+ export declare const OBS_FLAG_LABEL_COLUMN = "obs_flag_label";
61
75
  /**
62
76
  * Metadata about a dataset extracted from a JSON-stat response.
63
77
  *
@@ -136,6 +150,22 @@ export interface QueryResult {
136
150
  end?: string;
137
151
  };
138
152
  }
153
+ /**
154
+ * A query result plus a lazy row source over everything it matched.
155
+ *
156
+ * `observations` stops at `OBS_CAP`; `rows()` does not. Both read the same
157
+ * single walk of the response, so the capped list is always a prefix of the row
158
+ * source rather than a separately-derived set that can drift from it.
159
+ */
160
+ export interface QueryExecution extends QueryResult {
161
+ /**
162
+ * Fresh generator over every matched cell, in the same order `observations`
163
+ * uses. Nothing is materialized until a consumer pulls, so staging a
164
+ * million-cell match costs one row object at a time rather than an array of
165
+ * them — the allocation `OBS_CAP` exists to avoid.
166
+ */
167
+ rows: () => Generator<ObservationRow>;
168
+ }
139
169
  /**
140
170
  * Upper bound on decoded observations returned for one query.
141
171
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/eurostat-data/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/eurostat-data/types.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,10 @@
2
2
  * @fileoverview Domain types for the Eurostat Statistics API (JSON-stat 2.0) service.
3
3
  * @module services/eurostat-data/types
4
4
  */
5
+ /** Measure column names — the non-dimension columns of an {@link ObservationRow}. */
6
+ export const OBS_VALUE_COLUMN = 'obs_value';
7
+ export const OBS_FLAG_COLUMN = 'obs_flag';
8
+ export const OBS_FLAG_LABEL_COLUMN = 'obs_flag_label';
5
9
  /**
6
10
  * Upper bound on decoded observations returned for one query.
7
11
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/eurostat-data/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuHH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC;AAI7B,4FAA4F;AAC5F,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW;IACX,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;CAC+B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/eurostat-data/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4DH,qFAAqF;AACrF,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAyFtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC;AAI7B,4FAA4F;AAC5F,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW;IACX,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;CAC+B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanheads/eurostat-mcp-server",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "mcpName": "io.github.cyanheads/eurostat-mcp-server",
5
5
  "description": "Search and query the Eurostat catalogue — EU economy, demography, trade, health, and NUTS regional data via MCP. STDIO or Streamable HTTP.",
6
6
  "type": "module",
@@ -79,6 +79,7 @@
79
79
  },
80
80
  "dependencies": {
81
81
  "@cyanheads/mcp-ts-core": "^0.11.1",
82
+ "@duckdb/node-api": "^1.5.5-r.3",
82
83
  "pino-pretty": "^13.1.3",
83
84
  "zod": "^4.4.3"
84
85
  },