Skip to main content
Glama
README.md
<h1 align="center">powietrze-mcp 🌫️</h1>

<p align="center">
  <b>Jakość powietrza, smog i pyłki w Polsce – dla Twojego asystenta AI.</b><br>
  Serwer <a href="https://modelcontextprotocol.io">MCP</a> z bieżącymi pomiarami państwowych stacji GIOŚ, indeksem jakości powietrza, ostrzeżeniami smogowymi i prognozą CAMS (Copernicus) na 3 dni. Działa w Claude, ChatGPT, Cursorze i każdym kliencie MCP.
</p>

<p align="center">
  <a href="https://www.npmjs.com/package/powietrze-mcp"><img alt="npm" src="https://img.shields.io/npm/v/powietrze-mcp?color=cb3837&label=npm"></a>
  <a href="https://github.com/ContentWriterco/powietrze-mcp/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/ContentWriterco/powietrze-mcp/actions/workflows/ci.yml/badge.svg"></a>
  <a href="LICENSE"><img alt="Licencja MIT" src="https://img.shields.io/badge/licencja-MIT-blue"></a>
  <img alt="Bez klucza API" src="https://img.shields.io/badge/klucz%20API-niepotrzebny-2ea44f">
</p>

<p align="center">
  <img src="docs/demo-pl.svg" width="860" alt="Animacja: użytkownik pyta asystenta AI, czy może dziś pobiegać w Krakowie koło Rynku; asystent korzysta z powietrze-mcp i podaje indeks GIOŚ, pomiary PM2.5 i PM10 oraz prognozę smogu na jutro">
</p>
<p align="center"><sub>Prawdziwa odpowiedź publicznego serwera (22.10.2026, 22:00).</sub></p>

## Podłącz w 30 sekund

Adres MCP: **`https://powietrze.compabase.com/mcp`** (Streamable HTTP, bez logowania).

- **Claude:** Ustawienia → Connectors → *Add custom connector* → wklej adres.
- **ChatGPT:** Settings → Connectors (tryb deweloperski) → dodaj serwer MCP.
- **Claude Code:** `claude mcp add --transport http powietrze https://powietrze.compabase.com/mcp`
- **Lokalnie (stdio):** `npx -y powietrze-mcp`, np. w Claude Desktop:

```json
{ "mcpServers": { "powietrze": { "command": "npx", "args": ["-y", "powietrze-mcp"] } } }
```

## Co potrafi

| Narzędzie | Do czego |
|---|---|
| `air_quality` | Dla miejscowości, adresu albo współrzędnych: najbliższe stacje GIOŚ (do 25 km) z **indeksem jakości powietrza** (bardzo dobry … bardzo zły), ostatnimi pomiarami **PM2.5, PM10, NO2, O3, SO2**, średnią dobową pyłów i odniesieniem do norm; **ostrzeżenia smogowe** GIOŚ w województwie; **prognoza na 3 dni** z modelu Copernicus CAMS – maksymalne PM2.5/PM10, europejski indeks jakości powietrza i **pyłki** (brzoza, olsza, trawy, bylica, ambrozja). |
| `air_stations` | Stacje pomiarowe GIOŚ w mieście, gminie, powiecie albo województwie. |
| `data_sources` | Źródła i zastrzeżenia. |

**Przykładowe pytania:** „Czy mogę dziś pobiegać w Krakowie?”, „Jaki jest smog w Zakopanem i czy jutro będzie lepiej?”, „Czy w weekend będzie dużo pyłków brzozy w Warszawie?”, „Jaka jest jakość powietrza przy ul. Marszałkowskiej 1 w Warszawie?”.

## Skąd dane

- **Pomiary:** Główny Inspektorat Ochrony Środowiska – Państwowy Monitoring Środowiska, API `https://api.gios.gov.pl/pjp-api` (ok. 290 stacji, wartości godzinowe; dane bieżące są niezweryfikowane). Odpowiedzi trzymamy w pamięci podręcznej (lista stacji 12 h, pomiary i indeks 15 min), żeby nie obciążać GIOŚ.
- **Prognoza i pyłki:** Copernicus Atmosphere Monitoring Service (CAMS) przez Open-Meteo (CC BY 4.0) – model w siatce ok. 10 km, nie zastępuje pomiaru. Można wyłączyć: `POWIETRZE_FORECAST=0`.
- **Adresy:** GUGiK (państwowy rejestr adresów).

## Własny serwer

```bash
npx -y powietrze-mcp --http --port 3000      # MCP: http://localhost:3000/mcp
npx -y powietrze-mcp now "Kraków, Rynek Główny 1"
npx -y powietrze-mcp stations "małopolskie"
```

Zmienne: `POWIETRZE_FORECAST=0`, `POWIETRZE_RATE_LIMIT`, `POWIETRZE_STATS=1` (anonimowe liczniki pod `/stats`), `POWIETRZE_CONTACT`, `POWIETRZE_PUBLIC_URL`.

## Licencja

Kod: MIT. Dane: GIOŚ (Państwowy Monitoring Środowiska), Copernicus CAMS / Open-Meteo (CC BY 4.0), GUGiK – dane przetworzone. Projekt niezależny, hostowany pro publico bono przez [Compabase](https://compabase.com). Zobacz też [rozkład-mcp](https://github.com/ContentWriterco/rozklad-mcp), [ceny-nieruchomosci-mcp](https://github.com/ContentWriterco/ceny-nieruchomosci-mcp) i [leki-mcp](https://github.com/ContentWriterco/leki-mcp).

---

## English

<p align="center"><img src="docs/demo-en.svg" width="860" alt="Animation: a user asks an AI assistant whether they can run tonight in Kraków; the assistant uses powietrze-mcp and answers with the GIOŚ index, PM2.5 and PM10 and tomorrow's smog forecast"></p>

**powietrze-mcp** gives AI assistants **live air quality in Poland**: the nearest official GIOŚ monitoring stations with the Polish air quality index and the latest hourly PM2.5, PM10, NO2, O3 and SO2, smog warnings for the voivodeship, and a **3-day Copernicus CAMS forecast** of particulate matter and **pollen** (birch, alder, grass, mugwort, ragweed). Public endpoint: `https://powietrze.compabase.com/mcp` (no key), or run locally with `npx -y powietrze-mcp`.

TDQS

A3.5/5.0

Scored across 3 tools

Disambiguation5/5

The three tools have clearly distinct purposes: station discovery, data provenance/context, and air quality retrieval for a place. An agent can easily choose between listing stations, reading source caveats, and fetching current/forecast air quality.

Naming Consistency5/5

All tool names use consistent snake_case noun phrases: air_stations, data_sources, air_quality. There is no mixing of casing or verb styles, and each name directly reflects its tool's scope.

Tool Count5/5

Three tools is well-scoped for a focused air quality server: one for station lookup, one for data provenance, and one for the main air quality query. Each tool earns its place without redundant surface area.

Completeness4/5

The surface covers the core workflow: find stations, understand data caveats, and retrieve current plus forecast air quality including pollutants and pollen. Minor gaps exist around station-specific detailed measurements or historical queries, but typical agent needs are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues