CKAN MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ckan_package_searchA | Search for datasets (packages) on a CKAN server using Solr query syntax. Supports full Solr search capabilities including filters, facets, and sorting. Use this to discover datasets matching specific criteria. Note on parser behavior: Some CKAN portals use a restrictive default query parser that can break long OR queries. For those portals, this tool may force the query into 'text:(...)' based on per-portal config. You can override with 'query_parser' to force or disable this behavior per request. Important - Date field semantics:
Natural language mapping (important for tool callers):
Content-recent helper:
Args:
Returns: Search results with:
Query Syntax (parameter q): Boolean operators: - AND / &&: "water AND climate" - OR / ||: "health OR sanità" - NOT / !: "data NOT personal" - +required -excluded: "+title:water -title:sea" - Grouping: "(title:water OR title:climate) AND tags:environment" Wildcards: - : "title:environment" (matches environmental, environments, etc.) - Note: Left truncation (*water) not supported Fuzzy search (edit distance):
- Proximity search (words within N positions): - "phrase"~N: "title:"climate change"~5" Range queries: - Inclusive [a TO b]: "num_resources:[5 TO 10]" - Exclusive {a TO b}: "num_resources:{0 TO 100}" - One side open: "metadata_modified:[2024-01-01T00:00:00Z TO *]" Date math: - NOW-1YEAR, NOW-6MONTHS, NOW-7DAYS, NOW-1HOUR - NOW/DAY, NOW/MONTH (round down) - Combined: "metadata_modified:[NOW-2MONTHS TO NOW]" - Example: "metadata_created:[NOW-1YEAR TO *]" - IMPORTANT: NOW syntax works on metadata_modified and metadata_created fields - For 'modified' and 'issued' fields, NOW syntax is auto-converted to ISO dates - Manual ISO dates always work: "modified:[2026-01-15T00:00:00Z TO *]" Field existence: - Exists: "field:" or "field:[ TO ]" - Not exists: "NOT field:" or "-field:*" Boosting (relevance scoring): - Boost term: "title:water^2 OR notes:water" (title matches score higher) - Constant score: "title:water^=1.5" Examples:
Query language: Before searching a portal, check its locale via ckan_status_show (field: "Portal Locale" / locale_default). Translate query terms to the portal's language — searching in English on a non-English portal returns 0 results. Examples: locale "it" → Italian terms; "uk_UA" → Ukrainian (Cyrillic); "fr_FR" → French. Exception: multilingual portals (e.g. data.europa.eu, open.canada.ca) accept EN + native terms joined with OR. Typical workflow: ckan_status_show (check locale) → ckan_package_search (query in portal's language) → ckan_package_show (get full metadata + resource IDs) → ckan_datastore_search (query tabular data) |
| ckan_find_relevant_datasetsA | Find and rank datasets by relevance to a query using weighted fields. Use this instead of ckan_package_search when you want relevance-ranked results with explicit scoring across title, notes, tags, and organization fields. Use ckan_package_search instead when you need Solr filter syntax, facets, or pagination. Uses package_search for discovery and applies a local scoring model. Args:
Returns: Ranked datasets with relevance scores and per-field score breakdowns Examples:
Typical workflow: ckan_find_relevant_datasets → ckan_package_show (inspect top results) → ckan_datastore_search (query data) |
| ckan_package_showA | Get complete metadata for a specific dataset (package). Returns full details including resources, organization, tags, and all metadata fields. Notes:
Args:
Returns (JSON format): id, name, title, notes, organization, tags, state, license_title, metadata_created, metadata_modified, issued, modified, author, maintainer, frequency, language, publisher_name, holder_name, hvd_category, applicable_legislation, resources (id, name, format, url, size, datastore_active, created, last_modified, api_json_url), view_url, api_json_url Examples:
Typical workflow: ckan_package_show → pick a resource with datastore_active=true → ckan_datastore_search (query its data) |
| ckan_list_resourcesA | List all resources in a dataset with a compact summary. Returns a focused table of resources showing format, size, DataStore availability, and download URL. Use this to quickly assess what files a dataset contains before deciding how to access the data. Args:
Returns: Compact resource summary with name, ID, format, size, DataStore flag, and URL Examples:
Typical workflow: ckan_package_search → ckan_list_resources (assess available files) → ckan_datastore_search (for resources with DataStore=true) When a resource has DataStore=false but its download URL belongs to a different (source) portal, the tool can probe the source portal for DataStore availability and report source_datastore_active and source_portal_url so you can query the data there instead. This probing is OFF by default (it issues extra HTTP requests to hosts taken from the dataset's own resource URLs); set check_source_portal=true to enable it. |
| ckan_organization_listA | List all organizations on a CKAN server. Organizations are entities that publish and manage datasets. Args:
Returns: List of organizations with metadata. When limit=0, returns only the count of organizations with datasets. Typical workflow: ckan_organization_list → ckan_organization_show (inspect one) → ckan_package_search with fq="organization:name" (browse its datasets) |
| ckan_organization_showA | Get details of a specific organization. Args:
Returns: Organization details with optional datasets and users Typical workflow: ckan_organization_show → ckan_package_show (inspect a dataset) → ckan_datastore_search (query its data) |
| ckan_organization_searchA | Search for organizations by name pattern. This tool provides a simpler interface than package_search for finding organizations. Wildcards are automatically added around the search pattern. Args:
Returns: List of matching organizations with dataset counts Examples:
Typical workflow: ckan_organization_search → ckan_organization_show (get details) → ckan_package_search with fq="organization:name" |
| ckan_datastore_searchA | Query data from a CKAN DataStore resource. The DataStore allows SQL-like queries on tabular data. Not all resources have DataStore enabled. The response always includes a Fields section listing all available column names and types. Use limit=0 to discover column names without fetching data — do this before using filters to avoid guessing column names and getting HTTP 400 errors. Args:
Returns: DataStore records matching query, always including available column names and types Examples:
Typical workflow: ckan_package_search → ckan_package_show (find resource_id with datastore_active=true) → ckan_datastore_search (limit=0 to get columns) → ckan_datastore_search (with filters) |
| ckan_datastore_search_sqlA | Run SQL queries on a CKAN DataStore resource. This endpoint is only available on CKAN portals with DataStore enabled and SQL access exposed. Args:
Returns: SQL query results from DataStore Examples:
Typical workflow: ckan_package_show (get resource_id) → ckan_datastore_search_sql (run SQL on it) Security note: SQL queries are forwarded directly to the CKAN DataStore API. The CKAN server enforces its own access controls and read-only permissions. No local database is exposed. Queries are limited to public DataStore resources on the target portal. |
| ckan_status_showA | Check if a CKAN server is available and get version information. Useful to verify server accessibility before making other requests. Also shows the count of High-Value Datasets (HVD) when the portal supports it. Args:
Returns: Server status, version information, and HVD dataset count (if available) Typical workflow: ckan_status_show (verify server is up) → ckan_package_search (discover datasets) |
| ckan_tag_listA | List tags from a CKAN server using faceting. This returns tag names with counts, optionally filtered by dataset query or tag substring. Args:
Returns: List of tags with counts (from faceting) Typical workflow: ckan_tag_list → ckan_package_search with fq="tags:tag_name" (find datasets by tag) → ckan_package_show |
| ckan_group_listA | List all groups on a CKAN server. Groups are thematic collections of datasets. Args:
Returns: List of groups with metadata. When limit=0, returns only the count of groups with datasets. Typical workflow: ckan_group_list → ckan_group_show (inspect one) → ckan_package_search with fq="groups:name" (browse its datasets) |
| ckan_group_showA | Get details of a specific group. Args:
Returns: Group details with optional datasets Typical workflow: ckan_group_show → ckan_package_show (inspect a dataset) → ckan_datastore_search (query its data) |
| ckan_group_searchA | Search for groups by name pattern. This tool provides a simpler interface than package_search for finding groups. Wildcards are automatically added around the search pattern. Args:
Returns: List of matching groups with dataset counts Typical workflow: ckan_group_search → ckan_group_show (get details) → ckan_package_search with fq="groups:name" |
| ckan_get_mqa_qualityA | Get MQA (Metadata Quality Assurance) quality metrics for a dataset on dati.gov.it. Returns quality score and detailed metrics (accessibility, reusability, interoperability, findability, contextuality) from data.europa.eu. Only works with dati.gov.it server. Typical workflow: ckan_package_show (get dataset ID) → ckan_get_mqa_quality → ckan_get_mqa_quality_details (for non-max dimensions) |
| ckan_get_mqa_quality_detailsA | Get detailed MQA (Metadata Quality Assurance) quality reasons for a dataset on dati.gov.it. Returns dimension scores, non-max reasons, and raw MQA flags from data.europa.eu. Only works with dati.gov.it server. Typical workflow: ckan_get_mqa_quality (get overview scores) → ckan_get_mqa_quality_details (inspect failing metrics) |
| ckan_analyze_datasetsA | Search datasets and inspect the DataStore schema of queryable resources. For each dataset found, lists all resources. For DataStore-enabled resources, fetches the full field schema (name, type, and label/notes when available) plus total record count — all in one call. Use this before ckan_datastore_search to understand what fields are available and what data to expect. Args:
Returns: For each dataset: title, ID, organization, and per DataStore resource: field schema with label/notes (when available from DataStore Dictionary) and record count. Typical workflow: ckan_analyze_datasets → ckan_datastore_search (with known field names) |
| ckan_catalog_statsA | Get a statistical overview of a CKAN portal: total dataset count and breakdown by category, format, and organization. Single CKAN call (package_search with rows=0 and facets). No query needed. Args:
Returns: Total dataset count, categories ranked by count, file formats ranked by count, organizations ranked by count. Typical workflow: ckan_catalog_stats (understand the portal) → ckan_package_search (query specific data) |
| sparql_queryA | Execute a SPARQL SELECT query against any public HTTPS SPARQL endpoint. Useful for querying open data portals and knowledge graphs that expose SPARQL endpoints, including:
Only HTTPS endpoints are allowed. Queries timeout after 15 seconds. Only SELECT queries are supported (read-only). If the query does not contain a LIMIT clause, one is injected automatically (default: 25, max: 1000). Args:
Examples:
Typical workflow: sparql_query (explore schema) → sparql_query (targeted query) → ckan_package_search (get dataset details) |
| ckan_find_portalsA | Search the live datashades.info registry of ~950 CKAN portals worldwide. Use this tool to discover which CKAN portals exist for a country, language, or topic before querying them with other CKAN tools. IMPORTANT — country parameter: always pass country name in English. If the user writes in another language (e.g. "Italia", "España", "Brasil"), translate to English ("Italy", "Spain", "Brazil") before calling this tool. Args:
Returns: Ranked list of matching portals with URL, country, CKAN version, dataset count, and DataStore status. Typical workflow: ckan_find_portals (discover portal URL) → ckan_status_show (verify) → ckan_package_search (search datasets) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| ckan-search-by-theme | Guided prompt to discover a theme and search datasets under it. |
| ckan-search-by-organization | Guided prompt to find a publisher and list its datasets. |
| ckan-search-by-format | Guided prompt to find datasets with a given resource format. |
| ckan-recent-datasets | Guided prompt to list recently updated datasets on a CKAN portal. |
| ckan-analyze-dataset | Guided prompt to inspect dataset metadata and explore DataStore tables. |
| ckan-search-hvd | Guided prompt to find High-Value Datasets (HVD) on a CKAN portal. Automatically uses the correct filter field from portal configuration. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ondata/ckan-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server