Skip to main content
Glama
newminya

solarstorm.today MCP server

by newminya

solarstorm.today MCP server

MCP Registry Registry version tests Python License: MIT Hosted

Живая космическая погода для ИИ-ассистентов. Этот MCP-сервер предоставляет данные NOAA SWPC — планетарный Kp-индекс, официальный трёхдневный геомагнитный прогноз, активность солнечных вспышек GOES и видимость полярного сияния на любой широте — в виде четырёх инструментов, которые ваш агент может вызывать напрямую.

Он использует ту же логику, что и solarstorm.today, поэтому ответы совпадают с тем, что показывает сайт. Никаких API-ключей, аккаунтов и состояния.

Спросите своего ассистента: «Увижу ли я полярное сияние в Вене сегодня ночью?» → он вызовет get_aurora_visibility(48.2) и ответит на основе живых данных NOAA.

Инструменты

Инструмент

Возвращает

get_current_kp()

Последний планетарный Kp, уровень (low/moderate/high/severe), наблюдаемый 24-часовой максимум

get_kp_forecast_3day()

Максимальный прогнозируемый Kp за каждый календарный день на ближайшие 3 дня (дни Europe/Berlin)

get_solar_flares_24h()

Текущий класс рентгеновских вспышек GOES и 24-часовой пик с временем пика

get_aurora_visibility(latitude)

Необходимый Kp на этой широте, прогнозируемый максимальный Kp на ближайшие 24 часа и вердикт простым языком

// get_current_kp()
{
  "kp": 4.33,
  "level": "moderate",
  "time_utc": "2026-08-27T18:00:00+00:00",
  "max_24h": 5.67,
  "source": "NOAA SWPC"
}

// get_kp_forecast_3day()
{
  "days": [
    { "date": "2026-08-27", "max_kp": 5.67, "level": "high" },
    { "date": "2026-08-28", "max_kp": 4.0,  "level": "moderate" },
    { "date": "2026-08-29", "max_kp": 2.33, "level": "low" }
  ],
  "timezone": "Europe/Berlin",
  "source": "NOAA SWPC",
  "note": "Kp>=5 is a G1 geomagnetic storm on the NOAA scale."
}

// get_solar_flares_24h()
{
  "current_class": "C2.1",
  "peak_24h_class": "M6.9",
  "peak_time_utc": "2026-08-27T04:12:00Z",
  "source": "NOAA GOES (0.1-0.8 nm)"
}

// get_aurora_visibility(48.2)
{
  "latitude": 48.2,
  "kp_needed_naked_eye": 8,
  "forecast_max_kp_24h": 5.67,
  "visible_tonight": false,
  "verdict": "Unlikely: forecast max Kp 5.7 is 2.3 below the ~Kp 8 needed at 48.2°. A camera picks aurora up roughly one Kp level earlier.",
  "details": "https://solarstorm.today/aurora-tonight/"
}

Сетевые ошибки или ошибки формата от NOAA возвращаются в виде поля error. Сервер никогда не падает из-за некорректного ответа вышестоящего сервиса.

Related MCP server: spaceweather-mcp

Используйте размещённый сервер (без установки)

Публичный экземпляр работает по адресу https://mcp.solarstorm.today/mcp.

Claude Code

claude mcp add --transport http solarstorm https://mcp.solarstorm.today/mcp

Claude Desktop / claude.ai — добавьте пользовательский коннектор, указав https://mcp.solarstorm.today/mcp.

Любой другой MCP-клиент — потоковый HTTP-транспорт, тот же URL, без аутентификации.

Запуск локально (stdio)

Требуется Python 3.10+ — минимальная версия, установленная SDK mcp.

git clone https://github.com/newminya/solarstorm-mcp.git
cd solarstorm-mcp
pip install -r requirements.txt
python server.py          # waits for a stdio client; Ctrl+C to quit

claude_desktop_config.json:

{
  "mcpServers": {
    "solarstorm": {
      "command": "python",
      "args": ["/absolute/path/to/solarstorm-mcp/server.py"]
    }
  }
}

Claude Code:

claude mcp add solarstorm -- python /absolute/path/to/solarstorm-mcp/server.py

Самостоятельный хостинг (streamable HTTP)

Три переменные окружения управляют транспортом:

Переменная

По умолчанию

Назначение

MCP_TRANSPORT

stdio

Установите в streamable-http для сетевого сервера

MCP_HOST

0.0.0.0

Адрес привязки — используйте 127.0.0.1 за обратным прокси

MCP_PORT

8765

Порт прослушивания

mkdir -p /opt/solarstorm-mcp && cd /opt/solarstorm-mcp
# copy server.py and requirements.txt here
python3 -m venv venv && venv/bin/pip install -r requirements.txt

/etc/systemd/system/solarstorm-mcp.service:

[Unit]
Description=solarstorm.today MCP server
After=network.target

[Service]
WorkingDirectory=/opt/solarstorm-mcp
Environment=MCP_TRANSPORT=streamable-http
Environment=MCP_HOST=127.0.0.1
Environment=MCP_PORT=8765
ExecStart=/opt/solarstorm-mcp/venv/bin/python server.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
systemctl daemon-reload && systemctl enable --now solarstorm-mcp
systemctl status solarstorm-mcp

nginx впереди, на поддомене с TLS-сертификатом:

server {
    server_name mcp.example.com;
    location /mcp {
        proxy_pass http://127.0.0.1:8765/mcp;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_read_timeout 3600s;
    }
    # + certbot TLS lines
}

Одна вещь, которая часто подводит: MCP SDK отклоняет запросы, чей заголовок Host не совпадает с ожидаемым (защита от DNS-rebinding). Если рукопожатия завершаются ошибкой 4xx, а сам сервис здоров, проверьте, какой Host передаёт ваш прокси.

Как вычисляются значения

  • Источники данных. services.swpc.noaa.gov — планетарный K-индекс и его прогнозный продукт, а также первичный рентгеновский поток GOES в диапазоне 0.1–0.8 nm. Таймаут 10 секунд, без кэширования, без ключей.

  • Суточные максимумы группируются по календарным дням Europe/Berlin, что соответствует немецкоязычной аудитории сайта. Только точки с отсутствующим наблюдением, estimated и predicted учитываются в прогнозах.

  • Классы вспышек преобразуют рентгеновский поток в стандартную шкалу A/B/C/M/X (X ≥ 1e-4 W/m², M ≥ 1e-5 и так далее).

  • Пороги полярного сияния — это ориентировочные значения для европейского сектора при наблюдении невооружённым глазом: Kp 1 выше 66°, 3 выше 62°, 4.5 выше 58°, 6 выше 55°, 7 выше 52°, 8 выше 48°, 9 выше 44.5°. Ниже ~44.5° подходят только экстремальные исторические бури. Камера обычно замечает полярное сияние примерно на один уровень Kp раньше, чем глаз.

  • Не учитывается: компонента Bz межпланетного магнитного поля. Южное направление Bz делает данный Kp гораздо более продуктивным, и его нельзя спрогнозировать на несколько дней вперёд — относитесь к вердиктам как к вероятностям, а не обещаниям.

Связанные

Тесты

pip install -r requirements-dev.txt
pytest -m "not live"    # offline: parsing, thresholds, formatting
pytest -m live          # hits NOAA, asserts the live response contract

Офлайн-набор тестов запускается при каждом пуше на Python 3.10–3.13. Живой набор также запускается ежедневно по расписанию, потому что единственный баг, добравшийся до продакшена, не был логической ошибкой: в наблюдаемом потоке NOAA ключ пишется как Kp, а в прогнозном — как kp, поэтому валидные ответы с кодом 200 разбирались в ноль строк. Только реальный вызов может поймать такой дрейф.

Лицензия

MIT — см. LICENSE.

Related MCP Connectors

Related MCP Servers