airkorea-forecast-alert-mcp
airkorea-forecast-alert-mcp
Dies ist ein MCP-Server zum Abrufen der **Luftqualitätsvorhersage-, Feinstaubwarn- und Ozon-/Sandsturmwarnungs-**Serie der AirKorea-OpenAPI der Korea Environment Corporation.
Bereitgestellte Tools
Tool | Beschreibung |
| Abruf der Luftqualitätsvorhersage (Feinstaub/Ozon) – Vorhersage für heute/morgen/übermorgen, Vorhersageübersicht, Ursachen, Verhaltensempfehlungen |
| Abruf der Wochenvorhersage für Feinstaub PM2,5 – Vorhersage niedrig/hoch für 4 Tage ab 3 Tagen später |
| Abruf der Vorhersageinformationen für hohe PM2,5-Konzentrationen (über 50) – Überschreitung von PM2,5 50㎍/㎥ in 19 Regionen |
| Abruf des Feinstaubwarnstatus – Warnungs- und Alarmierungs-/Aufhebungsverlauf nach Region |
| Abruf der Ozonwarnungs-Informationen |
| Abruf der Sandsturmwarnungs-Informationen |
Designhinweis: In Abschnitt 3 der DEVPLAN.md wurde zunächst geprüft, Ozon- und Sandsturmwarnungen in einem Tool (mit
advisory_type-Parameter) zusammenzufassen. Da sich die Antwortfelder der beiden Operationen jedoch stark unterscheiden (Ozon: 8 Felder wie Konzentration, Warnstufe usw.; Sandsturm: 2 Textfelder für Runde und Region), haben wir uns entschieden, sie in 2 separate Tools aufzuteilen (insgesamt 6 Tools), da eine Zusammenfassung die Benutzerfreundlichkeit beeinträchtigen würde.
Related MCP server: seoul-timeavg-air-mcp
Datenquelle
Bereitstellende Organisation: Abteilung für Luftqualitätspolitik, Amt für Luftqualitätsumwelt, Klima- und Luftqualitätshauptquartier der Korea Environment Corporation
Plattform: Öffentliches Datenportal (data.go.kr)
Dienstleistungsgruppe: Korea Environment Corporation_AirKorea_Luftverschmutzungsinformationen (teilweise), Korea Environment Corporation_AirKorea_Vorhersageinformationen für hohe PM2,5-Konzentrationen (über 50), Korea Environment Corporation_AirKorea_Feinstaubwarnstatus, Korea Environment Corporation_AirKorea_Ozon-/Sandsturm-Informationen (Dienstleistungsgruppencode
B552584)Nutzungslizenz: Namensnennung-Keine Bearbeitung (Verpflichtung zur Angabe der Datenquelle (Umweltministerium/Korea Environment Corporation) einhalten)
Veröffentlichungszyklus (wichtig)
Punkt | Veröffentlichungszyklus |
Feinstaubvorhersage (heute/morgen/übermorgen) | 4× täglich (05/11/17/23 Uhr), 19 Regionen |
Ozonvorhersage | Wird nur vom 1. April bis 31. Oktober veröffentlicht. Heutige Vorhersage um 05/11 Uhr (bei Besonderheiten zusätzlich 17 Uhr) |
Wochenvorhersage für PM2,5 | 1× täglich um 17:30 Uhr, 19 Regionen, 4 Tage ab 3 Tagen später |
Vorhersage hoher PM2,5 (über 50) | 4× täglich (05/11/17/23 Uhr), jeweils ca. 10 Minuten pro Stadt |
Bekannte Einschränkungen (durch Messungen bestätigte Punkte, pro Operation – Messung vom 22./23.08.2026)
get_air_quality_forecast (getMinuDustFrcstDspth)
Das Feld
informDatawurde tatsächlich bestätigt. Jedes Element im items-Array unterscheidet die Vorhersage für heute/morgen/übermorgen, und derinformData-Wert (JJJJ-MM-TT) gibt das Zieldatum der jeweiligen Vorhersage an. (Beispiel: WenndataTime"Veröffentlicht am 22.08.2026 um 23 Uhr" ist, kommen die items in der ReihenfolgeinformData"2026-08-22"/"2026-08-23"/"2026-08-24")Bei Abfrage außerhalb der Ozon(O3)-Saison (November–März) wird ohne Fehler normal eine leere Liste (
resultCode: "00",totalCount: 0) zurückgegeben (durch Messung am 15.01.2026 bestätigt).Der Parameter
ver=1.1wurde bei dieser Messung nicht verwendet (die Standard-/Altversion funktioniert nachweislich ausreichend). Die Bild-URLs (imageUrl1–imageUrl9) werden als Referenzlinks unverändert zurückgegeben.
get_high_pm25_forecast (getMinuDustFrcstDspth50Over)
Da es in der Spezifikation keine Spezifikationstabelle gibt (nur Verweis auf das SWAGGER-Dokument), wurde alles durch Messungen bestätigt.
Die Parameter
searchDate,informCode(PM10/PM25/O3) funktionieren nachweislich normal.Alle 19 Regionsfeldnamen
{Region}50Over(durch Messung bestätigt, alphabetisch):busan50Over,chungbuk50Over,chungnam50Over,daegu50Over,daejeon50Over,gwangju50Over,gyeongbuk50Over,gyeonggibuk50Over,gyeongginam50Over,gyeongnam50Over,incheon50Over,jeju50Over,jeonbuk50Over,jeonnam50Over,sejong50Over,seoul50Over,ulsan50Over,youngdong50Over,youngseo50Over(Die gleichnamigen{Region}Grade-Felder werden ebenfalls bereitgestellt und enthalten die Texte gut/mäßig/schlecht/sehr schlecht).⚠️ Zu überprüfen (ungelöst): Dass der Wert bei Nicht-Überschreitung
"X"ist, wurde durch Messung bestätigt. Der Wert bei Überschreitung (in der Spezifikation vermuteter Wert"O") konnte jedoch im August 2026 (saisonal niedrige PM2,5-Zeit) nicht reproduziert werden und bleibt unbestätigt. Im Code ist der in der Spezifikation vermutete Wert ("O") als Standardwert hinterlegt; eine erneute Verifizierung bei tatsächlichem Auftreten hoher Konzentrationen ist erforderlich.Der abfragbare Zeitraum ist auf ca. den letzten Monat begrenzt (durch Messung bestätigt – bei Abfrage mit
searchDatevor diesem Zeitraum wird eine leere Liste mittotalCount: 0zurückgegeben).
get_pm_alarm_status (getUlfptcaAlarmInfo)
Laut Spezifikation haben noch nicht aufgehobene Warnungen
clearDateals"--",clearTimeals":00"undclearValals"공람"(keine Zahl). Dieses Tool behandelt diese Felder in solchen Fällen bei der sicheren Konvertierung alsnullund kennzeichnet den Status "nicht aufgehoben (laufend)" separat über die Feldercleared(bool)/status(String).⚠️ Zu überprüfen (ungelöst): Bei der vollständigen Abfrage der tatsächlichen Daten von 2025–2026 (insgesamt 448 Fälle) waren alle bereits vollständig aufgehoben; es konnte kein Fall gefunden werden, in dem das Muster für nicht aufgehobene Warnungen (
"--"/"공람") tatsächlich auftrat. Eine erneute Verifizierung bei zukünftigem Auftreten nicht aufgehobener Warnungen ist erforderlich.
get_ozone_advisory / get_yellowdust_advisory
Ozonwarnungen werden nur von April bis Oktober jährlich veröffentlicht (außerhalb der Saison gibt es einfach keine Daten; bei der O3-Messung außerhalb der Saison von
get_air_quality_forecastwurde separat bestätigt, dass die API selbst normal funktioniert).Sowohl
get_ozone_advisoryals auchget_yellowdust_advisorywurden mit dem Parameteryearerfolgreich getestet (2026/2025).
Gemeinsam: Gelegentliche Instabilität der öffentlichen Datenportal-API selbst
Bei den Messungen traten bei Aufrufen von
getMinuDustFrcstDspth,getMinuDustWeekFrcstDspthundgetMinuDustFrcstDspth50OvergelegentlichSERVICETIMEOUT_ERROR(Code 05) oder reine Netzwerk-Timeouts auf. Bei erneuten Versuchen derselben Anfrage wurden meist normale Antworten empfangen – dies ist kein Codefehler, sondern ein Lastproblem des öffentlichen Datenportal-Servers selbst. Der Client verwendet ein 30-Sekunden-Timeout mithttpx; dem Aufrufer wird empfohlen, bei Bedarf erneut zu versuchen.
Umgebungsvariablen
Variablenname | Beschreibung |
| Vom öffentlichen Datenportal ausgestellter AirKorea-Dienstschlüssel (Decoding-Schlüssel) |
Installation und Ausführung (lokal)
pip install -r requirements.txt --break-system-packages
cp .env.example .env # AIRKOREA_SERVICE_KEY 값 입력
python server.pyBereitstellung (fly.io)
fly launch --no-deploy
# fly.toml이 [http_service] 방식인지 확인 후
fly secrets set AIRKOREA_SERVICE_KEY=발급받은키
flyctl deployClaude.ai-Connector-Verbindung
https://airkorea-forecast-alert-mcp.fly.dev/mcpRate-Limit-Richtlinie
429 bei mehr als 3 Aufrufen pro Minute (bei Multi-Machine-Bereitstellung kann dies proportional zur Maschinenanzahl praktisch abgemildert werden)
Bei 5 oder mehr 429-Antworten innerhalb einer Stunde: 24-Stunden-Sperre
429 bei mehr als insgesamt 30 Aufrufen pro Tag (rollierend 24 Stunden)
Fehlercodes
Es wird das Standard-Fehlercodesystem des öffentlichen Datenportals verwendet (identisch mit Stufe 1 airkorea-realtime-mcp).
Code | Bedeutung |
00 | Normal |
03 | No Data |
10 | Ungültiger Anfrageparameter |
11 | Fehlender Pflichtparameter |
20 | Dienstzugriff verweigert |
22 | Tägliches Traffic-Limit überschritten |
30 | Nicht registrierter Dienstschlüssel |
31 | Dienstschlüssel-Nutzungszeitraum abgelaufen |
Verwandte Projekte
Da die AirKorea-OpenAPI sehr umfangreich ist, wird sie als 3 unabhängige MCPs entwickelt:
Stufe | Repository | Umfang |
Stufe 1 |
| Echtzeit-Messdaten, CAI, Messstationsinformationen |
Stufe 2 (dieses Projekt) |
| Luftqualitätsvorhersage, Wochenvorhersage für PM2,5, Vorhersage hoher Konzentrationen, Feinstaubwarnungen, Ozonwarnungen, Sandsturmwarnungen |
Stufe 3 |
| Statistiken nach Provinz/Messstation (Tages-/Monatsdurchschnitt), Messstationen mit CAI schlecht oder schlechter |
Lizenz
MIT (Code) / Einhaltung der Public-Nuri-Typ-1-Lizenz (Namensnennung) – Angabe der Datenquelle (Umweltministerium/Korea Environment Corporation)
This server cannot be deployed
Maintenance
Related MCP Connectors
Free, keyless real-time air quality (US AQI plus PM2.5, PM10, ozone, NO2, SO2, CO) for any city.
Air Quality MCP — wraps air-quality-api.open-meteo.com (free, no auth)
Access UK air quality data, monitoring sites, and hourly pollutant measurements across regions
Seoul Open Data MCP — city data for Seoul via the Seoul Open Data Plaza API
Related MCP Servers
- FlicenseBqualityDmaintenanceConnects to the Korea Meteorological Administration (KMA) Open API to provide short-term and ultra-short-term weather forecasts for South Korea. It enables users to query current weather conditions and future forecasts based on latitude and longitude.2-
- AlicenseNot gradedqualityCmaintenanceRetrieves hourly average air quality data (PM10, PM2.5, ozone, NO2, CO, SO2) from Seoul's open data platform, filtered by station or district.MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying real-time air quality data by region in Seoul, South Korea, using the Seoul Open Data Platform API, supporting multiple regions and monitoring stations.MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying real-time air quality measurements, integrated air quality index (CAI), and monitoring station information from Korea's Air Korea OpenAPI, including station search and nearby station lookup.MIT