@aborruso/ckan-mcp-server 0.4.57 → 0.4.59
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/LOG.md +17 -0
- package/dist/index.js +30 -1
- package/dist/worker.js +119 -100
- package/package.json +3 -1
package/LOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# LOG
|
|
2
2
|
|
|
3
|
+
## 2026-03-03 (v0.4.59)
|
|
4
|
+
|
|
5
|
+
- packaging: add DXT one-click install support — `manifest.json` + `npm run pack:dxt` script produces `ckan-mcp-server.dxt` for Claude Desktop
|
|
6
|
+
- docs: add "One-click install" section in README Claude Desktop section
|
|
7
|
+
- release workflow: DXT artifact now uploaded to GitHub releases
|
|
8
|
+
|
|
9
|
+
## 2026-03-02 (v0.4.58)
|
|
10
|
+
|
|
11
|
+
- tools: add HVD note on synthesis queries — when `q=*:*` + org/tag facets (or `rows=0`) on dati.gov.it, auto-fetch real-time HVD count and append EU Reg. 2023/138 note to markdown output
|
|
12
|
+
- portals: add `hvd.category_field` config to dati.gov.it in `portals.json`
|
|
13
|
+
- utils: export `getPortalHvdConfig()` from `portal-config.ts`
|
|
14
|
+
|
|
15
|
+
## 2026-03-02
|
|
16
|
+
|
|
17
|
+
- worker: enable Cloudflare Workers Logs (`[observability]` in `wrangler.toml`)
|
|
18
|
+
- worker: log structured JSON for every tool call (tool, server, q, fq, id, sql, etc.)
|
|
19
|
+
|
|
3
20
|
## 2026-03-02 (v0.4.57)
|
|
4
21
|
|
|
5
22
|
- portals: add `data.stadt-zuerich.ch` (City of Zurich) with custom `organization_view_url` pointing to CKAN backend
|
package/dist/index.js
CHANGED
|
@@ -34,6 +34,9 @@ var portals_default = {
|
|
|
34
34
|
search: {
|
|
35
35
|
force_text_field: true
|
|
36
36
|
},
|
|
37
|
+
hvd: {
|
|
38
|
+
category_field: "hvd_category"
|
|
39
|
+
},
|
|
37
40
|
dataset_view_url: "https://www.dati.gov.it/view-dataset/dataset?id={id}",
|
|
38
41
|
organization_view_url: "https://www.dati.gov.it/view-dataset?organization={name}"
|
|
39
42
|
},
|
|
@@ -173,6 +176,10 @@ function getPortalApiUrlForHostname(hostname) {
|
|
|
173
176
|
});
|
|
174
177
|
return portal ? normalizeUrl(portal.api_url) : null;
|
|
175
178
|
}
|
|
179
|
+
function getPortalHvdConfig(serverUrl) {
|
|
180
|
+
const portal = getPortalConfig(serverUrl);
|
|
181
|
+
return portal?.hvd ?? null;
|
|
182
|
+
}
|
|
176
183
|
function getPortalApiPath(serverUrl) {
|
|
177
184
|
const portal = getPortalConfig(serverUrl);
|
|
178
185
|
return portal?.api_path || "/api/3/action";
|
|
@@ -1016,6 +1023,28 @@ Typical workflow: ckan_package_search \u2192 ckan_package_show (get full metadat
|
|
|
1016
1023
|
content: [{ type: "text", text: truncateText(JSON.stringify(result, null, 2)) }]
|
|
1017
1024
|
};
|
|
1018
1025
|
}
|
|
1026
|
+
let hvdNote = "";
|
|
1027
|
+
const isSynthesisQuery = (params.q === "*:*" || params.q === void 0) && (effectiveRows === 0 || params.facet_field && params.facet_field.some(
|
|
1028
|
+
(f) => ["organization", "tags", "groups", "res_format"].includes(f)
|
|
1029
|
+
));
|
|
1030
|
+
if (isSynthesisQuery) {
|
|
1031
|
+
const hvdConfig = getPortalHvdConfig(params.server_url);
|
|
1032
|
+
if (hvdConfig) {
|
|
1033
|
+
try {
|
|
1034
|
+
const hvdResult = await makeCkanRequest(
|
|
1035
|
+
params.server_url,
|
|
1036
|
+
"package_search",
|
|
1037
|
+
{ q: `${hvdConfig.category_field}:*`, rows: 0 }
|
|
1038
|
+
);
|
|
1039
|
+
if (hvdResult.count > 0) {
|
|
1040
|
+
hvdNote = `> **High Value Datasets (HVD)**: This portal contains **${hvdResult.count} datasets** classified as High Value Datasets under EU Regulation 2023/138.
|
|
1041
|
+
|
|
1042
|
+
`;
|
|
1043
|
+
}
|
|
1044
|
+
} catch {
|
|
1045
|
+
}
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1019
1048
|
let markdown = `# CKAN Package Search Results
|
|
1020
1049
|
|
|
1021
1050
|
**Server**: ${params.server_url}
|
|
@@ -1031,7 +1060,7 @@ ${params.fq ? `**Filter**: ${params.fq}
|
|
|
1031
1060
|
**Total Results**: ${result.count}
|
|
1032
1061
|
**Showing**: ${result.results.length} results (from ${effectiveStart})
|
|
1033
1062
|
|
|
1034
|
-
`;
|
|
1063
|
+
${hvdNote}`;
|
|
1035
1064
|
if (result.facets && Object.keys(result.facets).length > 0) {
|
|
1036
1065
|
markdown += `## Facets
|
|
1037
1066
|
|