ckan-mcp-server — Claude Code MCP server: open data portal access
Connects your AI assistant to CKAN open data portals: search datasets, browse organizations, query tabular data and read metadata in plain language.
claude mcp add --env CKAN_ALLOWED_DOMAINS=<CKAN_ALLOWED_DOMAINS> --transport stdio ckan-mcp-server -- npx -y @aborruso/ckan-mcp-serverWhat ckan-mcp-server does
CKAN powers most public open data portals, and finding anything there usually means knowing the portal's structure, API and search syntax. This server removes that step. Once connected, your assistant handles the searching and the parsing.
The server ships tools for dataset search (ckan_package_search), tabular queries (ckan_datastore_search), tag listing, portal discovery and relevant-dataset matching. Metadata follows the DCAT standard. Two ways to run it: install locally with npm install -g @aborruso/ckan-mcp-server, or skip the install and point your tool at the hosted endpoint https://ckan-mcp-server.andy-pr.workers.dev/mcp. The hosted option shares a 100k requests/day quota; the local one has no shared quota.
Output caps apply on both channels. A response tops out at 50,000 characters, ckan_datastore_search returns 100 rows by default and 32,000 at most. Truncated JSON stays parseable: the server trims known result arrays and flags the payload with _truncated and _original_count, so a client reading structuredContent sees the same thing as the text. Need the full set? Paginate or narrow the query. Local Node.js deployments can raise the body limits with CKAN_MAX_RESPONSE_BYTES and CKAN_MAX_DECOMPRESSED_BYTES. The CKAN_ALLOWED_DOMAINS variable controls which portals the server may reach.
What it helps with
- find a dataset on a CKAN portal without learning its API
- run a tabular query against datastore records
- list the organizations and tags a portal exposes
- check what datasets a public body publishes
- match relevant datasets to a research topic
Example prompts for the agent
- Search this portal for air quality datasets from last year
- List the organizations publishing datasets here
- Query
ckan_datastore_searchand show me the first rows
How to install ckan-mcp-server
Platform CLI
claude mcp add --env CKAN_ALLOWED_DOMAINS=<CKAN_ALLOWED_DOMAINS> --transport stdio ckan-mcp-server -- npx -y @aborruso/ckan-mcp-serverReplace <…> with your own values
Platform CLI
codex mcp add ckan-mcp-server --env CKAN_ALLOWED_DOMAINS=<CKAN_ALLOWED_DOMAINS> -- npx -y @aborruso/ckan-mcp-serverReplace <…> with your own values
Config file
{
"mcpServers": {
"ckan-mcp-server": {
"command": "npx",
"args": [
"-y",
"@aborruso/ckan-mcp-server"
],
"env": {
"CKAN_ALLOWED_DOMAINS": "<CKAN_ALLOWED_DOMAINS>"
}
}
}
}Replace <…> with your own values
Config file
{
"servers": {
"ckan-mcp-server": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@aborruso/ckan-mcp-server"
],
"env": {
"CKAN_ALLOWED_DOMAINS": "<CKAN_ALLOWED_DOMAINS>"
}
}
}
}Replace <…> with your own values
Platform CLI
gemini mcp add -e CKAN_ALLOWED_DOMAINS=<CKAN_ALLOWED_DOMAINS> ckan-mcp-server npx -y @aborruso/ckan-mcp-serverReplace <…> with your own values
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about ckan-mcp-server
How do I install ckan-mcp-server in Claude Code?
Run claude mcp add ckan-mcp-server -- npx -y @aborruso/ckan-mcp-server. To restrict domains, use the env variant: claude mcp add --env CKAN_ALLOWED_DOMAINS=<CKAN_ALLOWED_DOMAINS> --transport stdio ckan-mcp-server -- npx -y @aborruso/ckan-mcp-server.
What does ckan-mcp-server do?
It gives your assistant access to CKAN open data portals: dataset, organization, tag and metadata search, plus tabular queries through the datastore.
How is the local install different from the hosted endpoint?
The local install runs on your machine with no shared quota. The hosted endpoint https://ckan-mcp-server.andy-pr.workers.dev/mcp is quicker to try, but it shares a 100k requests/day quota.