MCP server exposing live NOAA space weather (Kp, 3-day forecast, flares, aurora) — powers solarstorm.today
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
claude mcp add solarstorm-mcp -- python -m -r{
"mcpServers": {
"solarstorm-mcp": {
"command": "python",
"args": ["-m", "-r"],
"env": {
"MCP_HOST": "<mcp_host>"
}
}
}
}MCP_HOSTMCP Servers overview
# solarstorm.today MCP server
[](https://registry.modelcontextprotocol.io/v0.1/servers/today.solarstorm%2Fsolarstorm/versions/latest)
[](https://registry.modelcontextprotocol.io/v0.1/servers/today.solarstorm%2Fsolarstorm/versions/latest)
[](https://github.com/newminya/solarstorm-mcp/actions/workflows/tests.yml)
[](https://www.python.org/)
[](LICENSE)
[](https://solarstorm.today/mcp/)
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](https://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
| Tool | Returns |
|---|---|
| `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 |
<details>
<summary>Example responses</summary>
```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/"
}
```
</details>
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.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`:
```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:
| Variable | Default | Purpose |
|---|---|---|
| `MCP_TRANSPORT` | `stdio` | Set to `streamable-http` for a network server |
| `MCP_HOST` | `0.0.0.0` | Bind address — use `127.0.0.1` behind a reverse proxy |
| `MCP_PORT` | `8765` | Listen port |
<details>
<summary>systemd + reverse proxy</summary>
```bash
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`:
```ini
[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
```
```bash
systemctl daemon-reload && systemctl enable --now solarstorm-mcp
systemctl 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.
</details>
## 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
- [solarstorm.today](https://solarstorm.today) — the site this mirrors (EN/DE)
- [Aurora tonight](https://solarstorm.today/aurora-tonight/) — live map with the NOAA OVATION oval
- [3-day forecast](https://solarstorm.today/3-day-forecast/)
- [About this MCP server](https://solarstorm.today/mcp/)
## Tests
```bash
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](LICENSE).
What people ask about solarstorm-mcp
What is newminya/solarstorm-mcp?
+
newminya/solarstorm-mcp is mcp servers for the Claude AI ecosystem. MCP server exposing live NOAA space weather (Kp, 3-day forecast, flares, aurora) — powers solarstorm.today It has 0 GitHub stars and its last recorded update is dated 2026-08-27.
How do I install solarstorm-mcp?
+
You can install solarstorm-mcp by cloning the repository (https://github.com/newminya/solarstorm-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is newminya/solarstorm-mcp safe to use?
+
Our security agent has analyzed newminya/solarstorm-mcp and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains newminya/solarstorm-mcp?
+
newminya/solarstorm-mcp is maintained by newminya. The last recorded GitHub activity is dated 2026-08-27, with 0 open issues.
Are there alternatives to solarstorm-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy solarstorm-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/newminya-solarstorm-mcp)<a href="https://claudewave.com/repo/newminya-solarstorm-mcp"><img src="https://claudewave.com/api/badge/newminya-solarstorm-mcp" alt="Featured on ClaudeWave: newminya/solarstorm-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!