@cyanheads/eurostat-mcp-server 0.6.5 → 0.8.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 (85) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/README.md +85 -85
  4. package/changelog/0.7.x/0.7.0.md +33 -0
  5. package/changelog/0.8.x/0.8.0.md +30 -0
  6. package/dist/config/server-config.d.ts +2 -0
  7. package/dist/config/server-config.d.ts.map +1 -1
  8. package/dist/config/server-config.js +13 -0
  9. package/dist/config/server-config.js.map +1 -1
  10. package/dist/index.js +2 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.d.ts.map +1 -1
  13. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.js +4 -2
  14. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.js.map +1 -1
  15. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js +1 -1
  16. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js.map +1 -1
  17. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.d.ts +1 -1
  18. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js +4 -4
  19. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js.map +1 -1
  20. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.d.ts +2 -2
  21. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js +4 -4
  22. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js.map +1 -1
  23. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts +16 -23
  24. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts.map +1 -1
  25. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js +156 -65
  26. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js.map +1 -1
  27. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.d.ts +3 -4
  28. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.d.ts.map +1 -1
  29. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js +8 -9
  30. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js.map +1 -1
  31. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts +21 -7
  32. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts.map +1 -1
  33. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js +115 -19
  34. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js.map +1 -1
  35. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts +10 -3
  36. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts.map +1 -1
  37. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js +156 -24
  38. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js.map +1 -1
  39. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts +2 -2
  40. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts.map +1 -1
  41. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js +19 -6
  42. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js.map +1 -1
  43. package/dist/mcp-server/tools/narrowing-advice.d.ts +22 -0
  44. package/dist/mcp-server/tools/narrowing-advice.d.ts.map +1 -0
  45. package/dist/mcp-server/tools/narrowing-advice.js +44 -0
  46. package/dist/mcp-server/tools/narrowing-advice.js.map +1 -0
  47. package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts +12 -1
  48. package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts.map +1 -1
  49. package/dist/services/eurostat-bulk/eurostat-bulk-service.js +66 -12
  50. package/dist/services/eurostat-bulk/eurostat-bulk-service.js.map +1 -1
  51. package/dist/services/eurostat-bulk/types.d.ts +5 -0
  52. package/dist/services/eurostat-bulk/types.d.ts.map +1 -1
  53. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts +47 -1
  54. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts.map +1 -1
  55. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js +188 -13
  56. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js.map +1 -1
  57. package/dist/services/eurostat-codelists.d.ts +20 -0
  58. package/dist/services/eurostat-codelists.d.ts.map +1 -1
  59. package/dist/services/eurostat-codelists.js +25 -0
  60. package/dist/services/eurostat-codelists.js.map +1 -1
  61. package/dist/services/eurostat-data/eurostat-data-service.d.ts +78 -9
  62. package/dist/services/eurostat-data/eurostat-data-service.d.ts.map +1 -1
  63. package/dist/services/eurostat-data/eurostat-data-service.js +306 -51
  64. package/dist/services/eurostat-data/eurostat-data-service.js.map +1 -1
  65. package/dist/services/eurostat-data/sdmx-metadata.d.ts +26 -0
  66. package/dist/services/eurostat-data/sdmx-metadata.d.ts.map +1 -1
  67. package/dist/services/eurostat-data/sdmx-metadata.js +38 -1
  68. package/dist/services/eurostat-data/sdmx-metadata.js.map +1 -1
  69. package/dist/services/eurostat-data/types.d.ts +38 -2
  70. package/dist/services/eurostat-data/types.d.ts.map +1 -1
  71. package/dist/services/eurostat-data/types.js.map +1 -1
  72. package/dist/services/eurostat-hosts.d.ts +17 -0
  73. package/dist/services/eurostat-hosts.d.ts.map +1 -0
  74. package/dist/services/eurostat-hosts.js +23 -0
  75. package/dist/services/eurostat-hosts.js.map +1 -0
  76. package/dist/services/eurostat-periods.d.ts +68 -0
  77. package/dist/services/eurostat-periods.d.ts.map +1 -0
  78. package/dist/services/eurostat-periods.js +204 -0
  79. package/dist/services/eurostat-periods.js.map +1 -0
  80. package/dist/services/shared-load.d.ts +16 -0
  81. package/dist/services/shared-load.d.ts.map +1 -0
  82. package/dist/services/shared-load.js +27 -0
  83. package/dist/services/shared-load.js.map +1 -0
  84. package/package.json +2 -2
  85. package/server.json +31 -3
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @fileoverview Await a load shared between concurrent callers without letting one
3
+ * caller's cancellation reach the others.
4
+ * @module services/shared-load
5
+ */
6
+ import { requestCancelled } from '@cyanheads/mcp-ts-core/errors';
7
+ /**
8
+ * Settle with a shared load for one caller, or reject as soon as that caller's own
9
+ * signal aborts.
10
+ *
11
+ * `share` returns the in-flight or settled load, started without any caller's signal,
12
+ * so an abort here only releases this caller: the load keeps running for everyone
13
+ * else awaiting it and for the cache it fills. A caller already aborted is refused
14
+ * before `share` runs, so it never starts a download it will not wait for.
15
+ */
16
+ export function awaitShared(signal, share) {
17
+ const cancelled = () => requestCancelled('The request was cancelled while waiting on a shared Eurostat download.');
18
+ if (signal.aborted)
19
+ return Promise.reject(cancelled());
20
+ const shared = share();
21
+ return new Promise((resolve, reject) => {
22
+ const onAbort = () => reject(cancelled());
23
+ signal.addEventListener('abort', onAbort, { once: true });
24
+ shared.then(resolve, reject).finally(() => signal.removeEventListener('abort', onAbort));
25
+ });
26
+ }
27
+ //# sourceMappingURL=shared-load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-load.js","sourceRoot":"","sources":["../../src/services/shared-load.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAI,MAAmB,EAAE,KAAuB;IACzE,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,gBAAgB,CAAC,wEAAwE,CAAC,CAAC;IAC7F,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3F,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.6.5",
3
+ "version": "0.8.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",
@@ -95,7 +95,7 @@
95
95
  },
96
96
  "devDependencies": {
97
97
  "@biomejs/biome": "2.5.14",
98
- "@socketsecurity/bun-security-scanner": "^1.1.2",
98
+ "@socketsecurity/bun-security-scanner": "^1.1.3",
99
99
  "@types/node": "26.6.2",
100
100
  "depcheck": "^1.4.7",
101
101
  "ignore": "^7.0.9",
package/server.json CHANGED
@@ -12,14 +12,14 @@
12
12
  "url": "https://eurostat.caseyjhand.com/mcp"
13
13
  }
14
14
  ],
15
- "version": "0.6.5",
15
+ "version": "0.8.0",
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": "bun",
22
- "version": "0.6.5",
22
+ "version": "0.8.0",
23
23
  "packageArguments": [
24
24
  {
25
25
  "type": "positional",
@@ -45,6 +45,13 @@
45
45
  "isRequired": false,
46
46
  "default": "https://ec.europa.eu/eurostat/api/dissemination"
47
47
  },
48
+ {
49
+ "name": "EUROSTAT_COMEXT_BASE_URL",
50
+ "description": "Base URL of the Comext dissemination host, which serves every DS-* dataset code (detailed trade and PRODCOM). Override when using a mirror or proxy.",
51
+ "format": "string",
52
+ "isRequired": false,
53
+ "default": "https://ec.europa.eu/eurostat/api/comext/dissemination"
54
+ },
48
55
  {
49
56
  "name": "EUROSTAT_REQUEST_TIMEOUT_MS",
50
57
  "description": "HTTP request timeout in milliseconds for Eurostat API calls.",
@@ -52,6 +59,13 @@
52
59
  "isRequired": false,
53
60
  "default": "30000"
54
61
  },
62
+ {
63
+ "name": "EUROSTAT_METADATA_TIMEOUT_MS",
64
+ "description": "HTTP timeout for one dataset's SDMX dataflow structure, in milliseconds. Held separate from EUROSTAT_REQUEST_TIMEOUT_MS because the structure carries a label for every code the dataset uses: 23 MB, uncompressed, for DS-045409. Defaults to 2 minutes.",
65
+ "format": "string",
66
+ "isRequired": false,
67
+ "default": "120000"
68
+ },
55
69
  {
56
70
  "name": "EUROSTAT_TOC_CACHE_TTL_MS",
57
71
  "description": "How long a fetched catalogue TOC stays usable before the next catalogue call refreshes it, in milliseconds. Defaults to 12 hours.",
@@ -110,7 +124,7 @@
110
124
  "registryBaseUrl": "https://registry.npmjs.org",
111
125
  "identifier": "@cyanheads/eurostat-mcp-server",
112
126
  "runtimeHint": "bun",
113
- "version": "0.6.5",
127
+ "version": "0.8.0",
114
128
  "packageArguments": [
115
129
  {
116
130
  "type": "positional",
@@ -170,6 +184,13 @@
170
184
  "isRequired": false,
171
185
  "default": "https://ec.europa.eu/eurostat/api/dissemination"
172
186
  },
187
+ {
188
+ "name": "EUROSTAT_COMEXT_BASE_URL",
189
+ "description": "Base URL of the Comext dissemination host, which serves every DS-* dataset code (detailed trade and PRODCOM). Override when using a mirror or proxy.",
190
+ "format": "string",
191
+ "isRequired": false,
192
+ "default": "https://ec.europa.eu/eurostat/api/comext/dissemination"
193
+ },
173
194
  {
174
195
  "name": "EUROSTAT_REQUEST_TIMEOUT_MS",
175
196
  "description": "HTTP request timeout in milliseconds for Eurostat API calls.",
@@ -177,6 +198,13 @@
177
198
  "isRequired": false,
178
199
  "default": "30000"
179
200
  },
201
+ {
202
+ "name": "EUROSTAT_METADATA_TIMEOUT_MS",
203
+ "description": "HTTP timeout for one dataset's SDMX dataflow structure, in milliseconds. Held separate from EUROSTAT_REQUEST_TIMEOUT_MS because the structure carries a label for every code the dataset uses: 23 MB, uncompressed, for DS-045409. Defaults to 2 minutes.",
204
+ "format": "string",
205
+ "isRequired": false,
206
+ "default": "120000"
207
+ },
180
208
  {
181
209
  "name": "EUROSTAT_TOC_CACHE_TTL_MS",
182
210
  "description": "How long a fetched catalogue TOC stays usable before the next catalogue call refreshes it, in milliseconds. Defaults to 12 hours.",