Skip to main content

airquality-tr-mcp

Türkiye'nin resmi Ulusal Hava Kalitesi İzleme Ağı (UHKİA) verisini bir MCP (Model Context Protocol) sunucusu olarak sunar; Claude Desktop gibi MCP-uyumlu bir asistan, Türkiye'deki 81 il ve 365+ istasyon için gerçek zamanlı ve geçmişe dönük hava kalitesi sorularını yanıtlayabilir.

Güncel kararlı sürüm: v1.1.0

Bu, resmi olmayan (unofficial) bir entegrasyondur. T.C. Çevre, Şehircilik ve İklim Değişikliği Bakanlığı ile bir bağlantısı yoktur ve onlar tarafından desteklenmemektedir. Kaynak portalın kullanım şartlarına uymak kullanıcının sorumluluğundadır.

Veri kaynakları

  • Hava kalitesi ölçümleri: UHKİA (sim.csb.gov.tr) — resmi, dokümante edilmemiş ama halka açık uç noktalar üzerinden. Sunucu, kaynağın döndürdüğü HKİ (Hava Kalitesi İndeksi), kategori ve baskın kirletici değerlerini olduğu gibi kullanır; kendi hesaplaması, ortalaması veya tahmini yapılmaz.
  • Konum çözümleme (geocoding): OpenStreetMap Nominatim (https://nominatim.openstreetmap.org/search) — yalnızca metinle verilen bir konumu enlem/boyluma çevirmek için kullanılır, hava kalitesi verisi sağlamaz, API anahtarı gerektirmez. Koordinat girişi bu servisi hiç çağırmaz.

Gereksinimler

  • Python 3.11+
  • uv

Kurulum

PyPI üzerinden (önerilen):

pip install airquality-tr-mcp
# veya
uvx airquality-tr-mcp

Depoyu klonlayarak geliştirme amaçlı kurulum:

cd airquality-tr-mcp
uv sync

Claude Desktop / Codex yapılandırması (stdio)

PyPI paketiyle kurulduysa:

{
  "mcpServers": {
    "airquality-tr": {
      "command": "uvx",
      "args": ["airquality-tr-mcp"]
    }
  }
}

Depodan klonlanmış geliştirme kurulumuyla:

{
  "mcpServers": {
    "airquality-tr": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/airquality-tr-mcp",
        "run",
        "python",
        "-m",
        "airquality_tr_mcp.server"
      ]
    }
  }
}

REST API olarak çalıştırma

MCP sunucusuyla aynı iş mantığını kullanan bağımsız bir REST API de mevcuttur:

uv run airquality-tr-api
# veya
uv run uvicorn airquality_tr_mcp.api:app --reload

Varsayılan olarak http://localhost:8000 üzerinde dinler. Etkileşimli dokümantasyon için http://localhost:8000/docs adresini ziyaret edin. Uç noktalar MCP tool'larıyla bire bir eşlenir (/stations, /air-quality, /nearest-air-quality, /station, /historical-data, /trend-summary, /compare-cities, /ranking, /detailed-ranking, /health-advisory, /alert) ve aynı Türkçe JSON gövdelerini döndürür; tek fark, hata durumlarında (hata alanı dolu yanıtlarda) uygun bir HTTP durum kodu (400/404/409/429/502/504) döndürülmesidir.

Tool'lar

Tool Amaç
ping MCP sürecinin ayakta olup olmadığını kontrol eder
list_stations Aktif UHKİA istasyonlarını listeler
get_air_quality İl özeti ve istasyon bazlı döküm
get_nearest_air_quality Metin veya koordinatla en yakın resmi istasyon verisi
get_station_detail Tek bir istasyonun tam güncel ölçümü
get_historical_data Günlük geçmiş özetleri
get_trend_summary Kural tabanlı 3/6 günlük trend
compare_cities İki il için kompakt karşılaştırma
get_ranking İl seviyesinde sıralama
get_detailed_ranking İstasyon seviyesinde ülke geneli sıralama
get_health_advisory Kural tabanlı il sağlık tavsiyesi
check_alert İstek üzerine HKİ/kirletici eşik kontrolü

get_air_quality ve get_nearest_air_quality farklı amaçlara hizmet eder:

  • get_air_quality — bir ilin özetini ve o ildeki tüm istasyonların dökümünü verir; il özetindeki temsili değer o ildeki en kötü (en yüksek HKİ'li) istasyondur.
  • get_nearest_air_quality — bir konuma (metin veya koordinat) en yakın ve 75 km referans sınırı içinde geçerli HKİ ölçümü olan istasyonu bulur; il sınırlarıyla ilgilenmez.
  • get_health_advisory — bir ilin temsili (en kötü istasyon) durumuna göre kural tabanlı, deterministik tavsiye üretir.
  • get_ranking vs get_detailed_rankingget_ranking il başına tek temsili değerle hızlı bir sıralama verir; get_detailed_ranking aynı veriyi il bazında özetlemeden, istasyon seviyesinde ülke geneli sıralar.

Örnek çağrılar

ping()

list_stations()
list_stations(province="İstanbul")
list_stations(province="Kadıköy")

get_air_quality(province="Ankara")
get_air_quality(province="İstanbul", district="Kadıköy")

get_station_detail(station="Ankara - Çankaya")
get_station_detail(station="a1b2c3d4-e5f6-7890-abcd-ef1234567890")

get_historical_data(province="İzmir", days=7)
get_historical_data(province="İstanbul", days=14, district="Kadıköy")

get_trend_summary(province="Bursa", days=3)
get_trend_summary(province="Bursa", days=6)

compare_cities(province1="İstanbul", province2="Ankara")

get_ranking(mode="worst", limit=10)
get_ranking(mode="best", limit=5)

get_detailed_ranking(mode="worst", limit=20)

get_health_advisory(province="Kocaeli")

check_alert(province="İstanbul", threshold=100)
check_alert(province="Ankara", threshold=50, pollutant="PM10")
check_alert(province="İzmir", threshold=40, pollutant="PM10", district="Konak")

get_nearest_air_quality örnekleri

get_nearest_air_quality(location="Göbeklitepe, Şanlıurfa")
get_nearest_air_quality(latitude=37.2232, longitude=38.9224)

Gizlilik, atıf ve sınırlamalar

  • Metinle konum sorguları OpenStreetMap Nominatim'e gönderilir; koordinat girişi bu aktarımı tamamen atlar.
  • Hava kalitesi ölçümleri UHKİA'dan gelir.
  • Mesafe, yerel düz-hat (Haversine) hesabıdır — yol/rota mesafesi değildir.
  • referans_hki yerel bir tahmin, enterpolasyon veya ortalama değildir; ilgili istasyonun kaynaktaki resmi değeridir.
  • İki saatten eski bir ölçüm, açık bir uyarıyla birlikte yine de döndürülür.
  • Bu paket yerel bir stdio yazılımıdır; v1'de merkezi/barındırılan bir servis yoktur.
  • location parametresi il/ilçe yazım hatalarını get_air_quality kadar iyi tolere etmez (Nominatim serbest metin araması yapar, il/ilçe fuzzy düzeltmesi yapmaz); sadece bir ilin/ilçenin genel hava kalitesi soruluyorsa get_air_quality/list_stations tercih edilmelidir.
  • Nominatim/OpenStreetMap ve UHKİA birbirinden bağımsız, ilişkisiz iki dış servistir.

Lisans

Bu proje MIT Lisansı ile lisanslanmıştır.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

airquality_tr_mcp-1.1.0.tar.gz (310.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

airquality_tr_mcp-1.1.0-py3-none-any.whl (39.8 kB view details)

Uploaded Python 3

File details

Details for the file airquality_tr_mcp-1.1.0.tar.gz.

File metadata

  • Download URL: airquality_tr_mcp-1.1.0.tar.gz
  • Upload date:
  • Size: 310.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for airquality_tr_mcp-1.1.0.tar.gz
Algorithm Hash digest
SHA256 9d9afeaa4737a194417777cda9272990f801a6f71b40531282b59243d0bb1c92
MD5 7e8cf976d0e3e1fb33f935b307c79e3a
BLAKE2b-256 aed103fa75710a4ae1303fd28a187840338b6e3c97529703597fbe9f104c0d60

See more details on using hashes here.

File details

Details for the file airquality_tr_mcp-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: airquality_tr_mcp-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 39.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for airquality_tr_mcp-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b47e3423b690240294ae6e94a68f301e7ab7271270e9bf4dda20aa4c65fd77b8
MD5 45a4a45e240ba461f8121247c7e21ac4
BLAKE2b-256 86c82daf502e0f5b4d802fee54cd05f45bd74bb1dd78db8e716e81bcd4ab2711

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page