@cyanheads/eurostat-mcp-server 0.11.2 → 0.11.3
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/AGENTS.md +6 -4
- package/CLAUDE.md +6 -4
- package/README.md +17 -15
- package/changelog/0.11.x/0.11.3.md +45 -0
- package/changelog/template.md +10 -3
- package/dist/config/server-config.js +1 -1
- package/dist/config/server-config.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-drop.tool.js +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-drop.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts +18 -6
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js +129 -31
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts +6 -4
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js +139 -53
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts +20 -8
- package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js +208 -43
- package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts +16 -6
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js +62 -23
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js.map +1 -1
- package/dist/mcp-server/tools/narrowing-advice.d.ts +64 -3
- package/dist/mcp-server/tools/narrowing-advice.d.ts.map +1 -1
- package/dist/mcp-server/tools/narrowing-advice.js +160 -4
- package/dist/mcp-server/tools/narrowing-advice.js.map +1 -1
- package/dist/mcp-server/tools/notice-text.d.ts +18 -0
- package/dist/mcp-server/tools/notice-text.d.ts.map +1 -0
- package/dist/mcp-server/tools/notice-text.js +40 -0
- package/dist/mcp-server/tools/notice-text.js.map +1 -0
- package/dist/mcp-server/tools/value-list-paging.d.ts +11 -1
- package/dist/mcp-server/tools/value-list-paging.d.ts.map +1 -1
- package/dist/mcp-server/tools/value-list-paging.js +13 -1
- package/dist/mcp-server/tools/value-list-paging.js.map +1 -1
- package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts +4 -3
- package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts.map +1 -1
- package/dist/services/eurostat-bulk/eurostat-bulk-service.js +107 -54
- package/dist/services/eurostat-bulk/eurostat-bulk-service.js.map +1 -1
- package/dist/services/eurostat-bulk/types.d.ts +27 -4
- package/dist/services/eurostat-bulk/types.d.ts.map +1 -1
- package/dist/services/eurostat-bulk/types.js.map +1 -1
- package/dist/services/eurostat-catalogue/dimension-value-index.d.ts +81 -0
- package/dist/services/eurostat-catalogue/dimension-value-index.d.ts.map +1 -0
- package/dist/services/eurostat-catalogue/dimension-value-index.js +410 -0
- package/dist/services/eurostat-catalogue/dimension-value-index.js.map +1 -0
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts +87 -7
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts.map +1 -1
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js +333 -81
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js.map +1 -1
- package/dist/services/eurostat-catalogue/search-text.d.ts +12 -0
- package/dist/services/eurostat-catalogue/search-text.d.ts.map +1 -0
- package/dist/services/eurostat-catalogue/search-text.js +31 -0
- package/dist/services/eurostat-catalogue/search-text.js.map +1 -0
- package/dist/services/eurostat-catalogue/types.d.ts +11 -0
- package/dist/services/eurostat-catalogue/types.d.ts.map +1 -1
- package/dist/services/eurostat-data/eurostat-data-service.d.ts +26 -5
- package/dist/services/eurostat-data/eurostat-data-service.d.ts.map +1 -1
- package/dist/services/eurostat-data/eurostat-data-service.js +132 -16
- package/dist/services/eurostat-data/eurostat-data-service.js.map +1 -1
- package/dist/services/eurostat-data/sdmx-metadata.d.ts.map +1 -1
- package/dist/services/eurostat-data/sdmx-metadata.js +4 -20
- package/dist/services/eurostat-data/sdmx-metadata.js.map +1 -1
- package/dist/services/eurostat-data/types.d.ts +92 -2
- package/dist/services/eurostat-data/types.d.ts.map +1 -1
- package/dist/services/eurostat-data/types.js.map +1 -1
- package/dist/services/eurostat-filters.d.ts +18 -6
- package/dist/services/eurostat-filters.d.ts.map +1 -1
- package/dist/services/eurostat-filters.js +24 -7
- package/dist/services/eurostat-filters.js.map +1 -1
- package/dist/services/eurostat-periods.d.ts +54 -1
- package/dist/services/eurostat-periods.d.ts.map +1 -1
- package/dist/services/eurostat-periods.js +101 -1
- package/dist/services/eurostat-periods.js.map +1 -1
- package/dist/services/xml-entities.d.ts +13 -0
- package/dist/services/xml-entities.d.ts.map +1 -0
- package/dist/services/xml-entities.js +31 -0
- package/dist/services/xml-entities.js.map +1 -0
- package/package.json +5 -5
- package/server.json +5 -5
- package/skills/eurostat-guide/SKILL.md +6 -6
- package/skills/eurostat-guide/references/sql-analysis.md +5 -5
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Local check of the period literals `since_period`/`until_period`
|
|
3
3
|
* carry, run by both data tools before any request reaches Eurostat, and the calendar
|
|
4
|
-
* reasoning over those bounds
|
|
4
|
+
* reasoning over those bounds and over the periods a match carries: which periods the
|
|
5
|
+
* bounds exclude, when they name one day, and which span of each frequency has data.
|
|
5
6
|
* @module services/eurostat-periods
|
|
6
7
|
*/
|
|
8
|
+
import type { OutsideSpan } from './eurostat-data/types.js';
|
|
7
9
|
/**
|
|
8
10
|
* The accepted forms, as the tools' descriptions and recovery hints state them.
|
|
9
11
|
* `YYYY-A1`, the SDMX annual form, is read as well and sent as `YYYY`.
|
|
@@ -138,6 +140,57 @@ export declare function oneDayRange(range: PeriodRange): {
|
|
|
138
140
|
} | undefined;
|
|
139
141
|
/** The frequency codes a list of period codes is written in; a code of no known shape adds none. */
|
|
140
142
|
export declare function frequenciesOf(periods: readonly string[]): Set<string>;
|
|
143
|
+
/**
|
|
144
|
+
* A period code's frequency — A, S, T, Q, M, W or D, read from its shape as
|
|
145
|
+
* {@link frequenciesOf} reads it — or `undefined` for a code this module cannot place
|
|
146
|
+
* on the calendar: one of no known shape, or one naming a component that does not
|
|
147
|
+
* exist. {@link frequencySpans} leaves exactly those codes out.
|
|
148
|
+
*/
|
|
149
|
+
export declare const periodFrequency: (code: string) => string | undefined;
|
|
150
|
+
/** A period of a list, by its code and its position in the list. */
|
|
151
|
+
export interface ListedPeriod {
|
|
152
|
+
code: string;
|
|
153
|
+
position: number;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* One frequency's periods in a list, split by the span its periods with data cover. Every
|
|
157
|
+
* list is chronological. `empty`: none of the frequency's periods has data. `span`:
|
|
158
|
+
* `inside` runs from `first`, the earliest period with data, to `last`, the latest, both
|
|
159
|
+
* included and any gap between them too; `before` and `after` are the periods either
|
|
160
|
+
* side, none of which has data.
|
|
161
|
+
*/
|
|
162
|
+
export type FrequencySpan = {
|
|
163
|
+
frequency: string;
|
|
164
|
+
} & ({
|
|
165
|
+
kind: 'empty';
|
|
166
|
+
periods: ListedPeriod[];
|
|
167
|
+
} | {
|
|
168
|
+
after: ListedPeriod[];
|
|
169
|
+
before: ListedPeriod[];
|
|
170
|
+
first: ListedPeriod;
|
|
171
|
+
inside: ListedPeriod[];
|
|
172
|
+
kind: 'span';
|
|
173
|
+
last: ListedPeriod;
|
|
174
|
+
});
|
|
175
|
+
/** The periods of `span` that lie outside the span its data covers, or `undefined` when none do. */
|
|
176
|
+
export declare function outsideSpanOf(span: FrequencySpan): OutsideSpan | undefined;
|
|
177
|
+
/**
|
|
178
|
+
* Where each period of a list (a reply's time positions, a table's period columns)
|
|
179
|
+
* stands against the periods that carry data, per frequency.
|
|
180
|
+
*
|
|
181
|
+
* Periods are compared only within their own frequency, by the days they cover, so
|
|
182
|
+
* the list's own order never matters: the JSON-stat index puts annual 2025 after
|
|
183
|
+
* 2025-12, a TSV header puts it before 2025-01, and both give the same spans. A
|
|
184
|
+
* position whose code is unset or that {@link periodFrequency} cannot place belongs
|
|
185
|
+
* to no frequency.
|
|
186
|
+
*
|
|
187
|
+
* Returns the frequencies finest first, and `latest`: the period with data that ends
|
|
188
|
+
* last across frequencies (the finer one on a tie), absent when no period has data.
|
|
189
|
+
*/
|
|
190
|
+
export declare function frequencySpans(periods: readonly (string | undefined)[], hasData: (position: number) => boolean): {
|
|
191
|
+
frequencies: FrequencySpan[];
|
|
192
|
+
latest?: ListedPeriod;
|
|
193
|
+
};
|
|
141
194
|
/**
|
|
142
195
|
* The periods a range excludes because a bound falls inside them, finest frequency
|
|
143
196
|
* first, for each of `frequencies` this module has a calendar span for.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurostat-periods.d.ts","sourceRoot":"","sources":["../../src/services/eurostat-periods.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"eurostat-periods.d.ts","sourceRoot":"","sources":["../../src/services/eurostat-periods.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Local check of the period literals `since_period`/`until_period`
|
|
3
3
|
* carry, run by both data tools before any request reaches Eurostat, and the calendar
|
|
4
|
-
* reasoning over those bounds
|
|
4
|
+
* reasoning over those bounds and over the periods a match carries: which periods the
|
|
5
|
+
* bounds exclude, when they name one day, and which span of each frequency has data.
|
|
5
6
|
* @module services/eurostat-periods
|
|
6
7
|
*/
|
|
7
8
|
/**
|
|
@@ -294,6 +295,105 @@ export function frequenciesOf(periods) {
|
|
|
294
295
|
}
|
|
295
296
|
return frequencies;
|
|
296
297
|
}
|
|
298
|
+
/** Frequency codes finest first, the order {@link frequencySpans} lists them in. */
|
|
299
|
+
const FINEST_FIRST = ['D', 'W', 'M', 'Q', 'T', 'S', 'A'];
|
|
300
|
+
/** A period code's frequency and the days it covers, or `undefined` for one off the calendar. */
|
|
301
|
+
function placePeriod(code) {
|
|
302
|
+
const period = normalizePeriod(code);
|
|
303
|
+
if ('problem' in period)
|
|
304
|
+
return;
|
|
305
|
+
const [frequency] = frequenciesOf([code]);
|
|
306
|
+
return frequency === undefined ? undefined : { ...period, frequency };
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* A period code's frequency — A, S, T, Q, M, W or D, read from its shape as
|
|
310
|
+
* {@link frequenciesOf} reads it — or `undefined` for a code this module cannot place
|
|
311
|
+
* on the calendar: one of no known shape, or one naming a component that does not
|
|
312
|
+
* exist. {@link frequencySpans} leaves exactly those codes out.
|
|
313
|
+
*/
|
|
314
|
+
export const periodFrequency = (code) => placePeriod(code)?.frequency;
|
|
315
|
+
/** The periods of `span` that lie outside the span its data covers, or `undefined` when none do. */
|
|
316
|
+
export function outsideSpanOf(span) {
|
|
317
|
+
const { frequency } = span;
|
|
318
|
+
const codes = (periods) => periods.map(({ code }) => code);
|
|
319
|
+
if (span.kind === 'empty')
|
|
320
|
+
return { frequency, kind: 'empty', periods: codes(span.periods) };
|
|
321
|
+
if (span.before.length === 0 && span.after.length === 0)
|
|
322
|
+
return;
|
|
323
|
+
return {
|
|
324
|
+
frequency,
|
|
325
|
+
kind: 'edges',
|
|
326
|
+
first: span.first.code,
|
|
327
|
+
last: span.last.code,
|
|
328
|
+
before: codes(span.before),
|
|
329
|
+
after: codes(span.after),
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Where each period of a list (a reply's time positions, a table's period columns)
|
|
334
|
+
* stands against the periods that carry data, per frequency.
|
|
335
|
+
*
|
|
336
|
+
* Periods are compared only within their own frequency, by the days they cover, so
|
|
337
|
+
* the list's own order never matters: the JSON-stat index puts annual 2025 after
|
|
338
|
+
* 2025-12, a TSV header puts it before 2025-01, and both give the same spans. A
|
|
339
|
+
* position whose code is unset or that {@link periodFrequency} cannot place belongs
|
|
340
|
+
* to no frequency.
|
|
341
|
+
*
|
|
342
|
+
* Returns the frequencies finest first, and `latest`: the period with data that ends
|
|
343
|
+
* last across frequencies (the finer one on a tie), absent when no period has data.
|
|
344
|
+
*/
|
|
345
|
+
export function frequencySpans(periods, hasData) {
|
|
346
|
+
const placed = new Map();
|
|
347
|
+
let latest;
|
|
348
|
+
const fineness = (frequency) => FINEST_FIRST.indexOf(frequency);
|
|
349
|
+
periods.forEach((code, position) => {
|
|
350
|
+
if (code === undefined)
|
|
351
|
+
return;
|
|
352
|
+
const period = placePeriod(code);
|
|
353
|
+
if (!period)
|
|
354
|
+
return;
|
|
355
|
+
const { firstDay, frequency, lastDay } = period;
|
|
356
|
+
const entries = placed.get(frequency) ?? [];
|
|
357
|
+
if (entries.length === 0)
|
|
358
|
+
placed.set(frequency, entries);
|
|
359
|
+
entries.push({ code, day: firstDay, position });
|
|
360
|
+
if (!hasData(position))
|
|
361
|
+
return;
|
|
362
|
+
const candidate = { code, fineness: fineness(frequency), lastDay, position };
|
|
363
|
+
if (!latest ||
|
|
364
|
+
lastDay > latest.lastDay ||
|
|
365
|
+
(lastDay === latest.lastDay && candidate.fineness < latest.fineness)) {
|
|
366
|
+
latest = candidate;
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
const frequencies = [...placed]
|
|
370
|
+
.sort(([a], [b]) => fineness(a) - fineness(b))
|
|
371
|
+
.map(([frequency, entries]) => {
|
|
372
|
+
const ordered = entries
|
|
373
|
+
.sort((a, b) => a.day - b.day)
|
|
374
|
+
.map(({ code, position }) => ({ code, position }));
|
|
375
|
+
const populated = ({ position }) => hasData(position);
|
|
376
|
+
const from = ordered.findIndex(populated);
|
|
377
|
+
const to = ordered.findLastIndex(populated);
|
|
378
|
+
const first = ordered[from];
|
|
379
|
+
const last = ordered[to];
|
|
380
|
+
if (!first || !last)
|
|
381
|
+
return { frequency, kind: 'empty', periods: ordered };
|
|
382
|
+
return {
|
|
383
|
+
frequency,
|
|
384
|
+
kind: 'span',
|
|
385
|
+
before: ordered.slice(0, from),
|
|
386
|
+
first,
|
|
387
|
+
inside: ordered.slice(from, to + 1),
|
|
388
|
+
last,
|
|
389
|
+
after: ordered.slice(to + 1),
|
|
390
|
+
};
|
|
391
|
+
});
|
|
392
|
+
return {
|
|
393
|
+
frequencies,
|
|
394
|
+
...(latest && { latest: { code: latest.code, position: latest.position } }),
|
|
395
|
+
};
|
|
396
|
+
}
|
|
297
397
|
/**
|
|
298
398
|
* The periods a range excludes because a bound falls inside them, finest frequency
|
|
299
399
|
* first, for each of `frequencies` this module has a calendar span for.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurostat-periods.js","sourceRoot":"","sources":["../../src/services/eurostat-periods.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eurostat-periods.js","sourceRoot":"","sources":["../../src/services/eurostat-periods.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview XML entity decoding for the text Eurostat's XML documents carry — SDMX
|
|
3
|
+
* structures, the codelist dump, and SOAP fault strings.
|
|
4
|
+
* @module services/xml-entities
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* `text` with XML's five predefined entities and its numeric character references
|
|
8
|
+
* (`é`, `é`) decoded in one pass, so `&lt;` reads `<`. Names match in any
|
|
9
|
+
* case. A reference past U+10FFFF and any other entity stay as written; DTD-declared
|
|
10
|
+
* entities are not supported.
|
|
11
|
+
*/
|
|
12
|
+
export declare function decodeXmlEntities(text: string): string;
|
|
13
|
+
//# sourceMappingURL=xml-entities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml-entities.d.ts","sourceRoot":"","sources":["../../src/services/xml-entities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQtD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview XML entity decoding for the text Eurostat's XML documents carry — SDMX
|
|
3
|
+
* structures, the codelist dump, and SOAP fault strings.
|
|
4
|
+
* @module services/xml-entities
|
|
5
|
+
*/
|
|
6
|
+
const XML_ENTITY = /&(#x[\da-f]+|#\d+|amp|apos|gt|lt|quot);/gi;
|
|
7
|
+
const PREDEFINED_ENTITY = {
|
|
8
|
+
amp: '&',
|
|
9
|
+
apos: "'",
|
|
10
|
+
gt: '>',
|
|
11
|
+
lt: '<',
|
|
12
|
+
quot: '"',
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* `text` with XML's five predefined entities and its numeric character references
|
|
16
|
+
* (`é`, `é`) decoded in one pass, so `&lt;` reads `<`. Names match in any
|
|
17
|
+
* case. A reference past U+10FFFF and any other entity stay as written; DTD-declared
|
|
18
|
+
* entities are not supported.
|
|
19
|
+
*/
|
|
20
|
+
export function decodeXmlEntities(text) {
|
|
21
|
+
if (!text.includes('&'))
|
|
22
|
+
return text;
|
|
23
|
+
return text.replace(XML_ENTITY, (entity, token) => {
|
|
24
|
+
if (token[0] !== '#')
|
|
25
|
+
return PREDEFINED_ENTITY[token.toLowerCase()] ?? entity;
|
|
26
|
+
const hex = token[1] === 'x' || token[1] === 'X';
|
|
27
|
+
const codePoint = Number.parseInt(token.slice(hex ? 2 : 1), hex ? 16 : 10);
|
|
28
|
+
return codePoint <= 0x10ffff ? String.fromCodePoint(codePoint) : entity;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=xml-entities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml-entities.js","sourceRoot":"","sources":["../../src/services/xml-entities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,UAAU,GAAG,2CAA2C,CAAC;AAE/D,MAAM,iBAAiB,GAAqC;IAC1D,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,GAAG;IACT,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,GAAG;CACV,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,KAAa,EAAE,EAAE;QACxD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,iBAAiB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,MAAM,CAAC;QAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3E,OAAO,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/eurostat-mcp-server",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.3",
|
|
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",
|
|
@@ -83,26 +83,26 @@
|
|
|
83
83
|
"license": "Apache-2.0",
|
|
84
84
|
"packageManager": "bun@1.4.4",
|
|
85
85
|
"engines": {
|
|
86
|
-
"bun": ">=1.4.
|
|
86
|
+
"bun": ">=1.4.4",
|
|
87
87
|
"node": ">=24.0.0"
|
|
88
88
|
},
|
|
89
89
|
"publishConfig": {
|
|
90
90
|
"access": "public"
|
|
91
91
|
},
|
|
92
92
|
"dependencies": {
|
|
93
|
-
"@cyanheads/mcp-ts-core": "^0.13.
|
|
93
|
+
"@cyanheads/mcp-ts-core": "^0.13.22",
|
|
94
94
|
"@duckdb/node-api": "^2.0.0-r.1",
|
|
95
95
|
"pino-pretty": "^13.2.0",
|
|
96
96
|
"zod": "^4.6.7"
|
|
97
97
|
},
|
|
98
98
|
"devDependencies": {
|
|
99
|
-
"@biomejs/biome": "2.6.
|
|
99
|
+
"@biomejs/biome": "2.6.6",
|
|
100
100
|
"@socketsecurity/bun-security-scanner": "^1.1.3",
|
|
101
101
|
"@types/node": "26.6.6",
|
|
102
102
|
"depcheck": "^1.4.7",
|
|
103
103
|
"ignore": "^7.0.14",
|
|
104
104
|
"tsc-alias": "^1.9.10",
|
|
105
105
|
"typescript": "^7.0.2",
|
|
106
|
-
"vitest": "^5.0
|
|
106
|
+
"vitest": "^5.1.0"
|
|
107
107
|
}
|
|
108
108
|
}
|
package/server.json
CHANGED
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
"url": "https://eurostat.caseyjhand.com/mcp"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
|
-
"version": "0.11.
|
|
15
|
+
"version": "0.11.3",
|
|
16
16
|
"packages": [
|
|
17
17
|
{
|
|
18
18
|
"registryType": "npm",
|
|
19
19
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
20
20
|
"identifier": "@cyanheads/eurostat-mcp-server",
|
|
21
21
|
"runtimeHint": "npx",
|
|
22
|
-
"version": "0.11.
|
|
22
|
+
"version": "0.11.3",
|
|
23
23
|
"environmentVariables": [
|
|
24
24
|
{
|
|
25
25
|
"name": "EUROSTAT_CLAMP_LIMITS",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
},
|
|
73
73
|
{
|
|
74
74
|
"name": "EUROSTAT_BULK_TIMEOUT_MS",
|
|
75
|
-
"description": "Total allowance for one eurostat_download_dataset transfer across request retries, backoff and streaming body consumption, in milliseconds. Defaults to 120000.",
|
|
75
|
+
"description": "Total allowance for one eurostat_download_dataset transfer across request retries, backoff and streaming body consumption, and for each download that builds the dimension value index, in milliseconds. Defaults to 120000.",
|
|
76
76
|
"format": "string",
|
|
77
77
|
"isRequired": false,
|
|
78
78
|
"default": "120000"
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
129
129
|
"identifier": "@cyanheads/eurostat-mcp-server",
|
|
130
130
|
"runtimeHint": "npx",
|
|
131
|
-
"version": "0.11.
|
|
131
|
+
"version": "0.11.3",
|
|
132
132
|
"environmentVariables": [
|
|
133
133
|
{
|
|
134
134
|
"name": "MCP_TRANSPORT_TYPE",
|
|
@@ -221,7 +221,7 @@
|
|
|
221
221
|
},
|
|
222
222
|
{
|
|
223
223
|
"name": "EUROSTAT_BULK_TIMEOUT_MS",
|
|
224
|
-
"description": "Total allowance for one eurostat_download_dataset transfer across request retries, backoff and streaming body consumption, in milliseconds. Defaults to 120000.",
|
|
224
|
+
"description": "Total allowance for one eurostat_download_dataset transfer across request retries, backoff and streaming body consumption, and for each download that builds the dimension value index, in milliseconds. Defaults to 120000.",
|
|
225
225
|
"format": "string",
|
|
226
226
|
"isRequired": false,
|
|
227
227
|
"default": "120000"
|
|
@@ -4,7 +4,7 @@ description: Use with eurostat_* tools to compare countries or regions, analyse
|
|
|
4
4
|
license: Apache-2.0
|
|
5
5
|
metadata:
|
|
6
6
|
author: "cyanheads"
|
|
7
|
-
version: "1.
|
|
7
|
+
version: "1.2.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
## Scope
|
|
@@ -29,9 +29,9 @@ Keep codes as identifiers and labels as display text. Resolve codes within the c
|
|
|
29
29
|
- Before comparing observations, fix the statistical measure and every dimension that could change its meaning: unit, frequency, geography and any indicator, adjustment, demographic or classification breakdown present in the dataset. Inspect the labels rather than guessing a code from its abbreviation.
|
|
30
30
|
- Before interpreting a GDP comparison, distinguish economic size, per-inhabitant values and price-adjusted comparisons. For comparisons across countries, PPS removes price-level differences; changes in current-price PPS values are not automatically real growth. Consult [Eurostat's PPP guidance](https://ec.europa.eu/eurostat/en/web/purchasing-power-parities/information-data) when choosing the measure.
|
|
31
31
|
- Before a regional time-series comparison, establish the NUTS classification used by the data. A matching code or label alone does not establish unchanged boundaries. Eurostat revises NUTS and historical reconstruction depends on feasibility; consult [NUTS history and changes](https://ec.europa.eu/eurostat/en/web/nuts/history) and the dataset metadata when classifications differ. This server does not supply a concordance operation.
|
|
32
|
-
- Before claiming a series is absent, distinguish an unknown metadata bound, an unlisted page, an unmatched code, an empty combination of otherwise valid codes and a period range that excludes the period. Eurostat keeps only periods wholly inside since_period–until_period, per frequency, so a bound inside a period drops it; a notice or error names the bound to use. Inspect notices and discovery freshness; missing Comext discovery is not evidence that a known DS-* dataset is unavailable.
|
|
33
|
-
- Before comparing coverage across series, separate a period a series lacks from an observation published without a value. A query reports the former as absentCellCount (periods of a frequency a matched series carries, with no cell) and stages no row for it; obsCount and missingObsCount count only published cells. A download stages the former as a row with null obs_value and no flag, status or text (an unflagged ":"), counted in rowCount and missingCount, in absentCellCount when the series carries that frequency
|
|
34
|
-
- Before calling observations the latest available for each geography, inspect the selected slice's actual periods. The dataset's latest period can have no populated value for that slice
|
|
32
|
+
- Before claiming a series is absent, distinguish an unknown metadata bound, an unlisted page, an unmatched code (unmatchedValues), a valid code with no cell in the selected periods (emptyValues), an empty combination of otherwise valid codes and a period range that excludes the period. A code in emptyValues exists and can carry data in other periods or beside other filter values; its absence from the rows is not a statement about the dataset. Eurostat keeps only periods wholly inside since_period–until_period, per frequency, so a bound inside a period drops it; a notice or error names the bound to use. Inspect notices and discovery freshness; missing Comext discovery is not evidence that a known DS-* dataset is unavailable.
|
|
33
|
+
- Before comparing coverage across series, separate a period a series lacks from an observation published without a value. A query reports the former as absentCellCount (periods of a frequency a matched series carries, with no cell, counted from that frequency's first to its latest period with a cell in any series) and stages no row for it; a period before or after that span is named in a notice, not counted; obsCount and missingObsCount count only published cells. A download stages the former as a row with null obs_value and no flag, status or text (an unflagged ":"), counted in rowCount and missingCount, and in absentCellCount when the series carries that frequency and the period lies inside that frequency's span of downloaded observations. Unflagged rows outside the span (a notice names them) and at periods of a frequency the series has no observation of (the padding of a mixed-frequency slice) are left out of absentCellCount. Such a row is not an observation, and its period is not coverage; periodRange and timeRange leave it out. A flagged ":" or a text value is an observation.
|
|
34
|
+
- Before calling observations the latest available for each geography, inspect the selected slice's actual periods. The dataset's latest period can have no populated value for that slice, and last_n_periods counts back from the dataset's latest period, not the slice's. Read the notice naming the periods without cells; when every one follows the slice's latest period with a cell, raise last_n_periods as the notice advises, or select a since_period/until_period range ending at that period; until_period alone selects every period up to it. Do not report an empty latest-period selection as a zero.
|
|
35
35
|
- Before calculating totals or rankings, establish that the retained observations cover the intended population. Inline observations are a preview, not a random sample, and a "Same in all N rows shown" line describes those rows, not the match; a query's truncated=false does not prove the preview includes every matched row. Compare obsCount with the observations received or inspect the staged table. A bulk result with budgetExceeded is an ordered prefix, even when that prefix has been staged successfully. Narrow and refetch before presenting a complete total.
|
|
36
36
|
- Preserve missing numeric values, published text values, observation flags and confidentiality status. A null numeric value is not zero; a PRODCOM text value is not a numeric quantity. Carry relevant provisional, break-in-series or reliability flags into the interpretation.
|
|
37
37
|
- Before summing Comext observations, select a frequency and non-overlapping reporter, partner and product levels. Annual and monthly observations coexist, as do aggregates and their members. Do not sum TOTAL or EU aggregates alongside their constituents, or broad product groups alongside their subgroups.
|
|
@@ -40,7 +40,7 @@ Keep codes as identifiers and labels as display text. Resolve codes within the c
|
|
|
40
40
|
|
|
41
41
|
### Compare countries or regions
|
|
42
42
|
|
|
43
|
-
Resolve the question to a measure before selecting the dataset. Inspect dataset metadata and resolve the required dimension values, then fetch a bounded slice. Compare the same period and dimensional definition across places; if places have different latest periods, either use a common populated period or state each period explicitly. For regional trends, resolve classification compatibility before treating observations as a continuous series.
|
|
43
|
+
Resolve the question to a measure before selecting the dataset. Inspect dataset metadata and resolve the required dimension values, then fetch a bounded slice. Request one geographic level at a time with geo_level; to pick regions under one parent, list them with eurostat_get_dimension_values, geo_level and code_prefix (nuts2 with DE for German regions), then filter geo on those codes. Compare the same period and dimensional definition across places; if places have different latest periods, either use a common populated period or state each period explicitly. For regional trends, resolve classification compatibility before treating observations as a continuous series.
|
|
44
44
|
|
|
45
45
|
### Analyse a large slice or bulk extract
|
|
46
46
|
|
|
@@ -48,7 +48,7 @@ Use eurostat_query_dataset for a filtered slice and eurostat_download_dataset fo
|
|
|
48
48
|
|
|
49
49
|
When a call stages observations, the response carries canvasId and tableName. Call eurostat_dataframe_describe with that identifier as canvas_id for the staged table and column names before writing SQL, then eurostat_dataframe_query with a read-only query. Pass the same canvas_id back to a staging call to place further results beside the first; the tables expire with the canvas. Check that a table was actually returned rather than assuming every preview has a retained counterpart. Without the dataframe tools, narrow the request until the required observations can be obtained inline.
|
|
50
50
|
|
|
51
|
-
Bulk observations carry dimension codes without their label columns. To label them, use eurostat_get_dimension_values to stage the relevant dimension's code/label list on the existing canvas, describe the new table, and join on codes.
|
|
51
|
+
Bulk observations carry dimension codes without their label columns. To label them, use eurostat_get_dimension_values to stage the relevant dimension's code/label list on the existing canvas, describe the new table, and join on codes. A staged geo table holds every level, with a level column, unless geo_level was passed; filter level to the observations' level before joining or aggregating, because aggregates and regions overlap the countries they contain. A filtered inline value list does not imply that its staged table contains only that filter's matches.
|
|
52
52
|
|
|
53
53
|
### Join or aggregate observations
|
|
54
54
|
|
|
@@ -14,16 +14,16 @@ ORDER BY geo, time
|
|
|
14
14
|
|
|
15
15
|
If this returns rows, inspect the remaining dimensions. Restrict them or include them in the intended key before joining. Do not use DISTINCT to hide multiplied observations.
|
|
16
16
|
|
|
17
|
-
Attach a staged geographic value list without losing observations whose labels are absent:
|
|
17
|
+
Attach a staged geographic value list without losing observations whose labels are absent. A geo list staged without geo_level holds every level, so keep the level of the observations (here country) in the join, or aggregates and regions join beside the countries:
|
|
18
18
|
|
|
19
19
|
```sql
|
|
20
20
|
SELECT d.geo, g.label AS geo_label, d.time, d.obs_value
|
|
21
21
|
FROM observations_table AS d
|
|
22
|
-
LEFT JOIN geographic_labels AS g ON d.geo = g.code
|
|
22
|
+
LEFT JOIN geographic_labels AS g ON d.geo = g.code AND g.level = 'country'
|
|
23
23
|
ORDER BY d.geo, d.time
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
The ordering is total only when the selected slice has one row per geo/time pair. Otherwise add the other identifying dimensions as tie-breakers. A value-list table has code and label; an observation table produced by the bulk path has no dimension-label companions. Describe both tables instead of assuming their shapes match.
|
|
26
|
+
The ordering is total only when the selected slice has one row per geo/time pair. Otherwise add the other identifying dimensions as tie-breakers. A value-list table has code and label, and a geo list also level; an observation table produced by the bulk path has no dimension-label companions. Describe both tables instead of assuming their shapes match.
|
|
27
27
|
|
|
28
28
|
Inspect missingness alongside an aggregate:
|
|
29
29
|
|
|
@@ -37,7 +37,7 @@ ORDER BY geo
|
|
|
37
37
|
|
|
38
38
|
AVG ignores null numeric values. Use it only when that average answers the statistical question; do not replace missing observations with zero.
|
|
39
39
|
|
|
40
|
-
A table staged by eurostat_query_dataset has a row only for each published cell, so a period a series lacks is not a row; the query's absentCellCount counts those. A table staged by eurostat_download_dataset also holds those periods as rows with null obs_value, obs_flag, conf_status and (on DS-* tables) obs_value_text. To count the null cells that are observations, exclude them:
|
|
40
|
+
A table staged by eurostat_query_dataset has a row only for each published cell, so a period a series lacks is not a row; the query's absentCellCount counts those inside each frequency's span. A table staged by eurostat_download_dataset also holds those periods as rows with null obs_value, obs_flag, conf_status and (on DS-* tables) obs_value_text, including periods outside the span, which its absentCellCount leaves out. To count the null cells that are observations, exclude them:
|
|
41
41
|
|
|
42
42
|
```sql
|
|
43
43
|
SELECT geo,
|
|
@@ -51,6 +51,6 @@ GROUP BY geo
|
|
|
51
51
|
ORDER BY geo
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
On a DS-* table add OR obs_value_text IS NOT NULL to the observation test and AND obs_value_text IS NULL to the unflagged test; otherwise a text value such as KG counts as an unflagged row. In a mixed-frequency slice, compare each row's frequency dimension (freq on Comext) with the shape of its time code: an unflagged null row at a monthly period of an annual series is padding, not a gap. For DS-* tables, inspect obs_value_text before interpreting every null numeric cell as missing data. Inspect obs_flag and conf_status alongside the values before drawing conclusions.
|
|
54
|
+
On a DS-* table add OR obs_value_text IS NOT NULL to the observation test and AND obs_value_text IS NULL to the unflagged test; otherwise a text value such as KG counts as an unflagged row. In a mixed-frequency slice, compare each row's frequency dimension (freq on Comext) with the shape of its time code: an unflagged null row at a monthly period of an annual series is padding, not a gap, and one before the first or after the latest period any row of its frequency has an observation in is padding too. For DS-* tables, inspect obs_value_text before interpreting every null numeric cell as missing data. Inspect obs_flag and conf_status alongside the values before drawing conclusions.
|
|
55
55
|
|
|
56
56
|
When a SQL result is truncated, retrieve deterministic pages of an unchanged query with a total ORDER BY and LIMIT/OFFSET. Advance OFFSET by the returned rowCount. Restart at offset zero if the first query was unordered. Expired or changing tables and volatile expressions cannot provide stable paging. Integer counts may arrive as strings to preserve precision; do not coerce them to an unsafe JavaScript number.
|