@aborruso/ckan-mcp-server 0.4.2 โ 0.4.4
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/EXAMPLES.md +27 -0
- package/LOG.md +13 -0
- package/PRD.md +6 -6
- package/README.md +54 -42
- package/dist/index.js +498 -1
- package/dist/worker.js +147 -36
- package/package.json +1 -1
package/EXAMPLES.md
CHANGED
|
@@ -210,6 +210,14 @@ ckan_datastore_search({
|
|
|
210
210
|
})
|
|
211
211
|
```
|
|
212
212
|
|
|
213
|
+
### SQL query
|
|
214
|
+
```typescript
|
|
215
|
+
ckan_datastore_search_sql({
|
|
216
|
+
server_url: "https://demo.ckan.org",
|
|
217
|
+
sql: "SELECT Country, COUNT(*) AS total FROM \"5b3cf3a8-9a58-45ee-8e1a-4d98b8320c9a\" GROUP BY Country ORDER BY total DESC LIMIT 10"
|
|
218
|
+
})
|
|
219
|
+
```
|
|
220
|
+
|
|
213
221
|
## Advanced Solr Searches
|
|
214
222
|
|
|
215
223
|
### AND combination
|
|
@@ -285,6 +293,25 @@ ckan_package_search({
|
|
|
285
293
|
})
|
|
286
294
|
```
|
|
287
295
|
|
|
296
|
+
## Tags and Groups
|
|
297
|
+
|
|
298
|
+
### List groups
|
|
299
|
+
```typescript
|
|
300
|
+
ckan_group_list({
|
|
301
|
+
server_url: "https://www.dati.gov.it/opendata",
|
|
302
|
+
all_fields: true,
|
|
303
|
+
limit: 20
|
|
304
|
+
})
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Show group details
|
|
308
|
+
```typescript
|
|
309
|
+
ckan_group_show({
|
|
310
|
+
server_url: "https://www.dati.gov.it/opendata",
|
|
311
|
+
id: "ambiente"
|
|
312
|
+
})
|
|
313
|
+
```
|
|
314
|
+
|
|
288
315
|
## Advanced Solr Query Features
|
|
289
316
|
|
|
290
317
|
CKAN uses Apache Solr for search. The `q` parameter supports advanced Solr query syntax including fuzzy matching, proximity search, boosting, and complex boolean logic.
|
package/LOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
## 2026-01-10
|
|
4
4
|
|
|
5
|
+
### Version 0.4.4 - DataStore SQL
|
|
6
|
+
- **Tool**: Added `ckan_datastore_search_sql`
|
|
7
|
+
- **Docs**: Updated README/EXAMPLES/PRD for SQL support
|
|
8
|
+
- **Tests**: Added SQL fixture and checks
|
|
9
|
+
|
|
10
|
+
## 2026-01-10
|
|
11
|
+
|
|
12
|
+
### Version 0.4.3 - Tags and Groups
|
|
13
|
+
- **Tags**: Added `ckan_tag_list` with faceting and filtering
|
|
14
|
+
- **Groups**: Added `ckan_group_list`, `ckan_group_show`, `ckan_group_search`
|
|
15
|
+
- **Docs**: Updated README with examples and tool list
|
|
16
|
+
- **Tests**: Added tag/group fixtures and tests
|
|
17
|
+
|
|
5
18
|
### Version 0.4.2 - Packaging
|
|
6
19
|
- **npm package**: Added `.npmignore` to exclude dev artifacts
|
|
7
20
|
|
package/PRD.md
CHANGED
|
@@ -653,9 +653,9 @@ ckan_package_search({
|
|
|
653
653
|
- Max 32.000 record per query
|
|
654
654
|
- Dipende dalla configurazione del server CKAN
|
|
655
655
|
|
|
656
|
-
5. **
|
|
657
|
-
-
|
|
658
|
-
-
|
|
656
|
+
5. **SQL Support Limitations**:
|
|
657
|
+
- `ckan_datastore_search_sql` funziona solo se il portale espone l'endpoint SQL
|
|
658
|
+
- Alcuni portali disabilitano SQL per motivi di sicurezza
|
|
659
659
|
|
|
660
660
|
6. **Timeout**:
|
|
661
661
|
- 30 secondi fissi per HTTP request
|
|
@@ -696,9 +696,9 @@ ckan_package_search({
|
|
|
696
696
|
- API key per endpoint privati
|
|
697
697
|
- OAuth per portali che lo supportano
|
|
698
698
|
|
|
699
|
-
- [
|
|
700
|
-
-
|
|
701
|
-
-
|
|
699
|
+
- [x] **SQL Query Support**
|
|
700
|
+
- Implementato `ckan_datastore_search_sql`
|
|
701
|
+
- Richiede portali con DataStore SQL attivo
|
|
702
702
|
|
|
703
703
|
- [ ] **Caching Layer**
|
|
704
704
|
- Cache risultati frequenti
|
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# CKAN MCP Server
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@aborruso/ckan-mcp-server)
|
|
4
|
+
|
|
3
5
|
MCP (Model Context Protocol) server for interacting with CKAN-based open data portals.
|
|
4
6
|
|
|
5
7
|
## Features
|
|
@@ -12,14 +14,14 @@ MCP (Model Context Protocol) server for interacting with CKAN-based open data po
|
|
|
12
14
|
- ๐จ Output in Markdown or JSON format
|
|
13
15
|
- โก Pagination and faceting support
|
|
14
16
|
- ๐ MCP Resource Templates for direct data access
|
|
15
|
-
- ๐งช Comprehensive test suite (
|
|
17
|
+
- ๐งช Comprehensive test suite (120 tests, 100% passing)
|
|
16
18
|
|
|
17
19
|
## Installation
|
|
18
20
|
|
|
19
21
|
### From npm (recommended)
|
|
20
22
|
|
|
21
23
|
```bash
|
|
22
|
-
npm install ckan-mcp-server
|
|
24
|
+
npm install -g @aborruso/ckan-mcp-server
|
|
23
25
|
```
|
|
24
26
|
|
|
25
27
|
### From source
|
|
@@ -34,7 +36,7 @@ npm install
|
|
|
34
36
|
# Build with esbuild (fast, ~4ms)
|
|
35
37
|
npm run build
|
|
36
38
|
|
|
37
|
-
# Run tests (
|
|
39
|
+
# Run tests (120 tests)
|
|
38
40
|
npm test
|
|
39
41
|
```
|
|
40
42
|
|
|
@@ -76,38 +78,19 @@ TRANSPORT=http PORT=3000 npm start
|
|
|
76
78
|
|
|
77
79
|
**Best for**: Global access, zero infrastructure, free hosting
|
|
78
80
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
**Prerequisites**:
|
|
82
|
-
- Cloudflare account (free): https://dash.cloudflare.com/sign-up
|
|
83
|
-
- Wrangler CLI: `npm install -g wrangler`
|
|
84
|
-
|
|
85
|
-
**Quick Deploy**:
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
# Clone repository
|
|
89
|
-
git clone https://github.com/aborruso/ckan-mcp-server.git
|
|
90
|
-
cd ckan-mcp-server
|
|
91
|
-
|
|
92
|
-
# Install dependencies
|
|
93
|
-
npm install
|
|
94
|
-
|
|
95
|
-
# Authenticate with Cloudflare
|
|
96
|
-
wrangler login
|
|
81
|
+
Use the public Workers endpoint (no local install required):
|
|
97
82
|
|
|
98
|
-
|
|
99
|
-
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"mcpServers": {
|
|
86
|
+
"ckan": {
|
|
87
|
+
"url": "https://ckan-mcp-server.andy-pr.workers.dev/mcp"
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
100
91
|
```
|
|
101
92
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
**Free tier includes**:
|
|
105
|
-
- 100,000 requests/day
|
|
106
|
-
- Global edge deployment
|
|
107
|
-
- Automatic HTTPS
|
|
108
|
-
- No cold starts
|
|
109
|
-
|
|
110
|
-
For detailed deployment instructions, see [DEPLOYMENT.md](docs/DEPLOYMENT.md).
|
|
93
|
+
Want your own deployment? See [DEPLOYMENT.md](docs/DEPLOYMENT.md).
|
|
111
94
|
|
|
112
95
|
## Claude Desktop Configuration
|
|
113
96
|
|
|
@@ -137,22 +120,16 @@ Then add to `claude_desktop_config.json`:
|
|
|
137
120
|
}
|
|
138
121
|
```
|
|
139
122
|
|
|
140
|
-
### Option 2: Local Installation
|
|
123
|
+
### Option 2: Local Installation (Optional)
|
|
141
124
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
npm install @aborruso/ckan-mcp-server
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
Then add to `claude_desktop_config.json`:
|
|
125
|
+
If you installed locally (see Installation), use this config:
|
|
149
126
|
|
|
150
127
|
```json
|
|
151
128
|
{
|
|
152
129
|
"mcpServers": {
|
|
153
130
|
"ckan": {
|
|
154
131
|
"command": "node",
|
|
155
|
-
"args": ["/absolute/path/to/project/node_modules/@
|
|
132
|
+
"args": ["/absolute/path/to/project/node_modules/@username/ckan-mcp-server/dist/index.js"]
|
|
156
133
|
}
|
|
157
134
|
}
|
|
158
135
|
}
|
|
@@ -198,6 +175,7 @@ Use the public Cloudflare Workers deployment (no local installation required):
|
|
|
198
175
|
- **ckan_package_search**: Search datasets with Solr queries
|
|
199
176
|
- **ckan_package_show**: Complete details of a dataset
|
|
200
177
|
- **ckan_package_list**: List all datasets
|
|
178
|
+
- **ckan_tag_list**: List tags with counts
|
|
201
179
|
|
|
202
180
|
### Organizations
|
|
203
181
|
|
|
@@ -207,7 +185,13 @@ Use the public Cloudflare Workers deployment (no local installation required):
|
|
|
207
185
|
### DataStore
|
|
208
186
|
|
|
209
187
|
- **ckan_datastore_search**: Query tabular data
|
|
210
|
-
- **ckan_datastore_search_sql**: SQL queries
|
|
188
|
+
- **ckan_datastore_search_sql**: SQL queries on DataStore
|
|
189
|
+
|
|
190
|
+
### Groups
|
|
191
|
+
|
|
192
|
+
- **ckan_group_list**: List groups
|
|
193
|
+
- **ckan_group_show**: Show group details
|
|
194
|
+
- **ckan_group_search**: Search groups by name
|
|
211
195
|
|
|
212
196
|
### Utilities
|
|
213
197
|
|
|
@@ -274,6 +258,25 @@ ckan_package_search({
|
|
|
274
258
|
})
|
|
275
259
|
```
|
|
276
260
|
|
|
261
|
+
### List tags (natural language: "show top tags about health")
|
|
262
|
+
|
|
263
|
+
```typescript
|
|
264
|
+
ckan_tag_list({
|
|
265
|
+
server_url: "https://www.dati.gov.it/opendata",
|
|
266
|
+
tag_query: "salute",
|
|
267
|
+
limit: 25
|
|
268
|
+
})
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Search groups (natural language: "find groups about environment")
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
ckan_group_search({
|
|
275
|
+
server_url: "https://www.dati.gov.it/opendata",
|
|
276
|
+
pattern: "ambiente"
|
|
277
|
+
})
|
|
278
|
+
```
|
|
279
|
+
|
|
277
280
|
### DataStore Query
|
|
278
281
|
|
|
279
282
|
```typescript
|
|
@@ -286,6 +289,15 @@ ckan_datastore_search({
|
|
|
286
289
|
})
|
|
287
290
|
```
|
|
288
291
|
|
|
292
|
+
### DataStore SQL Query
|
|
293
|
+
|
|
294
|
+
```typescript
|
|
295
|
+
ckan_datastore_search_sql({
|
|
296
|
+
server_url: "https://demo.ckan.org",
|
|
297
|
+
sql: "SELECT Country, COUNT(*) AS total FROM \"abc-123-def\" GROUP BY Country ORDER BY total DESC LIMIT 10"
|
|
298
|
+
})
|
|
299
|
+
```
|
|
300
|
+
|
|
289
301
|
## Supported CKAN Portals
|
|
290
302
|
|
|
291
303
|
Some of the main compatible portals:
|