@cyanheads/eurostat-mcp-server 0.10.0 → 0.11.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 (63) hide show
  1. package/AGENTS.md +17 -5
  2. package/CLAUDE.md +17 -5
  3. package/Dockerfile +9 -5
  4. package/README.md +63 -129
  5. package/changelog/0.10.x/0.10.1.md +27 -0
  6. package/changelog/0.11.x/0.11.0.md +33 -0
  7. package/dist/config/server-config.d.ts +1 -0
  8. package/dist/config/server-config.d.ts.map +1 -1
  9. package/dist/config/server-config.js +9 -4
  10. package/dist/config/server-config.js.map +1 -1
  11. package/dist/index.js +29 -16
  12. package/dist/index.js.map +1 -1
  13. package/dist/mcp-server/tools/clamp-read-limit.d.ts +11 -0
  14. package/dist/mcp-server/tools/clamp-read-limit.d.ts.map +1 -0
  15. package/dist/mcp-server/tools/clamp-read-limit.js +14 -0
  16. package/dist/mcp-server/tools/clamp-read-limit.js.map +1 -0
  17. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.d.ts.map +1 -1
  18. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js +6 -5
  19. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js.map +1 -1
  20. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.d.ts +3 -1
  21. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.d.ts.map +1 -1
  22. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js +49 -33
  23. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js.map +1 -1
  24. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts +100 -0
  25. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts.map +1 -1
  26. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js +24 -13
  27. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js.map +1 -1
  28. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts +70 -1
  29. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts.map +1 -1
  30. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js +35 -54
  31. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js.map +1 -1
  32. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts +103 -0
  33. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts.map +1 -1
  34. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js +43 -25
  35. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js.map +1 -1
  36. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts +45 -0
  37. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts.map +1 -1
  38. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js +12 -9
  39. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js.map +1 -1
  40. package/dist/mcp-server/tools/value-list-paging.d.ts +1 -29
  41. package/dist/mcp-server/tools/value-list-paging.d.ts.map +1 -1
  42. package/dist/mcp-server/tools/value-list-paging.js +1 -47
  43. package/dist/mcp-server/tools/value-list-paging.js.map +1 -1
  44. package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts.map +1 -1
  45. package/dist/services/eurostat-bulk/eurostat-bulk-service.js +72 -24
  46. package/dist/services/eurostat-bulk/eurostat-bulk-service.js.map +1 -1
  47. package/dist/services/eurostat-bulk/types.d.ts +1 -1
  48. package/dist/services/eurostat-bulk/types.d.ts.map +1 -1
  49. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts +1 -0
  50. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts.map +1 -1
  51. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js +29 -9
  52. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js.map +1 -1
  53. package/dist/services/eurostat-data/eurostat-data-service.d.ts.map +1 -1
  54. package/dist/services/eurostat-data/eurostat-data-service.js +32 -14
  55. package/dist/services/eurostat-data/eurostat-data-service.js.map +1 -1
  56. package/dist/services/eurostat-data/types.d.ts +4 -2
  57. package/dist/services/eurostat-data/types.d.ts.map +1 -1
  58. package/dist/services/eurostat-data/types.js +2 -2
  59. package/dist/services/eurostat-data/types.js.map +1 -1
  60. package/package.json +11 -10
  61. package/server.json +31 -17
  62. package/skills/eurostat-guide/SKILL.md +60 -0
  63. package/skills/eurostat-guide/references/sql-analysis.md +40 -0
@@ -0,0 +1,40 @@
1
+ # SQL analysis patterns
2
+
3
+ Use a single read-only SELECT through eurostat_dataframe_query. Replace the illustrative names below with table and column names returned by eurostat_dataframe_describe. String values use single quotes; identifiers needing quotation use double quotes. These examples assume the described observation table has geo, time and obs_value columns.
4
+
5
+ Before a join expected to have one observation per geography and period, inspect duplicate keys:
6
+
7
+ ```sql
8
+ SELECT geo, time, COUNT(*) AS observations
9
+ FROM observations_table
10
+ GROUP BY geo, time
11
+ HAVING COUNT(*) > 1
12
+ ORDER BY geo, time
13
+ ```
14
+
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
+
17
+ Attach a staged geographic value list without losing observations whose labels are absent:
18
+
19
+ ```sql
20
+ SELECT d.geo, g.label AS geo_label, d.time, d.obs_value
21
+ FROM observations_table AS d
22
+ LEFT JOIN geographic_labels AS g ON d.geo = g.code
23
+ ORDER BY d.geo, d.time
24
+ ```
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.
27
+
28
+ Inspect missingness alongside an aggregate:
29
+
30
+ ```sql
31
+ SELECT geo, COUNT(*) AS cells, COUNT(obs_value) AS numeric_cells,
32
+ AVG(obs_value) AS mean_value
33
+ FROM observations_table
34
+ GROUP BY geo
35
+ ORDER BY geo
36
+ ```
37
+
38
+ AVG ignores null numeric values. Use it only when that average answers the statistical question; do not replace missing observations with zero. 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.
39
+
40
+ 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.