@dangahagan/weather-mcp 1.18.0 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -12
- package/dist/config/api.d.ts +22 -0
- package/dist/config/api.d.ts.map +1 -1
- package/dist/config/api.js +24 -0
- package/dist/config/api.js.map +1 -1
- package/dist/config/cache.d.ts +5 -0
- package/dist/config/cache.d.ts.map +1 -1
- package/dist/config/cache.js +26 -0
- package/dist/config/cache.js.map +1 -1
- package/dist/handlers/alertsHandler.d.ts +22 -3
- package/dist/handlers/alertsHandler.d.ts.map +1 -1
- package/dist/handlers/alertsHandler.js +375 -2
- package/dist/handlers/alertsHandler.js.map +1 -1
- package/dist/handlers/currentConditionsHandler.d.ts.map +1 -1
- package/dist/handlers/currentConditionsHandler.js +82 -11
- package/dist/handlers/currentConditionsHandler.js.map +1 -1
- package/dist/handlers/weatherImageryHandler.d.ts +7 -5
- package/dist/handlers/weatherImageryHandler.d.ts.map +1 -1
- package/dist/handlers/weatherImageryHandler.js +187 -9
- package/dist/handlers/weatherImageryHandler.js.map +1 -1
- package/dist/handlers/weatherSummaryHandler.d.ts +4 -1
- package/dist/handlers/weatherSummaryHandler.d.ts.map +1 -1
- package/dist/handlers/weatherSummaryHandler.js +6 -14
- package/dist/handlers/weatherSummaryHandler.js.map +1 -1
- package/dist/handlers/wildfireHandler.d.ts +22 -3
- package/dist/handlers/wildfireHandler.d.ts.map +1 -1
- package/dist/handlers/wildfireHandler.js +398 -11
- package/dist/handlers/wildfireHandler.js.map +1 -1
- package/dist/index.js +49 -9
- package/dist/index.js.map +1 -1
- package/dist/services/basemap.d.ts +100 -0
- package/dist/services/basemap.d.ts.map +1 -0
- package/dist/services/basemap.js +171 -0
- package/dist/services/basemap.js.map +1 -0
- package/dist/services/firms.d.ts +76 -0
- package/dist/services/firms.d.ts.map +1 -0
- package/dist/services/firms.js +250 -0
- package/dist/services/firms.js.map +1 -0
- package/dist/services/geomet.d.ts +66 -0
- package/dist/services/geomet.d.ts.map +1 -0
- package/dist/services/geomet.js +194 -0
- package/dist/services/geomet.js.map +1 -0
- package/dist/services/meteoalarm.d.ts +125 -0
- package/dist/services/meteoalarm.d.ts.map +1 -0
- package/dist/services/meteoalarm.js +348 -0
- package/dist/services/meteoalarm.js.map +1 -0
- package/dist/services/nominatim.d.ts +16 -0
- package/dist/services/nominatim.d.ts.map +1 -1
- package/dist/services/nominatim.js +44 -1
- package/dist/services/nominatim.js.map +1 -1
- package/dist/services/openmeteo.d.ts +25 -1
- package/dist/services/openmeteo.d.ts.map +1 -1
- package/dist/services/openmeteo.js +62 -13
- package/dist/services/openmeteo.js.map +1 -1
- package/dist/types/firms.d.ts +110 -0
- package/dist/types/firms.d.ts.map +1 -0
- package/dist/types/firms.js +14 -0
- package/dist/types/firms.js.map +1 -0
- package/dist/types/geomet.d.ts +77 -0
- package/dist/types/geomet.d.ts.map +1 -0
- package/dist/types/geomet.js +20 -0
- package/dist/types/geomet.js.map +1 -0
- package/dist/types/imagery.d.ts +23 -0
- package/dist/types/imagery.d.ts.map +1 -1
- package/dist/types/meteoalarm.d.ts +110 -0
- package/dist/types/meteoalarm.d.ts.map +1 -0
- package/dist/types/meteoalarm.js +15 -0
- package/dist/types/meteoalarm.js.map +1 -0
- package/dist/types/nominatim.d.ts +18 -0
- package/dist/types/nominatim.d.ts.map +1 -1
- package/dist/types/openmeteo.d.ts +12 -3
- package/dist/types/openmeteo.d.ts.map +1 -1
- package/dist/utils/composite.d.ts +181 -0
- package/dist/utils/composite.d.ts.map +1 -0
- package/dist/utils/composite.js +329 -0
- package/dist/utils/composite.js.map +1 -0
- package/dist/utils/fireWeather.d.ts +59 -0
- package/dist/utils/fireWeather.d.ts.map +1 -1
- package/dist/utils/fireWeather.js +141 -0
- package/dist/utils/fireWeather.js.map +1 -1
- package/dist/utils/firmsHotspots.d.ts +93 -0
- package/dist/utils/firmsHotspots.d.ts.map +1 -0
- package/dist/utils/firmsHotspots.js +410 -0
- package/dist/utils/firmsHotspots.js.map +1 -0
- package/dist/utils/locationResolver.d.ts +14 -1
- package/dist/utils/locationResolver.d.ts.map +1 -1
- package/dist/utils/locationResolver.js +16 -6
- package/dist/utils/locationResolver.js.map +1 -1
- package/dist/utils/units.d.ts +4 -0
- package/dist/utils/units.d.ts.map +1 -1
- package/dist/utils/units.js +6 -0
- package/dist/utils/units.js.map +1 -1
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@dangahagan/weather-mcp)
|
|
4
4
|
[](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.dgahagan/weather-mcp)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
|
-
[](./docs/testing/TEST_SUITE_README.md)
|
|
7
7
|
[](https://nodejs.org)
|
|
8
8
|
|
|
9
9
|
**Give your AI assistant real weather data — 17 tools, zero API keys, zero signup, zero cost.**
|
|
10
10
|
|
|
11
|
-
Weather MCP is a [Model Context Protocol](https://modelcontextprotocol.io) server that connects AI assistants (Claude, Cursor, Cline, Zed, and any other MCP client) to live weather data: forecasts, current conditions, alerts, air quality, marine conditions, lightning, radar, rivers, wildfires, and 85+ years of historical weather. It's built entirely on free public data sources — NOAA, Open-Meteo, USGS, NIFC, RainViewer, and Blitzortung.org — so there is nothing to sign up for and no key to paste in.
|
|
11
|
+
Weather MCP is a [Model Context Protocol](https://modelcontextprotocol.io) server that connects AI assistants (Claude, Cursor, Cline, Zed, and any other MCP client) to live weather data: forecasts, current conditions, alerts, air quality, marine conditions, lightning, radar, rivers, wildfires, and 85+ years of historical weather. It's built entirely on free public data sources — NOAA, Open-Meteo, USGS, NIFC, NASA FIRMS, RainViewer, and Blitzortung.org — so there is nothing to sign up for and no key to paste in.
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
claude mcp add weather -- npx -y @dangahagan/weather-mcp@latest
|
|
@@ -35,8 +35,11 @@ Then just ask:
|
|
|
35
35
|
> *"Are there wildfires within 50 miles of my cabin?"*
|
|
36
36
|
> *"Will there be a full moon this weekend?"*
|
|
37
37
|
> *"Is this a record high for today?"*
|
|
38
|
+
> *"How bad is the pollen in Berlin today?"*
|
|
38
39
|
> *"What was the weather in Paris on June 6, 1944?"*
|
|
39
40
|
|
|
41
|
+
👉 **[See it in action](./examples/)** — real prompts like these with the answers they produced, and the raw server output behind them.
|
|
42
|
+
|
|
40
43
|
📦 Listed in the [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.dgahagan/weather-mcp) as `io.github.dgahagan/weather-mcp`.
|
|
41
44
|
|
|
42
45
|
## Why this server?
|
|
@@ -47,7 +50,7 @@ Choose this one if you want:
|
|
|
47
50
|
|
|
48
51
|
- **Genuinely free** — every data source is a free public API. No trial that expires, no credit card, no rate-limited "free tier" bait.
|
|
49
52
|
- **No API keys** — install to first forecast in under a minute. Nothing to configure, nothing to leak into a repo.
|
|
50
|
-
- **Fully open source** — MIT licensed, readable TypeScript, 1,
|
|
53
|
+
- **Fully open source** — MIT licensed, readable TypeScript, 1,961 tests. Audit it, fork it, fix it.
|
|
51
54
|
- **Privacy-respecting** — your queries go directly from your machine to public weather APIs. No middleman server, no telemetry.
|
|
52
55
|
- **Breadth** — 17 tools covering weather, safety hazards (lightning, floods, wildfires), marine conditions, air quality, and historical data back to 1940. Most weather MCPs stop at forecasts.
|
|
53
56
|
|
|
@@ -60,17 +63,17 @@ All 17 tools, documented in detail in **[docs/TOOLS.md](./docs/TOOLS.md)**:
|
|
|
60
63
|
| Tool | What it does | Coverage |
|
|
61
64
|
|------|-------------|----------|
|
|
62
65
|
| `get_forecast` | Daily/hourly forecasts up to 16 days by coordinates, saved location, or city name; sunrise/sunset, UV, precipitation probability, optional climate-normals comparison, optional moon phase & twilight almanac | 🌍 Global |
|
|
63
|
-
| `get_current_conditions` | Current weather: temperature, wind, humidity, pressure; NOAA station observations in the US (plus heat index/wind chill, snow depth, optional fire-weather indices), Open-Meteo model data elsewhere, or real airport station observations worldwide with `source="metar"
|
|
64
|
-
| `get_alerts` | Active watches, warnings, and advisories sorted by severity | 🇺🇸
|
|
66
|
+
| `get_current_conditions` | Current weather: temperature, wind, humidity, pressure; NOAA station observations in the US (plus heat index/wind chill, snow depth, optional NOAA fire-weather indices), Open-Meteo model data elsewhere (with an optional computed Fosberg fire-weather index), or real airport station observations worldwide with `source="metar"`. Always states the observation's age, and automatically falls back to a fresher nearby station when the nearest one has gone dark | 🌍 Global |
|
|
67
|
+
| `get_alerts` | Active watches, warnings, and advisories sorted by severity; official national warnings for the US (NOAA), Canada (ECCC), and 38 European countries (MeteoAlarm) | 🇺🇸 🇨🇦 🇪🇺 |
|
|
65
68
|
| `get_historical_weather` | Hourly/daily observations from 1940 to present | 🌍 Global |
|
|
66
69
|
| `get_weather_summary` | One-call overview combining current conditions, forecast, and alerts (optionally air quality and lightning) | 🌍 Global |
|
|
67
70
|
| `search_location` | Geocode place names to coordinates ("Paris" → 48.85, 2.35) | 🌍 Global |
|
|
68
71
|
| `get_air_quality` | AQI (US/European scales), pollutants, UV index, health guidance; current pollen levels for European locations; optional day-grouped forecast up to 7 days with per-day peak AQI and UV | 🌍 Global |
|
|
69
72
|
| `get_marine_conditions` | Wave height, swell, ocean currents, Douglas Sea Scale — includes Great Lakes and major US bays; forecast up to 16 days | 🌍 Global |
|
|
70
|
-
| `get_weather_imagery` | Precipitation radar (static or 2-hour animated loops) + GOES satellite imagery | 🌍 Global |
|
|
73
|
+
| `get_weather_imagery` | Precipitation radar (static or 2-hour animated loops) + GOES satellite imagery; `composite: true` returns a finished radar map over a base map as an image | 🌍 Global |
|
|
71
74
|
| `get_lightning_activity` | Real-time strike detection with 4-level proximity safety assessment | 🌍 Global |
|
|
72
75
|
| `get_river_conditions` | US: NWPS gauge levels, flood stages, streamflow, rise/fall trends, forecast series. Elsewhere: GloFAS modeled discharge snapped to the nearest river channel, with ensemble forecast | 🌍 Global |
|
|
73
|
-
| `get_wildfire_info` |
|
|
76
|
+
| `get_wildfire_info` | US: named incidents with containment, size, and safety guidance from the nearest *uncontained* fire. Elsewhere: NASA FIRMS satellite heat detections (VIIRS, near real-time), clustered with distance, bearing, and intensity | 🌍 Global |
|
|
74
77
|
| `check_service_status` | Health checks for all upstream APIs plus cache statistics | — |
|
|
75
78
|
| `save_location` | Save places as aliases ("home", "cabin") with optional activity tags | — |
|
|
76
79
|
| `list_saved_locations` | List all saved locations | — |
|
|
@@ -86,6 +89,7 @@ All 17 tools, documented in detail in **[docs/TOOLS.md](./docs/TOOLS.md)**:
|
|
|
86
89
|
## Feature highlights
|
|
87
90
|
|
|
88
91
|
- **Smart source selection** — US queries use NOAA (detailed, includes forecaster narratives); everywhere else uses Open-Meteo. You never pick; it just works.
|
|
92
|
+
- **International weather alerts** — `get_alerts` routes by country: NOAA in the US, Environment and Climate Change Canada alerts in Canada, and the official national warnings of 38 European countries via EUMETNET MeteoAlarm — shown unmodified, with the issuing service credited. Border cities like Toronto get the right country's alerts, not the nearest bounding box's.
|
|
89
93
|
- **Real observations worldwide** — ask for what a station is *actually reporting* and `get_current_conditions` will read the nearest airport's METAR (`source="metar"`): a genuine instrument reading anywhere on earth, with the station, its distance, and the observation age always stated. Outside the US this is the difference between a measurement and a model estimate.
|
|
90
94
|
- **Saved locations** — save "home", "work", or "cabin" once, then ask *"what's the weather at home?"* Locations persist in `~/.weather-mcp/locations.json` and can be tagged with activities ("boating", "skiing") so the AI highlights what matters to you.
|
|
91
95
|
- **Climate context** — optional 30-year climate normals show how today compares: *"10°F warmer than normal for this date."* For US locations the normals also carry the record high/low for the date and the year it was set: *"is this a record high?"*
|
|
@@ -104,16 +108,23 @@ All free, all public, no authentication required:
|
|
|
104
108
|
| Source | Provides | Coverage |
|
|
105
109
|
|--------|----------|----------|
|
|
106
110
|
| [NOAA Weather API](https://www.weather.gov/documentation/services-web-api) | US forecasts, current conditions, alerts, fire weather | US |
|
|
107
|
-
| [Open-Meteo](https://open-meteo.com/) | Global forecasts, historical data (1940+), air quality, marine, geocoding, climate normals | Global |
|
|
111
|
+
| [Open-Meteo](https://open-meteo.com/) | Global forecasts, historical data (1940+), air quality, marine, geocoding, climate normals, fire-weather inputs | Global |
|
|
108
112
|
| [NOAA NWPS](https://water.noaa.gov/) | River levels, streamflow, flood stages | US |
|
|
109
113
|
| [RCC ACIS](https://www.rcc-acis.org/) | Daily record high/low temperatures | US |
|
|
114
|
+
| [EUMETNET MeteoAlarm](https://meteoalarm.org/) | Official national weather warnings (38 European countries) | Europe |
|
|
115
|
+
| [MSC GeoMet](https://api.weather.gc.ca/) | Environment and Climate Change Canada weather alerts | Canada |
|
|
110
116
|
| [NIFC WFIGS](https://data-nifc.opendata.arcgis.com/) | Active wildfire perimeters and incidents | US |
|
|
117
|
+
| [NASA FIRMS](https://firms.modaps.eosdis.nasa.gov/) | Satellite fire detections (VIIRS, near real-time) | Global |
|
|
111
118
|
| [RainViewer](https://www.rainviewer.com/api.html) | Precipitation radar imagery | Global |
|
|
112
|
-
| [NASA GIBS](https://www.earthdata.nasa.gov/engage/open-data-services-software/earthdata-developer-portal/gibs-api) | GOES GeoColor satellite imagery | Western Hemisphere |
|
|
119
|
+
| [NASA GIBS](https://www.earthdata.nasa.gov/engage/open-data-services-software/earthdata-developer-portal/gibs-api) | GOES GeoColor satellite imagery; base map for composited radar | Western Hemisphere (satellite), Global (base map) |
|
|
113
120
|
| [Blitzortung.org](https://www.blitzortung.org/) | Community lightning detection network | Global |
|
|
114
121
|
|
|
115
122
|
Open-Meteo allows 10,000 requests/day for non-commercial use; caching keeps typical AI usage far below that. Please respect the upstream providers' fair-use terms.
|
|
116
123
|
|
|
124
|
+
Composited radar maps (`get_weather_imagery` with `composite: true`) carry the acknowledgment NASA requests for GIBS imagery, alongside the RainViewer radar credit:
|
|
125
|
+
|
|
126
|
+
> Imagery provided by services from NASA's Global Imagery Browse Services (GIBS), part of NASA's Earth Science Data and Information System (ESDIS).
|
|
127
|
+
|
|
117
128
|
## Installation
|
|
118
129
|
|
|
119
130
|
**Recommended — npx (always latest, nothing to manage):**
|
|
@@ -254,12 +265,16 @@ Being honest about what free public data can and can't do:
|
|
|
254
265
|
| Historical weather (1940+) | ✅ (>7 days old) | Station-level detail for last 7 days |
|
|
255
266
|
| Air quality, marine, radar, lightning | ✅ | — |
|
|
256
267
|
| Current conditions | ✅ (model data, or real station observations via `source="metar"`) | Station observations via NOAA (richer detail) |
|
|
257
|
-
| Weather alerts |
|
|
268
|
+
| Weather alerts | ✅ US, Canada, and 38 European countries | NWS zone-level precision; Europe is matched at country level |
|
|
258
269
|
| River conditions | ✅ (GloFAS modeled discharge) | Gauge observations + official flood stages via NWPS |
|
|
259
|
-
| Wildfires |
|
|
270
|
+
| Wildfires | ✅ (FIRMS satellite detections) | Named incidents with acreage + containment via NIFC |
|
|
271
|
+
| Fire weather | ✅ (computed Fosberg index + dryness context) | NOAA-published Haines, grassland, red-flag indices |
|
|
260
272
|
|
|
273
|
+
- European alerts are matched at **country level** — the keyless MeteoAlarm feeds carry no region polygons, so warnings for a large country may not affect the requested point; the output says so. Canadian alerts use a real bbox query with polygon-backed features.
|
|
261
274
|
- International current conditions default to **model-interpolated** values at the exact coordinates. `source="metar"` returns a **real instrument reading** instead — but from the nearest airport, which may be tens of km away and up to an hour old. The output always names the station, its distance and bearing, and the observation age, so the tradeoff is visible rather than assumed. METAR coverage follows airports, so remote land and open ocean have real gaps.
|
|
262
275
|
- Historical data older than 7 days comes from reanalysis models (9–25km grid), not direct station observations, and trails real time by ~5 days.
|
|
276
|
+
- Non-US wildfire results are **satellite heat detections, not managed incidents** — no fire names, sizes, or containment percentages exist in the data, detections can include industrial heat sources or agricultural burns, and a clear result is not an all-clear (cloud cover hides fires; small or new fires evade detection). The output frames all of this explicitly. Keyless data covers the last 24 hours; an optional free [`FIRMS_MAP_KEY`](https://firms.modaps.eosdis.nasa.gov/api/map_key/) unlocks targeted queries and up to 5 days of detection history (`day_range`).
|
|
277
|
+
- Non-US fire weather is a **Fosberg Fire Weather Index computed by this server** from current model values, not an agency-published rating — US locations get NOAA's own Haines/grassland/red-flag indices instead. The output says which it is and defers to national fire authorities; its category bands are a project heuristic.
|
|
263
278
|
- Non-US river discharge is **modeled**, not observed, and has no official flood-stage thresholds — levels are shown relative to recent history and the forecast ensemble. The ~5km model grid means the reported channel may be a few km from the requested point; the output says so when it is.
|
|
264
279
|
- Marine data has limited coastal accuracy and is **not suitable for navigation**.
|
|
265
280
|
- Lightning coverage varies by region (community-operated detector network).
|
|
@@ -270,7 +285,7 @@ Being honest about what free public data can and can't do:
|
|
|
270
285
|
```bash
|
|
271
286
|
npm run build # Compile TypeScript
|
|
272
287
|
npm run dev # Run in development mode
|
|
273
|
-
npm test # Run all 1,
|
|
288
|
+
npm test # Run all 1,961 tests
|
|
274
289
|
npm run test:coverage # Coverage report
|
|
275
290
|
npm run audit # Dependency vulnerability scan
|
|
276
291
|
```
|
|
@@ -294,6 +309,7 @@ To report a vulnerability, see [SECURITY.md](./SECURITY.md).
|
|
|
294
309
|
|
|
295
310
|
## Documentation
|
|
296
311
|
|
|
312
|
+
- **[Examples](./examples/)** — realistic sessions in cities around the world: prompt → assistant answer → verbatim server output
|
|
297
313
|
- **[Tool Reference](./docs/TOOLS.md)** — all 17 tools: parameters, examples, sample output
|
|
298
314
|
- **[Client Setup](./docs/CLIENT_SETUP.md)** — step-by-step for 8 MCP clients
|
|
299
315
|
- **[Error Handling](./docs/ERROR_HANDLING.md)** — how failures are reported
|
package/dist/config/api.d.ts
CHANGED
|
@@ -27,4 +27,26 @@ export declare const NCEI_API_TOKEN: string | undefined;
|
|
|
27
27
|
* Check if NCEI API is available (token configured)
|
|
28
28
|
*/
|
|
29
29
|
export declare function isNCEIAvailable(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* FIRMS (Fire Information for Resource Management System) API map key
|
|
32
|
+
*
|
|
33
|
+
* OPTIONAL: Get a free key at https://firms.modaps.eosdis.nasa.gov/api/map_key/
|
|
34
|
+
*
|
|
35
|
+
* Benefits of providing a key:
|
|
36
|
+
* - Access to targeted NASA FIRMS Area-API bbox queries
|
|
37
|
+
* - Query wildfire data with custom day_range (1–5 days)
|
|
38
|
+
*
|
|
39
|
+
* If not provided:
|
|
40
|
+
* - Keyless 24-hour regional flat CSV files
|
|
41
|
+
* - Tool still works globally without the key
|
|
42
|
+
* - No setup required
|
|
43
|
+
*
|
|
44
|
+
* Rate limits with key:
|
|
45
|
+
* - 5,000 transactions per 10 minutes
|
|
46
|
+
*/
|
|
47
|
+
export declare const FIRMS_MAP_KEY: string | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Check if FIRMS API key is available (key configured)
|
|
50
|
+
*/
|
|
51
|
+
export declare function isFIRMSKeyAvailable(): boolean;
|
|
30
52
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/config/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/config/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,cAAc,oBAA6B,CAAC;AAEzD;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/config/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,cAAc,oBAA6B,CAAC;AAEzD;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,oBAA4B,CAAC;AAEvD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C"}
|
package/dist/config/api.js
CHANGED
|
@@ -29,4 +29,28 @@ export const NCEI_API_TOKEN = process.env.NCEI_API_TOKEN;
|
|
|
29
29
|
export function isNCEIAvailable() {
|
|
30
30
|
return !!NCEI_API_TOKEN && NCEI_API_TOKEN.trim().length > 0;
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* FIRMS (Fire Information for Resource Management System) API map key
|
|
34
|
+
*
|
|
35
|
+
* OPTIONAL: Get a free key at https://firms.modaps.eosdis.nasa.gov/api/map_key/
|
|
36
|
+
*
|
|
37
|
+
* Benefits of providing a key:
|
|
38
|
+
* - Access to targeted NASA FIRMS Area-API bbox queries
|
|
39
|
+
* - Query wildfire data with custom day_range (1–5 days)
|
|
40
|
+
*
|
|
41
|
+
* If not provided:
|
|
42
|
+
* - Keyless 24-hour regional flat CSV files
|
|
43
|
+
* - Tool still works globally without the key
|
|
44
|
+
* - No setup required
|
|
45
|
+
*
|
|
46
|
+
* Rate limits with key:
|
|
47
|
+
* - 5,000 transactions per 10 minutes
|
|
48
|
+
*/
|
|
49
|
+
export const FIRMS_MAP_KEY = process.env.FIRMS_MAP_KEY;
|
|
50
|
+
/**
|
|
51
|
+
* Check if FIRMS API key is available (key configured)
|
|
52
|
+
*/
|
|
53
|
+
export function isFIRMSKeyAvailable() {
|
|
54
|
+
return !!FIRMS_MAP_KEY && FIRMS_MAP_KEY.trim().length > 0;
|
|
55
|
+
}
|
|
32
56
|
//# sourceMappingURL=api.js.map
|
package/dist/config/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/config/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/config/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AAEvD;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5D,CAAC"}
|
package/dist/config/cache.d.ts
CHANGED
|
@@ -25,6 +25,11 @@ export declare const CacheConfig: {
|
|
|
25
25
|
readonly records: number;
|
|
26
26
|
readonly recordsStation: number;
|
|
27
27
|
readonly metarObservations: number;
|
|
28
|
+
readonly basemapTiles: number;
|
|
29
|
+
readonly compositeImage: number;
|
|
30
|
+
readonly reverseCountry: number;
|
|
31
|
+
readonly firmsAreaQuery: number;
|
|
32
|
+
readonly firmsRegionalFile: number;
|
|
28
33
|
};
|
|
29
34
|
};
|
|
30
35
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/config/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkDH,eAAO,MAAM,WAAW;aAEtB,OAAO;aAIP,OAAO;aAIP,YAAY;aAGZ,GAAG;iBAGD,eAAe;iBAIf,SAAS;iBAIT,QAAQ;iBAIR,QAAQ;iBAIR,iBAAiB;iBAIjB,MAAM;iBAIN,gBAAgB;iBAIhB,cAAc;iBAId,aAAa;iBAMb,cAAc;iBAMd,OAAO;iBAIP,cAAc;iBAMd,iBAAiB;;CAEX,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAYrE"}
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/config/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkDH,eAAO,MAAM,WAAW;aAEtB,OAAO;aAIP,OAAO;aAIP,YAAY;aAGZ,GAAG;iBAGD,eAAe;iBAIf,SAAS;iBAIT,QAAQ;iBAIR,QAAQ;iBAIR,iBAAiB;iBAIjB,MAAM;iBAIN,gBAAgB;iBAIhB,cAAc;iBAId,aAAa;iBAMb,cAAc;iBAMd,OAAO;iBAIP,cAAc;iBAMd,iBAAiB;iBAQjB,YAAY;iBAQZ,cAAc;iBAKd,cAAc;iBAKd,cAAc;iBAKd,iBAAiB;;CAEX,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAYrE"}
|
package/dist/config/cache.js
CHANGED
|
@@ -106,6 +106,32 @@ export const CacheConfig = {
|
|
|
106
106
|
// burst of calls into one fetch without ever serving a response across a
|
|
107
107
|
// reporting cycle.
|
|
108
108
|
metarObservations: 10 * MINUTE,
|
|
109
|
+
// NASA GIBS basemap tiles (OSM_Land_Water_Map, Reference_Features_15m),
|
|
110
|
+
// cached individually by raw tile buffer. These are near-static
|
|
111
|
+
// reference layers — land/water boundaries and coastline/border outlines
|
|
112
|
+
// don't move on any timescale that matters to a weather query — so cache
|
|
113
|
+
// aggressively; 24h balances that staticness against not holding stale
|
|
114
|
+
// tiles indefinitely if a layer is ever revised upstream.
|
|
115
|
+
basemapTiles: 24 * HOUR,
|
|
116
|
+
// Composited radar-on-basemap output, keyed on frame path + tile +
|
|
117
|
+
// marker pixel. Radar frames are immutable once published under their
|
|
118
|
+
// timestamp, so this isn't about staleness — it's about not re-fetching
|
|
119
|
+
// and re-compositing on every call within a feed cycle; RainViewer's
|
|
120
|
+
// nowcast cadence is ~10 minutes, so a repeat call inside that window is
|
|
121
|
+
// still looking at the same latest frame.
|
|
122
|
+
compositeImage: 10 * MINUTE,
|
|
123
|
+
// Nominatim reverse geocoding — country resolution only (zoom=3). Keyed
|
|
124
|
+
// on coordinates rounded to ~1.1km; countries don't move, so once
|
|
125
|
+
// resolved (including a "no country" open-ocean result) it's permanent.
|
|
126
|
+
reverseCountry: Infinity,
|
|
127
|
+
// NASA FIRMS Area API bbox query (keyed path). NRT detections land
|
|
128
|
+
// within ~3 h of overpass; 30 min matches the NIFC perimeter refresh
|
|
129
|
+
// cadence.
|
|
130
|
+
firmsAreaQuery: 30 * MINUTE,
|
|
131
|
+
// NASA FIRMS regional flat-file fetch (keyless path). Caches the parsed
|
|
132
|
+
// rows per region file (not per request), so repeated queries anywhere
|
|
133
|
+
// in a region cost one fetch per half hour.
|
|
134
|
+
firmsRegionalFile: 30 * MINUTE,
|
|
109
135
|
},
|
|
110
136
|
};
|
|
111
137
|
/**
|
package/dist/config/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/config/cache.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/config/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Handler for get_alerts tool
|
|
2
|
+
* Handler for get_alerts tool.
|
|
3
|
+
*
|
|
4
|
+
* Routed by country (see docs/plans/international-alerts-plan.md D1):
|
|
5
|
+
* US → NOAA (the original path, byte-identical output),
|
|
6
|
+
* Canada → MSC GeoMet (Environment and Climate Change Canada),
|
|
7
|
+
* MeteoAlarm member countries → the country's MeteoAlarm feed,
|
|
8
|
+
* elsewhere → a clean not-covered message.
|
|
9
|
+
*
|
|
10
|
+
* Country resolution order: a `country_code` already carried by the resolved
|
|
11
|
+
* location (saved location or geocoded city_name), else a cached
|
|
12
|
+
* country-level Nominatim reverse lookup, else the `isInUS` bounding-box
|
|
13
|
+
* fallback (which preserves NOAA marine alerts for US coastal waters, where
|
|
14
|
+
* reverse geocoding returns no country). The reverse answer wins over
|
|
15
|
+
* `isInUS` — the CONUS box deliberately overruns into Canada (Toronto,
|
|
16
|
+
* Vancouver), and alert authority is jurisdictional.
|
|
3
17
|
*/
|
|
4
18
|
import { NOAAService } from '../services/noaa.js';
|
|
5
19
|
import { LocationStore } from '../services/locationStore.js';
|
|
6
20
|
import { GeocodingService } from '../services/geocoding.js';
|
|
7
|
-
|
|
21
|
+
import { MeteoAlarmService } from '../services/meteoalarm.js';
|
|
22
|
+
import { GeoMetService } from '../services/geomet.js';
|
|
23
|
+
import { NominatimService } from '../services/nominatim.js';
|
|
24
|
+
type HandlerResult = {
|
|
8
25
|
content: Array<{
|
|
9
26
|
type: string;
|
|
10
27
|
text: string;
|
|
11
28
|
}>;
|
|
12
|
-
}
|
|
29
|
+
};
|
|
30
|
+
export declare function handleGetAlerts(args: unknown, noaaService: NOAAService, locationStore: LocationStore, geocodingService: GeocodingService, meteoAlarmService?: MeteoAlarmService, geoMetService?: GeoMetService, nominatimService?: NominatimService): Promise<HandlerResult>;
|
|
31
|
+
export {};
|
|
13
32
|
//# sourceMappingURL=alertsHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alertsHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/alertsHandler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"alertsHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/alertsHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,iBAAiB,EAGlB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAuB5D,KAAK,aAAa,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAMxE,wBAAsB,eAAe,CACnC,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,aAAa,CAAC,EAAE,aAAa,EAC7B,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,aAAa,CAAC,CAsDxB"}
|