solarstorm.today MCP server

MCP serverDev tools

solarstorm gives your AI live access to space weather data, including the Kp index, NOAA's 3-day geomagnetic forecast, solar flares, and aurora visibility. Once added, your AI can answer questions about current conditions and upcoming geomagnetic activity, or check whether auroras might be visible in your area.

Available today. Use it from your connected AI after setup.

Add solarstorm, then ask your AI things like "What's the Kp index right now?" or "Will the northern lights be visible this week?"

Then ask your AI: use solarstorm.today MCP server to get current kp

What your AI can do with it

  • Check the current Kp index
  • Get NOAA's 3-day geomagnetic forecast
  • Report recent solar flares
  • Tell you when and where auroras may be visible

From the project's README

As published by newminya/solarstorm-mcp in README.md.

Live space weather for AI assistants. This MCP server exposes NOAA SWPC data — the planetary Kp index, the official 3-day geomagnetic forecast, GOES solar flare activity, and aurora visibility for any latitude — as four tools your agent can call directly.

It runs the same logic as solarstorm.today, so answers match what the site shows. No API keys, no accounts, no state.

Ask your assistant: "Will I see the aurora in Vienna tonight?" → it calls get_aurora_visibility(48.2) and answers from live NOAA data.

Tools

ToolReturns
get_current_kp()Latest planetary Kp, level (low/moderate/high/severe), observed 24-hour maximum
get_kp_forecast_3day()Maximum forecast Kp per calendar day for the next 3 days (Europe/Berlin days)
get_solar_flares_24h()Current GOES X-ray flare class and the 24-hour peak, with peak time
get_aurora_visibility(latitude)Kp needed at that latitude, forecast max Kp for the next 24 h, and a plain-language verdict
// 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/"
}

Network or format errors from NOAA come back as an error field. The server never crashes on a bad upstream response.

Use the hosted server (no install)

A public instance is running at https://mcp.solarstorm.today/mcp.

Claude Code

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

Claude Desktop / claude.ai — add a custom connector pointing at https://mcp.solarstorm.today/mcp.

Any other MCP client — streamable HTTP transport, same URL, no auth.

Run it locally (stdio)

Requires Python 3.10+ — the floor set by the mcp SDK.

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

Self-host it (streamable HTTP)

Three environment variables control the transport:

VariableDefaultPurpose
MCP_TRANSPORTstdioSet to streamable-http for a network server
MCP_HOST0.0.0.0Bind address — use 127.0.0.1 behind a reverse proxy
MCP_PORT8765Listen port
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 in front, on a subdomain with a TLS certificate:

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
}

One thing that bites people: the MCP SDK rejects requests whose Host header doesn't match what it expects (DNS-rebinding protection). If handshakes fail with a 4xx while the service itself is healthy, check what Host your proxy forwards.

How the numbers are derived

  • Data sources. services.swpc.noaa.gov — planetary K-index and its forecast product, plus GOES primary 0.1–0.8 nm X-ray flux. 10-second timeout, no caching, no keys.
  • Daily maxima are bucketed by Europe/Berlin calendar days, matching the site's German-language audience. Only observed-blank, estimated, and predicted points count toward forecasts.
  • Flare classes convert X-ray flux to the standard A/B/C/M/X scale (X ≥ 1e-4 W/m², M ≥ 1e-5, and so on).
  • Aurora thresholds are European-sector guide values for naked-eye visibility: Kp 1 above 66°, 3 above 62°, 4.5 above 58°, 6 above 55°, 7 above 52°, 8 above 48°, 9 above 44.5°. Below ~44.5° only extreme historical storms qualify. A camera typically catches aurora about one Kp level earlier than the eye does.
  • Not modelled: the Bz component of the interplanetary magnetic field. A southward Bz makes a given Kp far more productive, and it can't be forecast days ahead — treat verdicts as odds, not promises.

Related

Tests

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

The offline suite runs on every push against Python 3.10–3.13. The live suite also runs daily on a schedule, because the one bug that reached production wasn't a logic error: NOAA's observed feed spells its key Kp while the forecast feed says kp, so valid 200 responses parsed to zero rows. Only a real call catches that kind of drift.

License

MIT — see LICENSE.

Tools it offers (4)

What this server listed when ahel dialed its public endpoint in Sep 2026, with no key and no account of yours. The names are the server’s own.

  • get_current_kp
  • get_kp_forecast_3day
  • get_solar_flares_24h
  • get_aurora_visibility

Signals

Last commit
Aug 2026
Advanced
Delivery
solarstorm MCP server → your ahel gateway (mcp.ahel.ai) → every connected AI client.
Catalog kind
mcp-server
Gateway key
today-solarstorm-solarstorm
Source
github.com/newminya/solarstorm-mcp
Hosted endpoint
https://mcp.solarstorm.today/mcp