Skip to main content
Glama
seoul-realtime-air-by-region-mcp

seoul-realtime-air-by-region-mcp

by hlucent

seoul-realtime-air-by-region-mcp

MCP-сервер для получения информации о состоянии атмосферного воздуха в реальном времени по районам Сеула (центральный/северо-восточный/юго-восточный/северо-западный/юго-западный). Основан на API RealtimeCityAir от Seoul Open Data Plaza.

Предоставляемые инструменты

get_realtime_air_by_region

Получает информацию о состоянии атмосферного воздуха в реальном времени по районам (или конкретному району/станции).

Параметр

Обязательный

Описание

sarea_nm

Необязательный

Название района — один из: центральный/северо-восточный/юго-восточный/северо-западный/юго-западный. Если опущено, все районы

msrstn_nm

Необязательный

Название станции. Нельзя использовать без sarea_nm (см. ограничения ниже)

start_index, end_index

Необязательный

Диапазон запроса (по умолчанию 1–25, исходя из общего количества станций в Сеуле)

Возвращаемые поля: Дата и время измерения (MSRMT_DT), Район (SAREA_NM), Станция (MSRSTN_NM), Мелкие частицы (PM, мкг/м³), Сверхмелкие частицы (FPM, мкг/м³), Озон (OZON, ppm), Диоксид азота (NTDX, ppm), Угарный газ (CBMX, ppm), Диоксид серы (SPDX, ppm), Комплексный класс качества воздуха (CAI_GRD), Комплексный индекс качества воздуха (CAI_IDX), Вещество, определяющее индекс (CRST_SBSTN)

list_available_regions

Возвращает фиксированный список из 5 доступных названий районов (центральный/северо-восточный/юго-восточный/северо-западный/юго-западный). Без вызова API.

Related MCP server: Seoul Air Emission Facility MCP

Ограничения, подтверждённые на практике

  • Ключ аутентификации передаётся как сегмент пути URL (/{KEY}/json/RealtimeCityAir/...), а не как параметр запроса.

  • msrstn_nm нельзя использовать отдельно без sarea_nm. Из-за структуры пути API необязательные параметры фиксированы в порядке: место SAREA_NM → место MSRSTN_NM. Если опустить sarea_nm и передать только msrstn_nm, это значение будет интерпретировано как SAREA_NM, и будет возвращён INFO-200 (нет данных). Этот сервер отфильтровывает запросы, содержащие только msrstn_nm, до вызова API и выдаёт понятную ошибку.

  • Если расширить диапазон start_index/end_index, фактически возвращается несколько записей (при полном запросе подтверждено 25 записей).

  • Нормальные ответы — JSON, но некоторые ответы об ошибках (например, INFO-100 — неверный ключ) возвращаются в XML, даже если запрос был с TYPE=json. Этот сервер использует резервный парсер, который извлекает XML <CODE>/<MESSAGE> при неудаче парсинга JSON.

  • Значения CAI_GRD (комплексный класс качества воздуха) на момент измерений были «хорошо» и «нормально» («плохо»/«очень плохо» не наблюдались, но по спецификации возможны).

Установка и запуск (локально)

git clone https://github.com/hlucent/seoul-realtime-air-by-region-mcp.git
cd seoul-realtime-air-by-region-mcp
pip install -r requirements.txt
cp .env.example .env  # SEOUL_API_KEY 값 입력
python server.py

Переменные окружения

Имя переменной

Описание

SEOUL_API_KEY

Ключ аутентификации, полученный от Seoul Open Data Plaza

PORT

Порт сервера (по умолчанию 8000 при развёртывании на fly.io)

Развёртывание (fly.io)

fly launch --no-deploy
fly secrets set SEOUL_API_KEY=<발급받은키>
flyctl deploy

После развёртывания при подключении коннектора Claude.ai регистрируйте с добавлением пути /mcp в следующем виде:

https://<앱이름>.fly.dev/mcp

Безопасность

Сервер открыт без ключа аутентификации, применяется трёхуровневое ограничение частоты запросов на основе IP (3 запроса в минуту — при развёртывании на нескольких машинах может быть смягчено пропорционально количеству машин, при 5 нарушениях в час — блокировка на 24 часа, суточный лимит — 30 запросов).

IP определяется в первую очередь по заголовку Fly-Client-IP (устанавливается непосредственно edge-сервером fly.io, подделка клиентом невозможна). Счётчики ограничения частоты хранятся в памяти (dict) для каждого процесса и не разделяются между машинами, поэтому при распределении запросов fly.io между несколькими машинами фактическое ограничение для одного IP может быть смягчено до «3 запросов в минуту × количество работающих машин». Это компромисс в архитектуре, выбранный для реализации in-memory без внешнего хранилища.

Лицензия

Лицензия MIT. Исходные данные распространяются по лицензии KOGL Type 1.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server for querying Seoul's official air quality data, including real-time and hourly measurements by district. Enables AI assistants to answer questions about fine dust and air pollution using public data from Seoul Open Data Plaza.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language queries of Seoul's air pollutant emission facility permit data from the Seoul Open Data Platform, including facility search, detailed lookup, and status enumeration.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Retrieves hourly average air quality data (PM10, PM2.5, ozone, NO2, CO, SO2) from Seoul's open data platform, filtered by station or district.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying Korean air quality forecasts, weekly ultrafine dust forecasts, high-concentration PM2.5 forecasts, particulate matter alarm statuses, ozone advisories, and yellow dust advisories from the AirKorea OpenAPI.
    MIT