Pod

Yes, this is on purpose. Pod is built for agents, so the default page is plain HTML.
Human? View the normal website.
Agent? You probably prefer /mcp/ckan-mcp-server/issues.md or /mcp/ckan-mcp-server/issues.json, or Pod over MCP.

Reported issues for ckan-mcp-server

Pod holds 19 of 20 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to ckan-mcp-server.

Most discussed

JSON truncation can produce unparseable output, contrary to the documented guarantee

Problem

Three documents promise that JSON output is always parseable:

The code does not keep that promise. A client that asks for response_format=json and calls JSON.parse() on the result can get Unexpected end of JSON input — which is indistinguishable, f

Read the thread · 2026-07-31 · closed · 5 comments

CKAN API blocked by WAF unless browser headers used

Some CKAN portals (example: https://dati.anticorruzione.it/opendata) reject MCP requests with a WAF “Request Rejected” HTML response. The current default headers (custom UA) are too minimal, so the WAF blocks the request before it reaches CKAN. Proposed fix (agreed):

Read the thread · 2026-01-28 · closed · 2 comments

portale open data europeo

Problem / Use case

Ciao, ho lanciato una ricerca e Claude ha provato a cercare anche sul portale europeo degli open data. all'esito della ricerca ha restituito degli errori di API. Ne deduco che non è ancora in grado di interfacciarsi con quel portale perché il server MCP non è settato per il portale europeo.

Proposed solution

Si potrebbe valutare di aggiungere anche le API del portare europeo se non è troppo oneroso.

Alternatives considered

No response

Read the thread · 2026-01-17 · closed · external user · 2 comments

[Caso d'uso] Qualità dell'aria a Milano

Contesto

Con MCP attivo

Fonte: https://www.dati.gov.it

User: Qual è stato il giorno del 2026 con la peggiore qualità dell'aria a Milano?

GitHub Copilot: Ran Show CKAN Dataset Details 
Completed with input: {
  "id": "rilevazione-qualita-aria-20261",
  "server_url": "https://www.dati.gov.it"
}

Il CSV è disponibile direttamente. Scarico i dati per analizzarli: 

Fetche

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/28) · 2026-04-09 · open · 1 comment

### Add intelligent CKAN instance detection to ckan_smart_search orchestrator

## Context

Issue #17 proposes a `ckan_smart_search` orchestrator tool that accepts natural language queries like "find climate datasets in Italy." This would dramatically improve accessibility for non-technical users who don't know which CKAN portal to query or its native search syntax.

However, the current implementation approach assumes users either:
1. Already know which CKAN instance they want to query (and pass a URL)
2. Manually specify the country/region before searching

This creates f

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/18) · 2026-03-07 · closed · external user · 1 comment

### feat: ckan_smart_search — orchestrator tool for natural language country+topic queries

## Summary

Add a new orchestrator tool `ckan_smart_search` that answers natural language questions like _"How many car accidents in Portugal?"_ by automatically discovering relevant CKAN portals and searching them.

## Motivation

Currently the user must know which CKAN portal to query. This tool would remove that barrier entirely: given a question, it finds the right portals and searches them autonomously.

## Proposed workflow

1. Receive a natural language question (e.g. "How many car accide

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/17) · 2026-03-06 · closed · 1 comment

### One-click MCP server installation for Claude Desktop

## Problem / Use case

Currently, users need to manually configure Claude Desktop to use this MCP server by:
1. Finding the Claude Desktop config file location
2. Manually editing the JSON configuration
3. Adding the correct command and args for the server
4. Restarting Claude Desktop

This process is error-prone and creates friction for users who want to quickly try out the CKAN MCP server.

## Proposed solution

Implement one-click installation support as described in [Anthropic's Desktop Exte

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/11) · 2026-02-09 · open · 1 comment

### DataStore calls fail for dati.comune.messina.it due to compressed/binary response

## Summary
CKAN DataStore calls against https://dati.comune.messina.it fail with a binary/gzip-like payload that our HTTP client doesn't decode, even though the resource has datastore_active=true.

## Evidence
- resource_id: 17301b8b-2a5b-425f-80b0-5b75bb1793e9
- resource_show confirms: datastore_active=true
- ckan_datastore_search and ckan_datastore_search_sql both return: "CKAN API returned success=false" with binary/gzip payload.
- Example SQL: SELECT * FROM "17301b8b-2a5b-425f-80b0-5b75bb179

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/8) · 2026-02-01 · closed · 1 comment

## Most recent

### Document user-facing limits in README

## Problem

The server enforces several caps, but none of them are documented user-facing. They live in three places with very different visibility:

| Limit | Value | Where it is documented today |
|---|---|---|
| Output truncation | 50,000 chars (`CHARACTER_LIMIT`, `src/types.ts`) | `docs/DECISIONS.md`, `docs/PRD.md` — internal docs only |
| `ckan_datastore_search` limit | default 100, max 32,000 | Zod description (agent-facing) |
| `sparql_query` LIMIT | default 25, max 1,000 | Zod descriptio

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/37) · 2026-07-30 · closed · 0 comments

### Improve tool descriptions with usage examples to reduce model misinterpretation

## Problem

MCP tool descriptions are the primary interface through which LLMs decide when and how to call a tool. Vague or incomplete descriptions can lead to:
- wrong tool selection
- incorrect parameter construction
- unnecessary retries / wasted tokens

## Proposed Change

Audit and improve the `description` field of every registered MCP tool in `src/tools/` to include:
- a one-line purpose statement
- 1–2 concrete usage examples inline (query patterns, parameter combos)
- explicit notes on 

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/33) · 2026-04-29 · open · 0 comments

### Streamline tool descriptions for token efficiency

Tool descriptions in `src/tools/*.ts` are verbose. Every byte in a tool description is a token the client LLM pays on **every** request, since all tool descriptions are included in every tool-selection turn. With 20 tools, this adds up quickly.

## Goal

Cut 30–50% from the descriptions of the largest tools without losing essential information.

## Approach

- Keep a one-sentence top-line purpose.
- Move extended Solr syntax references, long example lists, and portal-specific tips **out** of the

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/32) · 2026-04-24 · open · 0 comments

### Enrich CKAN error responses with actionable hints for LLM clients

When a CKAN API call returns 4xx/5xx, the server currently surfaces the raw upstream error. For LLM clients this is often unhelpful — the LLM cannot tell whether to retry, switch portal, or abandon the path.

## Pattern

Wrap upstream errors with a short, actionable hint the LLM can act on.

## Concrete cases

- `ckan_datastore_search` / `ckan_datastore_search_sql` against a portal without the DataStore extension → hint: "This portal does not expose the DataStore API. Try a portal with DataStore

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/31) · 2026-04-24 · open · 0 comments

### Add MCP tool annotations (readOnlyHint, openWorldHint, title)

The MCP specification supports optional annotations on tool definitions that help clients provide better UX:

- `title`: human-friendly display name
- `readOnlyHint`: the tool does not modify its environment
- `idempotentHint`: calling multiple times is safe
- `openWorldHint`: the tool interacts with external entities
- `destructiveHint`: the tool performs destructive updates (default `false`)

All 20 tools in this server are read-only and interact with external CKAN portals, so they should decl

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/30) · 2026-04-24 · open · 0 comments

### Add TopoJSON administrative boundaries (comuni, province, regioni, ISTAT districts)

## Feature Request

Expose Italian administrative boundary files in TopoJSON format as MCP resources or tool outputs.

## Boundaries to include

- Comuni (municipalities)
- Province (provinces)
- Regioni (regions)
- ISTAT district subdivisions

## Motivation

Users querying CKAN portals often need to cross-reference data with geographic boundaries. Having these available via MCP would allow spatial analysis without external lookups.

## Possible approaches

1. Static TopoJSON files bundled or ho

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/25) · 2026-03-29 · open · 0 comments

### Unify User-Agent to CKAN-MCP-Server/1.0 across all tools

## Problem

The server currently uses inconsistent User-Agent strings depending on the operation:

- `CKAN-MCP-Server/1.0` — CKAN API calls, quality checks, portal discovery
- `Mozilla/5.0 (compatible; CKAN-MCP-Server/1.0)` — SPARQL queries
- `Mozilla/5.0 (X11; Linux x86_64) ... Chrome/120` — direct file downloads (`src/utils/http.ts`)

The Chrome UA was added to avoid portals that block non-browser requests, but it's not transparent.

## Proposed Change

Unify all tools to use `CKAN-MCP-Server/

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/24) · 2026-03-19 · open · 0 comments

### sparql_query: accented characters in string literals are corrupted before HTTP transmission

When using `sparql_query` to query the Wikidata SPARQL endpoint with string literals containing accented characters (e.g. `"Nestlé"@en`), the query returns 0 results even though the entity exists with that exact label.

## Root cause

The `é` character (U+00E9, UTF-8: `C3 A9`) appears to be corrupted or incorrectly encoded when the tool serializes the SPARQL query string into the HTTP request body. Wikidata confirms the label is stored as precomposed `é` (U+00E9).

## Steps to reproduce

Run the

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/22) · 2026-03-17 · closed · 0 comments

### feat: source portal DataStore fallback for harvested datasets

## Problem

When a dataset is harvested by an aggregator portal (e.g. `dati.gov.it`), the `ckan_list_resources` tool reports `DataStore: No` even when the DataStore is active on the source portal.

### Real example

Querying "Rilevazione qualità aria 2025" (Comune di Milano) on `dati.gov.it`:
- `ckan_list_resources` → `DataStore: No`
- Same dataset on `dati.comune.milano.it` → `DataStore: Yes` ✓

The resource download URL already contains the source portal domain, dataset ID, and resource ID:
``

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/20) · 2026-03-10 · open · 0 comments

### fix: use z.coerce.number() for numeric tool parameters

## Problem

Numeric parameters (`rows`, `page_size`, `start`, `limit`, `offset`, etc.) are defined with `z.number()` in Zod schemas. Some MCP clients pass these values as JSON strings instead of numbers, causing validation errors:

MCP error -32602: Input validation error: "code": "invalid_type", "expected": "number", "received": "string", "path": ["rows"]


## Affected files

- `src/tools/package.ts` — 11 occurrences (`rows`, `start`, `facet_limit`, `page`, `page_size`, `content_

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/16) · 2026-03-06 · closed · 0 comments

### Expose holder_name counts for Italy (dati.gov.it)

## Problem
For Italian datasets, the **real PA owner** is captured in `holder_name`, while `organization` often reflects the technical publisher (e.g., *Agenzia delle Entrate* datasets appear under **GeoDati - RNDT**). Today the tools surface only `organization` counts, which is misleading for Italian portals.

## Proposal
Add a tool or specialize existing outputs to include **holder_name counts** for Italy (dati.gov.it):

- When `server_url` is `https://www.dati.gov.it/opendata` (or aliases), i

[Read the thread](https://github.com/ondata/ckan-mcp-server/issues/9) · 2026-02-02 · open · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/ondata/ckan-mcp-server/issues).