Israel national open-data portal (CKAN API) MCP server for searching datasets, retrieving dataset details, querying datastore rows, and listing organizations/groups
Server defines 5 tools with complete input schemas and descriptions. All tools are read-only, well-named with action verbs (search_, dataset_, datastore_, list_), and include parameter descriptions. However, output schemas are entirely undocumented, LLMs cannot plan downstream calls or extract structured data. Parameter descriptions lack constraints (e.g., no enum for sort fields, no regex for resource_id format). Error handling is minimal: ckanGet() throws generic errors without recovery guidance. No pagination metadata (total count, next_cursor) documented despite tools accepting limit/offset. Tool descriptions are adequate (100-200 chars) but could better explain when to use each tool vs. alternatives.
Full dataset record by id or slug (CKAN package_show), including its resources. Read each resource's "id" (resource_id) and "datastore_active" flag to know which can be queried row-by-row via datastore_query.
Read actual table rows from a resource via CKAN datastore_search. Works only for resources with datastore_active=true (get the resource_id from dataset_details). Field names and values are often Hebrew (UTF-8).
List thematic groups/categories on data.gov.il (CKAN group_list).
List publishing organizations (ministries/agencies) on data.gov.il (CKAN organization_list).
Search the data.gov.il catalogue (CKAN package_search). Returns matching datasets with titles/descriptions (mostly Hebrew). Query may be Hebrew or English.
Output schemas completely undocumented. LLMs cannot infer what fields to expect from search_datasets, dataset_details, datastore_query, list_organizations, or list_groups. This blocks downstream tool chaining and forces agents to guess field names.
Parameter constraints missing. 'rows' and 'limit' accept 1-1000 but no enum or min/max in schema. 'sort' accepts free-form strings with no guidance on valid fields (e.g., 'metadata_modified desc'). 'filters' in datastore_query is untyped object with no schema for column names or value types.
Error handling provides no recovery guidance. ckanGet() throws generic errors like 'data.gov.il: 404 ...' or 'data.gov.il: request failed'. LLMs cannot determine if the error is retryable, user-fixable (e.g., invalid dataset ID), or fatal. No suggestions for alternative tools or corrected inputs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Pagination metadata not documented. Tools accept 'rows'/'limit' and 'start'/'offset' but do not document whether responses include total_count, next_cursor, or result_count. Agents cannot determine if more results exist or how to fetch them safely.
Tool descriptions lack dependency hints and use-case clarity. 'search_datasets' vs 'dataset_details' distinction is clear, but descriptions do not explain when to call list_organizations/list_groups first to discover valid filter values (e.g., 'organization:bank_israel'). No guidance on Hebrew vs. English query behavior.