# Reported issues for noaa-spaceweather-mcp-server

Pod holds 15 of 15 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to [noaa-spaceweather-mcp-server](/mcp/noaa-spaceweather-mcp-server).

## Most discussed

### bug(get_alerts): active_only keeps cancelled and superseded products, drops in-force Watches

### Server version

0.1.13

### mcp-ts-core version

0.13.2

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### Description

With `active_only=true`, `noaa_spaceweather_get_alerts` decides whether a Watch is in force from `max_age_hours` alone. No `WAT*` product carries a `Valid To` / `Now Valid Until` / `End Time` line, so `validTo` is `null` on every Watch and the elapsed-`validTo` check short-circuits to "in force". Three wrong answers follow:

1. **Cancelled…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/29) · 2026-09-17 · closed · 3 comments

### bug(get_aurora_forecast): geographic latitude used as geomagnetic — Denver and San Francisco told aurora is impossible even in a G5 storm

### Server version

0.1.13

### mcp-ts-core version

0.13.2

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`noaa_spaceweather_get_aurora_forecast` passes the caller's **geographic** latitude into `minKpForLatitude()`, whose bands are **geomagnetic** latitudes. The dipole is tilted 9.21° from the rotation axis, so the two differ by up to ±9.2° — enough to move a location almost two of the function's 5° bands — and the error changes sign…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/28) · 2026-09-17 · closed · 3 comments

### bug(get_kp_index): G-scale thresholds miss SWPC's minus-third Kp values — Kp 4.67 reported G0 next to SWPC's G1

### Server version

0.1.13

### mcp-ts-core version

0.13.2

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`kpToGScale()` in `src/services/space-weather/space-weather-service.ts` uses whole-number cutoffs (`kp >= 5` → G1, `>= 6` → G2, `>= 7` → G3, `>= 8` → G4). SWPC publishes Kp in thirds and assigns each G level starting at that level's "minus" value, so Kp 5− (4.67) is G1. Four of the values SWPC actually emits come back one G level…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/27) · 2026-09-17 · closed · 3 comments

### bug(get_conditions): R/S forecast days report scale 0 that SWPC never issued, and drop the probabilities it did

### Server version

0.1.14

### mcp-ts-core version

0.13.3

### Runtime

Node.js

### Runtime version

Node 26.5.0

### Transport

stdio

### Description

For forecast days, `noaa-scales.json` carries `Scale: null` and `Text: null` on the `R` and `S` entries — SWPC does not forecast a radio-blackout or radiation-storm *level* for future days, it forecasts a *probability*, delivered as `MinorProb` / `MajorProb` (R) and `Prob` (S). `coerceScale()` maps that `null` to `0`, so `get_conditions`…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/23) · 2026-08-10 · closed · 3 comments

### bug(get_solar_activity): DST-unsafe local-time date arithmetic skews the 3-day flare forecast dates

### Server version

0.1.13

### mcp-ts-core version

0.13.2

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### OS

macOS

### Description

`getSolarProbabilities()` derives the three forecast dates it emits with local-calendar arithmetic — `d.setDate(d.getDate() + dayOffset)` — instead of UTC arithmetic. When the three-day window crosses a DST transition in the process timezone, the emitted instant shifts by the offset change, so `noaa_spaceweather_get_solar_activity`…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/22) · 2026-08-10 · closed · 3 comments

### bug(service): retry funnel can outlast a 60 s client timeout — adopt withRetry deadlineMs

### Server version

0.2.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

Every feed call goes through `withFeedClassification` in `src/services/space-weather/space-weather-service.ts`: `withRetry` with the default retry count (4 attempts) and `baseDelayMs: 1000`, each attempt a `fetchWithTimeout` bounded at `FETCH_TIMEOUT_MS = 15_000`. When SWPC accepts the connection and never answers, the worst case…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/41) · 2026-09-22 · closed · 1 comment

### feat(get_solar_wind): resolution="summary" — headline fields and window stats without the series

### Use case

The most common solar-wind question is "what are Bz and speed right now, and has Bz gone south lately?" `latestPlasma`, `latestMag`, `bzStatus`, and `bzMinInWindow` answer it, but `noaa_spaceweather_get_solar_wind` can't return those fields without the series. Measured live on 2026-09-22T22:25 UTC over stdio: the default 3-hour call is 67,560 B (173 plasma + 174 mag records); `window_hours: 1` is still 21,714 B (53 + 54 records). `resolution` can make the response larger (`full`)…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/38) · 2026-09-22 · closed · 1 comment

### feat(get_aurora_forecast): horizon view — report the strongest aurora within ~1000 km poleward, not just overhead

### Use case

A mid-latitude viewer asks `get_aurora_forecast` whether aurora is visible from where they are. The tool reads only the nearest grid cell, so it answers the overhead question only. SWPC's [30-minute aurora forecast page](https://www.swpc.noaa.gov/products/aurora-30-minute-forecast) notes aurora "does not need to be directly overhead but can be observed from as much as a 1000 km away when the aurora is bright" and draws a view line on its maps for this reason. During a storm, a…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/37) · 2026-09-22 · closed · 1 comment

## Most recent

### bug(get_aurora_forecast): verdict ignores daylight — a sunlit location reads "Low aurora chance"

### Server version

0.2.0

### mcp-ts-core version

0.13.3

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`get_aurora_forecast`'s verdict uses only OVATION probability and geomagnetic latitude — it never checks whether the sun is up. OVATION assigns non-zero probability on the oval's dayside, so a sunlit location can read "Low aurora chance" or "Good aurora chance … possible now." SWPC's [30-minute aurora forecast…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/36) · 2026-09-22 · closed · 1 comment

### feat(get_conditions): read noaa-scales.json key "-1" for yesterday's observed R/S/G

### Use case

`noaa_spaceweather_get_conditions` reads `noaa-scales.json` keys `"0"` (today) and `"1"`–`"3"` (forecast). The feed also carries key `"-1"`: the previous UTC day in the same shape as `"0"` — `DateStamp` one day back, `R`/`S`/`G` with populated `Scale`/`Text` and null probabilities. Nothing reads it. A "what peaked yesterday" answer is sitting in a feed the tool already fetches.

Related: #23

### Proposed behavior

Add `yesterday` next to `today` in the `get_conditions` output,…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/34) · 2026-09-17 · closed · 1 comment

### feat(get_conditions): include_discussion — SWPC forecast discussion explaining the storm forecast

### Use case

When `noaa_spaceweather_get_conditions` shows an elevated forecast (for example G1 today), the next questions are why and when: is it a CME or a coronal-hole stream, and when is it expected to arrive? The answer sits in SWPC's forecaster-written [Forecast Discussion](https://services.swpc.noaa.gov/text/discussion.txt) and the rationale lines of the [3-Day Forecast](https://services.swpc.noaa.gov/text/3-day-forecast.txt). No tool returns either, so the storm-scale numbers come with…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/32) · 2026-09-17 · closed · 1 comment

### feat(get_solar_activity): recent flare events with peak class, full X-ray class magnitude, and F10.7 flux

### Use case

HF radio operators and anyone tracking flare-driven radio blackouts ask "what flares happened today or this week, how big, and when did they peak?" `noaa_spaceweather_get_solar_activity` returns only the past hour of 1-minute X-ray samples, with a bare class letter (`"C"`, `"M"`) on `flareClass`. A 6-hour-old M5 flare is invisible to it, and M1.0 and M9.9 look the same although they sit on different R-scale levels (R1 vs R2).

### Proposed behavior

Three additions to…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/31) · 2026-09-17 · closed · 1 comment

### bug(errors): feed failures never carry the declared feed_unavailable reason — an upstream 404 surfaces as NotFound

### Server version

0.1.13

### mcp-ts-core version

0.13.2

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### Description

All six tools declare a `feed_unavailable` error contract (`ServiceUnavailable`, recovery "Retry in 30–60 seconds…"), and no code path reaches it. The only `ctx.fail` call in `src/` is `invalid_coordinates` in `get-aurora-forecast.tool.ts`. Every feed failure instead surfaces whatever `fetchWithTimeout` or `serviceUnavailable()` produced, so…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/30) · 2026-09-17 · closed · 1 comment

### bug(space-weather-service): a bare NaN token in a feed body fails the whole JSON.parse

### Server version

0.1.13

### mcp-ts-core version

0.13.2

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

Linux (containerized)

### Description

SWPC's RTSW wind feed can emit the non-standard bare token `NaN` in a numeric field. `fetchFeed` parses the whole response body with `JSON.parse` before any per-field normalization runs, so a single such token fails the entire feed — `parseNum`, which already maps non-finite values and the `-9999`…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/25) · 2026-08-11 · closed · 1 comment

### feat(get_solar_wind): bound the returned series — a 24 h window returns a ~550 KB response

### Use case

`noaa_spaceweather_get_solar_wind` returns every 1-minute RTSW record inside `window_hours`, uncapped, in both `structuredContent` and `content[]`. The schema advertises `window_hours` up to 168 and the RTSW feeds carry roughly 24 hours, so any window at or above 24 returns the whole feed — about 2,800 records rendered twice, a ~540 KB JSON-RPC response. An agent asking for a day of Bz history to judge whether a storm driver has been sustained pays that for a flat per-minute list…

[Read the thread](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues/24) · 2026-08-10 · closed · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/cyanheads/noaa-spaceweather-mcp-server/issues).
