CKAN MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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