@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.
- package/AGENTS.md +17 -5
- package/CLAUDE.md +17 -5
- package/Dockerfile +9 -5
- package/README.md +63 -129
- package/changelog/0.10.x/0.10.1.md +27 -0
- package/changelog/0.11.x/0.11.0.md +33 -0
- package/dist/config/server-config.d.ts +1 -0
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +9 -4
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +29 -16
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/clamp-read-limit.d.ts +11 -0
- package/dist/mcp-server/tools/clamp-read-limit.d.ts.map +1 -0
- package/dist/mcp-server/tools/clamp-read-limit.js +14 -0
- package/dist/mcp-server/tools/clamp-read-limit.js.map +1 -0
- package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js +6 -5
- package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.d.ts +3 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js +49 -33
- 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 +100 -0
- 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 +24 -13
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts +70 -1
- 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 +35 -54
- 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 +103 -0
- 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 +43 -25
- 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 +45 -0
- 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 +12 -9
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js.map +1 -1
- package/dist/mcp-server/tools/value-list-paging.d.ts +1 -29
- package/dist/mcp-server/tools/value-list-paging.d.ts.map +1 -1
- package/dist/mcp-server/tools/value-list-paging.js +1 -47
- package/dist/mcp-server/tools/value-list-paging.js.map +1 -1
- package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts.map +1 -1
- package/dist/services/eurostat-bulk/eurostat-bulk-service.js +72 -24
- package/dist/services/eurostat-bulk/eurostat-bulk-service.js.map +1 -1
- package/dist/services/eurostat-bulk/types.d.ts +1 -1
- package/dist/services/eurostat-bulk/types.d.ts.map +1 -1
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts +1 -0
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts.map +1 -1
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js +29 -9
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js.map +1 -1
- package/dist/services/eurostat-data/eurostat-data-service.d.ts.map +1 -1
- package/dist/services/eurostat-data/eurostat-data-service.js +32 -14
- package/dist/services/eurostat-data/eurostat-data-service.js.map +1 -1
- package/dist/services/eurostat-data/types.d.ts +4 -2
- package/dist/services/eurostat-data/types.d.ts.map +1 -1
- package/dist/services/eurostat-data/types.js +2 -2
- package/dist/services/eurostat-data/types.js.map +1 -1
- package/package.json +11 -10
- package/server.json +31 -17
- package/skills/eurostat-guide/SKILL.md +60 -0
- 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.
|