Skip to main content
Glama
README.md
# imgw-mcp

Local MCP server for **IMGW-PIB** (Polish Institute of Meteorology and Water Management) public data feed — current weather, hydrological readings, and active meteorological warnings across Poland.

Part of the [honest-mcp family](https://github.com/bartosz-kuc?tab=repositories) of small, auditable, local-first MCP servers.

## Why

Anyone in Poland who watches river levels (flood-plain landlord, kayaker, farmer), plans outdoor work, or just wants a native alternative to yr.no or the ECMWF apps can hand IMGW's raw feed to their AI in one line. No API key. No rate limit worth worrying about.

## Features

Five tools:

- `get_weather` — current synoptic observations. Whole country (~60 stations) or one station.
- `get_hydro` — hydrological readings. Water level, flow, water temperature, alarm/warning thresholds. Server annotates each with computed `alarm_status` (normal / warning / alarm).
- `get_warnings` — active IMGW meteorological warnings (storms, frost, heat, precipitation, wind) with severity and validity window.
- `list_weather_stations` — station-name index for `get_weather`.
- `list_hydro_stations` — station index with rivers and provinces, filterable, for `get_hydro`.

## Data source

- Endpoint: [danepubliczne.imgw.pl/api/data](https://danepubliczne.imgw.pl/api/data/) — IMGW public data feed
- No API key
- Refresh: synop hourly, hydro every ~20 minutes, warnings whenever a new one is issued

## Requirements

- Python 3.10+

## Setup

```bash
git clone https://github.com/bartosz-kuc/honest-imgw-mcp.git
cd imgw-mcp
python3 -m venv venv
./venv/bin/pip install -r requirements.txt
```

Register with Claude Code:

```bash
claude mcp add imgw /absolute/path/to/venv/bin/python /absolute/path/to/server.py
```

Claude Desktop `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "imgw": {
      "command": "/absolute/path/to/venv/bin/python",
      "args": ["/absolute/path/to/server.py"]
    }
  }
}
```

## Example usage

> "What's the temperature in Warsaw right now?"

`get_weather(station="warszawa")` → single-station JSON with temperature, wind, humidity, precipitation, pressure.

> "Any active storm warnings?"

`get_warnings()` → list of active warnings, filter yourself by `nazwa_zdarzenia`.

> "Any rivers in Mazowieckie above alarm level?"

`get_hydro(province="mazowieckie", only_alerts=true)` → just stations where current level ≥ alarm threshold.

## Data flow

```
Your AI client
     ↕  MCP stdio
This server (Python, on your machine)
     ↕  HTTPS
danepubliczne.imgw.pl
```

No cloud middle. No telemetry.

## Author

**Bartosz Kuć** — Warsaw-based developer, JDG owner running [skanfirmy.pl](https://skanfirmy.pl).

- GitHub: https://github.com/bartosz-kuc

- Email: firma@bartosza.pl

## Consulting

Available for consulting on Polish tax and business integrations (KSeF, GUS/NFZ/GIOŚ APIs, mBank data), MCP server design, and AI-assisted tooling for JDGs and small teams. See **[skanfirmy.pl/uslugi](https://skanfirmy.pl/uslugi)** for productized packages (audit 3k PLN, setup 8-15k PLN, retainer 2-4k PLN/mo), or reach out via email.

## License

MIT — see [LICENSE](LICENSE).

## Related

- Part of the honest-mcp family — see the [family index](https://github.com/bartosz-kuc?tab=repositories).

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct purpose: getting hydrological readings, getting warnings, listing hydro stations, getting weather observations, and listing weather stations. There is no overlap or ambiguity between them, and the station-listing tools clearly complement their respective data-fetching tools.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: get_hydro, get_warnings, list_hydro_stations, get_weather, list_weather_stations. The use of 'get' for data retrieval and 'list' for enumeration is uniform, and the resource is always clearly identified (e.g., 'hydro', 'warnings', 'weather').

Tool Count5/5

Five tools is well-scoped for a server focusing on current meteorological and hydrological data. Each tool serves a necessary function without redundancy, and the count is neither too sparse nor overwhelming for the domain.

Completeness5/5

The tool surface covers the full lifecycle of read-only access to IMGW data: retrieving current weather, current hydrological readings, active warnings, and the ability to list stations to target specific queries. No obvious gaps exist for the stated purpose, as the server explicitly provides current conditions and warnings without needing create/update operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues