A Model Context Protocol (MCP) server for the CKAN API that enables browsing and managing CKAN data portals through MCP-compatible clients.
This is an MCP server that provides access to CKAN (Comprehensive Knowledge Archive Network) APIs through the Model Context Protocol. It can be used with MCP-compatible clients like Claude Desktop, IDEs, or other AI applications to interact with CKAN data portals.
- Python 3.13 or higher
- pip (Python package installer)
- Install Python dependencies:
pip install -r requirements.txtSet the following environment variables:
CKAN_URL: The base URL of your CKAN portal (e.g.https://demo.ckan.org)CKAN_API_KEY: (Optional) Your CKAN API key for write operations
Example:
export CKAN_URL="https://demo.ckan.org"
export CKAN_API_KEY="your-api-key-here"You can also copy .env.example to .env and set your configuration there.
python mcp_ckan_server.py# Build the image
docker build -t ckan-mcp-server .
# Run with environment variables
docker run -e CKAN_URL="https://demo.ckan.org" -e CKAN_API_KEY="your-key" ckan-mcp-server# Copy environment file and configure
cp .env.example .env
# Edit .env with your settings
# Run the server
docker-compose upThe MCP server provides the following tools:
ckan_package_list: List all packagesckan_package_show: Show details of a specific packageckan_package_search: Search for packages
ckan_organization_list: List all organizationsckan_organization_show: Show organization details
ckan_datastore_searchSearch DataStore Tables by Resource
ckan_group_list: List all groupsckan_tag_list: List all tags
ckan_resource_show: Show resource details
ckan_site_read: Site informationckan_status_show: Status and version information
{
"tool": "ckan_package_search",
"arguments": {
"q": "climate data",
"rows": 5,
"sort": "score desc"
}
}{
"tool": "ckan_organization_show",
"arguments": {
"id": "sample-organization",
"include_datasets": true
}
}{
"tool": "ckan_tag_list",
"arguments": {}
}The server also provides the following resources:
ckan://api/docs: API documentationckan://config: Server configuration
Add this to your Claude Desktop configuration file:
{
"mcpServers": {
"ckan": {
"command": "python",
"args": ["/path/to/mcp_ckan_server.py"],
"env": {
"CKAN_URL": "https://demo.ckan.org",
"CKAN_API_KEY": "your-api-key-here"
}
}
}
}The server communicates via stdio, so any MCP-compatible client can connect to it by running the Python script and communicating through standard input/output.
This MCP server implements the main endpoints of the CKAN API v3. Complete documentation: https://docs.ckan.org/en/latest/api/
Mozilla Public License Version 2.0
(C) 2025, Ondics GmbH, https://ondics.de