@opendata.cat/mcp-server 0.0.3 → 0.0.5

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/README.md CHANGED
@@ -17,13 +17,18 @@ Un projecte d'**[opendata.cat](https://opendata.cat)** — associacio sense anim
17
17
 
18
18
  ## Portals disponibles
19
19
 
20
- | Portal | Datasets | API | Dades |
21
- |--------|----------|-----|-------|
22
- | [Generalitat de Catalunya](https://analisi.transparenciacatalunya.cat) | 1.058 | Socrata | Medi ambient, salut, educacio, economia, transport... |
23
- | [Ajuntament de Barcelona](https://opendata-ajuntament.barcelona.cat) | 555 | CKAN | Urbanisme, mobilitat, cultura, demografia, pressupostos... |
24
- | [Diputacio de Barcelona](https://dadesobertes.diba.cat) | 90 | CKAN | Municipis, equipaments, patrimoni, energia, territori... |
25
-
26
- El cataleg s'actualitza automaticament cada setmana.
20
+ | Portal | Datasets | Queryables | API | Dades |
21
+ |--------|----------|-----------|-----|-------|
22
+ | [Generalitat de Catalunya](https://analisi.transparenciacatalunya.cat) | 1.058 | 1.058 | Socrata | Medi ambient, salut, educacio, economia, transport... |
23
+ | [Ajuntament de Barcelona](https://opendata-ajuntament.barcelona.cat) | 555 | ~464 | CKAN | Urbanisme, mobilitat, cultura, demografia, pressupostos... |
24
+ | [Diputacio de Barcelona](https://dadesobertes.diba.cat) | 90 | ~29 | REST | Municipis, equipaments, patrimoni, energia, territori... |
25
+
26
+ El cataleg s'actualitza automaticament cada setmana. Cada endpoint es valida per assegurar que funciona.
27
+
28
+ **Tipus d'acces:**
29
+ - **Queryable** (socrata, ckan, diba): consulta amb filtres, cerca i paginacio directa
30
+ - **File download**: descarrega directa de CSV, JSON, XLSX o fitxers GIS
31
+ - **Restricted**: requereix token d'autenticacio
27
32
 
28
33
  ## Installacio rapida
29
34
 
package/dist/api.d.ts CHANGED
@@ -14,7 +14,7 @@ export interface DatasetDetail {
14
14
  description: string;
15
15
  category: string;
16
16
  tags: string[];
17
- api_type: "socrata" | "ckan" | "diba";
17
+ api_type: string;
18
18
  api_endpoint: string;
19
19
  formats: string[];
20
20
  fields: {
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import { queryCkan } from "./clients/ckan.js";
8
8
  import { queryDiba } from "./clients/diba.js";
9
9
  const server = new McpServer({
10
10
  name: "opendata-cat",
11
- version: "0.0.3",
11
+ version: "0.0.5",
12
12
  });
13
13
  // Tool 1: search_datasets
14
14
  server.tool("search_datasets", "Cerca datasets de dades obertes catalanes per text lliure. Retorna nom, descripció, portal i formats.", {
@@ -57,6 +57,18 @@ server.tool("query_dataset", "Executa una consulta contra un dataset i retorna f
57
57
  if (!dataset) {
58
58
  return { content: [{ type: "text", text: `Dataset '${dataset_id}' no trobat.` }] };
59
59
  }
60
+ // Datasets no queryables: retornar enllaç directe
61
+ if (dataset.api_type === "file_download" || dataset.api_type === "restricted") {
62
+ const msg = dataset.api_type === "restricted"
63
+ ? `Aquest dataset requereix autenticació (token). Accedeix-hi directament:`
64
+ : `Aquest dataset no té API de consulta. Descarrega'l directament:`;
65
+ return {
66
+ content: [{
67
+ type: "text",
68
+ text: `${msg}\n${dataset.api_endpoint}\n\nFormats disponibles: ${dataset.formats.join(", ")}`,
69
+ }],
70
+ };
71
+ }
60
72
  try {
61
73
  let results;
62
74
  if (dataset.api_type === "socrata") {
@@ -66,10 +78,18 @@ server.tool("query_dataset", "Executa una consulta contra un dataset i retorna f
66
78
  const data = await queryDiba(dataset.api_endpoint, filters, search, limit, offset);
67
79
  results = data.elements;
68
80
  }
69
- else {
81
+ else if (dataset.api_type === "ckan") {
70
82
  const data = await queryCkan(dataset.api_endpoint, filters, search, limit, offset);
71
83
  results = data.records;
72
84
  }
85
+ else {
86
+ return {
87
+ content: [{
88
+ type: "text",
89
+ text: `Tipus d'API '${dataset.api_type}' no suportat per consulta directa.\nAccedeix al dataset: ${dataset.api_endpoint}`,
90
+ }],
91
+ };
92
+ }
73
93
  return {
74
94
  content: [{
75
95
  type: "text",
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.0.3",
6
+ "version": "0.0.5",
7
7
  "description": "Servidor MCP per consultar les dades obertes públiques de Catalunya",
8
8
  "type": "module",
9
9
  "main": "dist/index.js",