Serbian Data MCP Server
MCP server for accessing Serbian open data portal (data.gov.rs) with built-in visualization capabilities.
pip install serbian-data-mcp
Features
- 🔍 Search 3,400+ datasets from Serbian government
- 📊 Create 6 types of charts (line, bar, pie, scatter, histogram, box)
- 📥 Download data in JSON, CSV, XML, XLSX formats
- 🎨 Export visualizations as HTML/PNG/JSON
- 🇷🇸 Full Serbian language support (UTF-8)
- 🚀 Built-in rate limiting and caching
- 🛠️ Data transformation tools (filter, group, aggregate, sort, select)
- 🔧 Git repository visualization and analysis
🚀 Quick Start
Install from PyPI (Recommended)
pip install serbian-data-mcp
Then add to your MCP client configuration (see Usage below).
Install from Source
git clone https://github.com/acailic/serbian-data-mcp
cd serbian-data-mcp
uv sync
📖 Configuration
The server works out of the box with sensible defaults. To customize, create a config.json in your working directory (or next to the installed package):
{
"api_base": "https://data.gov.rs",
"rate_limit": 1.0,
"timeout": 30,
"cache_dir": ".cache",
"export_dir": "exports"
}
See config.example.json in the source repo for all options.
🚀 Usage
Claude Desktop Configuration
{
"mcpServers": {
"serbian-data": {
"command": "serbian-data-mcp"
}
}
}
Or if you installed from source:
{
"mcpServers": {
"serbian-data": {
"command": "python",
"args": ["-m", "serbian_data_mcp"]
}
}
}
Available Tools
search_datasets- Search datasets with filtersget_dataset- Get complete dataset detailsget_resource_data- Download and parse resource datacreate_visualization- Create charts from datalist_organizations- Browse data providerssuggest_datasets- Autocomplete for searchget_git_stats- Get git repository statisticsget_git_history- Retrieve commit historyvisualize_git_data- Create git repository visualizations
📊 Visualization Gallery
The MCP server supports 6 types of interactive charts with automatic styling and Serbian language support.
Line Charts
Perfect for time series data and trends
Bar Charts
Compare values across categories
Horizontal Bar Charts
Ideal for long category names
Pie Charts
Show parts of a whole
Scatter Plots
Explore relationships between variables
Histograms
Analyze frequency distributions
Box Plots
Display statistical summaries and outliers
Examples
# Search datasets
datasets = await mcp.call_tool("search_datasets", {
"query": "population",
"format": "json",
"page_size": 10
})
# Create visualization
chart = await mcp.call_tool("create_visualization", {
"data": data,
"chart_type": "line",
"title": "Population Trends",
"x_column": "year",
"y_column": "population",
"export_format": "html"
})
📚 Documentation
- Quick Start Guide - Get started in 5 minutes
- Usage Examples - 24+ real-world examples and use cases
- API Reference - Complete tool documentation with parameters
- Troubleshooting - Common issues and solutions
- Contributing Guide - Developer contribution guidelines
Development
Setup Development Environment
make install
Running Tests
make test # Run all tests with coverage
make test-quick # Quick tests (no coverage)
Code Quality Checks
make check # Run all quality checks (lint, format, type-check, security)
make check-quick # Quick checks (lint + format only)
Project Structure
serbian-data-mcp/
├── src/serbian_data_mcp/
│ ├── api/ # API client and models
│ ├── catalog/ # Dataset catalog and search
│ ├── data/ # Data parsing and transformation
│ ├── intelligence/ # Query expansion and smart search
│ ├── viz/ # Visualization tools
│ ├── config.py # Configuration management
│ ├── exceptions.py # Custom exceptions
│ └── tools.py # MCP tool definitions
├── tests/ # Comprehensive test suite
├── .github/workflows/ # CI/CD configuration
├── pyproject.toml # Project configuration
└── Makefile # Development commands
License
MIT License - see LICENSE file
Release files for serbian-data-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| serbian_data_mcp-0.1.0.tar.gz | 81.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| serbian_data_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 177.5 kB
Release files / serbian_data_mcp-0.1.0.tar.gz
| Download URL | serbian_data_mcp-0.1.0.tar.gz |
|---|---|
| Size | 81.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0059561efba3fc59b2a2676c755ae5d21f1a0af016cc8743869e7809fe869a4d
|
|
BLAKE2b-256 checksum How to use checksums |
4741476f26873a4eb86775d351a8713a6bfdfaf5b2e97f3a823b36e3eb84f03d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / serbian_data_mcp-0.1.0-py3-none-any.whl
| Download URL | serbian_data_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 96.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8072500f704eeeb0ee2405406090ae85100cfd494fe4990faad10344e16b8aa3
|
|
BLAKE2b-256 checksum How to use checksums |
086a406f63765256697ad915fa3e1e59968bb0c63e4909cffcafdb4c5d84ff80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|