A Model Context Protocol (MCP) Server that integrates with dane.gov.pl, Poland's central open data portal. This server acts as a bridge between Polish public datasets and modern AI applications, creating a transparent, fast, and structured API layer consumable by LLMs, agents, and intelligent services.
Inspired by the success of data-gov-il-mcp, this project aims to unlock the potential of Polish government data for AI-powered civic applications.
We are building the first MCP server for Polish open government data. No equivalent exists today, making this a strategic opportunity to position Poland at the forefront of civic tech and AI infrastructure.
- Poland's <dane.gov.pl> has rich datasets but poor accessibility for AI models
- Inconsistent data formats and lack of clear APIs
- No standardized way for LLMs to access Polish government data
An open-source MCP Server that:
- π Discovers datasets through semantic search and filtering
- π Parses diverse data formats into unified structures
- π§ Processes data with LLM-powered operations
- π Visualizes results through chart integrations
- β‘ Aggregates large datasets using Polars for performance
The project is in its final stages of development. All core functionality is implemented and tested, with ongoing quality-of-life improvements and bug fixes being made:
- Institution Search - Find and filter government institutions by name, city, description
- Dataset Discovery - Search datasets by keywords, titles, and descriptions
- Resource Listing - Browse individual data files within datasets
- Showcases Search - Find real-world visualizations and applications that use the datasets
- Metadata Access - Get detailed information about institutions, datasets, and resources
- Data Parsing - Convert resources into LLM-ready Markdown documents
- LLM Processing - Enable grouping, aggregating, filtering, and sorting operations for tabular data resources (loaded into Polars DataFrames)
- Chart Integration - Visualize processed data through MCP chart tools
The system comprises three distinct functionality layers:
βββββββββββββββββββ
β Discovery β β Search & filter datasets/resources/institutions/showcases
βββββββββββββββββββ€
β Parsing β β Convert resources LLM ready Markdown documents
βββββββββββββββββββ€
β Processing β β LLM-powered operations on Polars dataframes
βββββββββββββββββββ
- Search datasets by keywords (e.g., "water condition")
- Filter institutions by city, name, or description
- Browse resources within selected datasets
- Access comprehensive metadata
- Convert CSV, JSON, XLSX, PDF and other files to Markdown documents
- Support for most of the resources in optimal formats
- Data operations (group, filter, aggregate)
- Integration with visualization tools
- Python - Core development language
- FastMCP - MCP server framework
- Pydantic - Data validation and serialization
- Polars - High-performance data processing
- Unstructured - Document parsing and extraction for PDFs, CSVs and other formats
- Fly.io - Deployment platform
- Python 3.11+
- UV package manager (recommended)
# Clone the repository
git clone https://github.com/appunite/dane-gov-pl-mcp.git
cd dane-gov-pl-mcp
# Install dependencies
uv sync
# Run the MCP server
uv run python -m src.app --transport stdioAdd to your MCP client configuration (e.g., Claude Desktop, Cursor):
{
"mcpServers": {
"dane-gov-pl-mcp": {
"command": "/path/to/dane-gov-pl-mcp/.venv/bin/python",
"args": ["-m", "src.app", "--transport", "stdio"],
"cwd": "/path/to/dane-gov-pl-mcp",
"env": {
"PYTHONPATH": "/path/to/dane-gov-pl-mcp",
"PYTHONUNBUFFERED": "1"
}
}
}
}# Search datasets by keywords
search_datasets(search_filters={"query_all": "environment"})
# Find institutions by location
search_institutions(search_filters={"city_terms": "Warszawa"})
# Get dataset details
get_resources_details(dataset_ids=[123, 456])# Parse files to Markdown
get_file_content(resource_ids=[123, 456])# Get resource metadata
get_tabular_resource_metadata(resource_ids=[123])
# Query tabular data
get_tabular_data(resource_id=123, search_filters={"q": "col1:Warszawa"})
# Advanced DataFrame operations
resource_to_dataframe(resource_id=123, dataframe_operations={
"primary_group": "col1",
"aggregations": ["sum", "mean"],
"aggregation_columns": ["col2", "col2"],
"sort_columns"=["col2_sum", "col1"],
"sort_descending"=[True, False]
})We welcome contributions! This project aims to make Polish government data more accessible and usable for everyone.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- dane.gov.pl - Poland's Open Data Portal
- API Documentation - Official API docs
- Technical Standard - Data standards
Dane-gov-pl-mcp is created by Appunite.
Since 2010, Appunite is a collective of software engineers, product builders, and problem solvers. We partner with bold teams to tackle product and business challengesβdesigning custom-built squads that ship fast and think strategically. From AI-enabled workflows to mobile platforms and cloud-native systems, we deliver end-to-end execution with full accountability.
Looking for your unfair advantage in tech execution? Talk to us.
Copyright 2025, Appunite
Licensed under the MIT License
