Solarstorm

today.solarstormPublished by solarstorm.todayOfficial publisherv1.0.3Updated Oct 24, 2026

Space weather: Kp index, NOAA 3-day geomagnetic forecast, solar flares, aurora visibility.

VerifiedStreamable HTTPWeb executableLocation & LifestyleData & Analytics

Overview

AI-generated overview

Remote MCP server that gives an assistant live NOAA space weather data: Kp index, 3-day geomagnetic forecast, solar flares and aurora visibility by latitude.

What you can do
  • Read current geomagnetic activity: latest planetary Kp, its level and the observed 24-hour maximum
  • Read the official NOAA 3-day forecast: maximum expected Kp per calendar day (Europe/Berlin days)
  • Read solar X-ray activity: current GOES flare class and the 24-hour peak with its time
  • Check aurora odds for a latitude: Kp needed there, forecast maximum Kp for the next 24 hours and a plain-language verdict
When to use it
Useful when someone asks whether the aurora might be visible at a given place, how strong geomagnetic activity is now, or what the next few days look like for space weather. It is read-only and needs no account, so it is cheap to add for occasional sky-watching or space-weather questions.
Requirements
A remote streamable HTTP endpoint; no API keys, accounts or state. The README also documents running it locally with Python 3.10+ and the mcp SDK, or self-hosting with MCP_TRANSPORT, MCP_HOST and MCP_PORT. Outbound access to NOAA SWPC data is needed by the server.
Before you install
Read-only: it reports data and does not change anything. Values come from NOAA SWPC with a 10-second timeout and no caching, so upstream errors surface as an error field. Forecasts bucket days by Europe/Berlin time, and the model ignores the Bz component of the interplanetary magnetic field, so aurora verdicts are odds rather than promises.

Installation

In SourceWeft

  1. Open Solarstorm in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/today.solarstorm%2Fsolarstorm/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "solarstorm": {
      "type": "http",
      "url": "https://mcp.solarstorm.today/mcp"
    }
  }
}

README

solarstorm.today MCP server

[MCP Registry] [Registry version] [tests] [Python] [License: MIT] [Hosted]

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
Example responses
jsonc
// 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

bash
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.

bash
git clone https://github.com/newminya/solarstorm-mcp.gitcd solarstorm-mcppip install -r requirements.txtpython server.py          # waits for a stdio client; Ctrl+C to quit

claude_desktop_config.json:

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

Claude Code:

bash
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
systemd + reverse proxy
bash
mkdir -p /opt/solarstorm-mcp && cd /opt/solarstorm-mcp# copy server.py and requirements.txt herepython3 -m venv venv && venv/bin/pip install -r requirements.txt

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

ini
[Unit]Description=solarstorm.today MCP serverAfter=network.target
[Service]WorkingDirectory=/opt/solarstorm-mcpEnvironment=MCP_TRANSPORT=streamable-httpEnvironment=MCP_HOST=127.0.0.1Environment=MCP_PORT=8765ExecStart=/opt/solarstorm-mcp/venv/bin/python server.pyRestart=alwaysRestartSec=5
[Install]WantedBy=multi-user.target
bash
systemctl daemon-reload && systemctl enable --now solarstorm-mcpsystemctl status solarstorm-mcp

nginx in front, on a subdomain with a TLS certificate:

nginx
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

bash
pip install -r requirements-dev.txtpytest -m "not live"    # offline: parsing, thresholds, formattingpytest -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.

Source: README.md at commit 6d0fed8

Tools

4

get_current_kp

Current planetary Kp index: latest value, level (low/moderate/high/severe) and the observed 24-hour maximum.

Takes no parameters.

get_kp_forecast_3day

Official NOAA 3-day geomagnetic forecast: the maximum expected Kp per calendar day (Europe/Berlin days).

Takes no parameters.

get_solar_flares_24h

Solar X-ray activity of the past 24 hours from GOES: current flare class and the 24-hour peak class.

Takes no parameters.

get_aurora_visibility

Aurora visibility outlook for a geographic latitude (degrees, e.g. 48.2 for Vienna): the Kp you need there, the expected maximum Kp in the next 24 h, and a verdict.

Parameterslatituderequired

Version history

1
  1. v1.0.3LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts