@dangahagan/weather-mcp 1.1.0 → 1.2.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.
Files changed (54) hide show
  1. package/README.md +65 -10
  2. package/dist/config/api.d.ts +30 -0
  3. package/dist/config/api.d.ts.map +1 -0
  4. package/dist/config/api.js +32 -0
  5. package/dist/config/api.js.map +1 -0
  6. package/dist/errors/ApiError.d.ts +6 -6
  7. package/dist/errors/ApiError.d.ts.map +1 -1
  8. package/dist/errors/ApiError.js +36 -13
  9. package/dist/errors/ApiError.js.map +1 -1
  10. package/dist/handlers/alertsHandler.d.ts.map +1 -1
  11. package/dist/handlers/alertsHandler.js +21 -5
  12. package/dist/handlers/alertsHandler.js.map +1 -1
  13. package/dist/handlers/currentConditionsHandler.d.ts +3 -1
  14. package/dist/handlers/currentConditionsHandler.d.ts.map +1 -1
  15. package/dist/handlers/currentConditionsHandler.js +49 -2
  16. package/dist/handlers/currentConditionsHandler.js.map +1 -1
  17. package/dist/handlers/forecastHandler.d.ts +2 -1
  18. package/dist/handlers/forecastHandler.d.ts.map +1 -1
  19. package/dist/handlers/forecastHandler.js +119 -17
  20. package/dist/handlers/forecastHandler.js.map +1 -1
  21. package/dist/handlers/marineConditionsHandler.d.ts.map +1 -1
  22. package/dist/handlers/marineConditionsHandler.js +23 -7
  23. package/dist/handlers/marineConditionsHandler.js.map +1 -1
  24. package/dist/index.js +19 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/services/ncei.d.ts +61 -0
  27. package/dist/services/ncei.d.ts.map +1 -0
  28. package/dist/services/ncei.js +126 -0
  29. package/dist/services/ncei.js.map +1 -0
  30. package/dist/services/openmeteo.d.ts +23 -1
  31. package/dist/services/openmeteo.d.ts.map +1 -1
  32. package/dist/services/openmeteo.js +92 -5
  33. package/dist/services/openmeteo.js.map +1 -1
  34. package/dist/types/noaa.d.ts +4 -0
  35. package/dist/types/noaa.d.ts.map +1 -1
  36. package/dist/types/openmeteo.d.ts +18 -0
  37. package/dist/types/openmeteo.d.ts.map +1 -1
  38. package/dist/utils/normals.d.ts +86 -0
  39. package/dist/utils/normals.d.ts.map +1 -0
  40. package/dist/utils/normals.js +223 -0
  41. package/dist/utils/normals.js.map +1 -0
  42. package/dist/utils/snow.d.ts +45 -0
  43. package/dist/utils/snow.d.ts.map +1 -0
  44. package/dist/utils/snow.js +144 -0
  45. package/dist/utils/snow.js.map +1 -0
  46. package/dist/utils/timezone.d.ts +56 -0
  47. package/dist/utils/timezone.d.ts.map +1 -0
  48. package/dist/utils/timezone.js +169 -0
  49. package/dist/utils/timezone.js.map +1 -0
  50. package/dist/utils/version.d.ts +15 -0
  51. package/dist/utils/version.d.ts.map +1 -0
  52. package/dist/utils/version.js +24 -0
  53. package/dist/utils/version.js.map +1 -0
  54. package/package.json +4 -2
package/README.md CHANGED
@@ -30,6 +30,25 @@ An MCP (Model Context Protocol) server that provides **global weather data** to
30
30
  - Support for cities, airports, landmarks, and regions globally
31
31
  - Detailed metadata: timezone, elevation, population, country
32
32
  - Enables natural language queries: "What's the weather in Tokyo?"
33
+ - **Climate Normals - Historical Context**: Compare weather to 30-year averages (NEW in v1.2.0)
34
+ - **Optional enhancement** for current conditions and forecasts (`include_normals=true`)
35
+ - Shows normal high/low temperatures and precipitation for comparison
36
+ - Displays departure from normal ("10°F warmer than normal")
37
+ - **Hybrid data strategy**: Open-Meteo computed normals (global, free) or optional NOAA NCEI official normals (US only, requires free API token)
38
+ - Based on 1991-2020 climate normals period
39
+ - Helps understand if weather is unusual for the time of year
40
+ - **Snow and Ice Data**: Enhanced winter weather information (NEW in v1.2.0)
41
+ - Snow depth on ground (current conditions, US only)
42
+ - Snowfall accumulation forecasts with time periods
43
+ - Ice accumulation forecasts for freezing rain events
44
+ - Smart threshold-based display (filters trace amounts)
45
+ - Unit conversions from metric to imperial
46
+ - **Timezone-Aware Display**: All timestamps in local time (NEW in v1.2.0)
47
+ - Automatic timezone detection from coordinates
48
+ - All times displayed in location's local timezone
49
+ - Includes timezone abbreviations (EST, PDT, etc.)
50
+ - Handles daylight saving time transitions
51
+ - Formatted time ranges for forecast periods
33
52
  - **Weather Alerts**: Get active weather watches, warnings, and advisories for US locations
34
53
  - Severity levels (Extreme, Severe, Moderate, Minor)
35
54
  - Urgency and certainty indicators
@@ -92,6 +111,7 @@ The Weather MCP server includes an intelligent in-memory caching system that sig
92
111
  The cache automatically stores and retrieves weather data with intelligent expiration:
93
112
 
94
113
  - **Location Searches**: Cached for 30 days (locations don't move)
114
+ - **Climate Normals**: Cached indefinitely (30-year averages are static) - NEW in v1.2.0
95
115
  - **Marine Conditions**: Cached for 1 hour (marine data updates hourly) - NEW in v0.6.0
96
116
  - **Air Quality Data**: Cached for 1 hour (air quality updates hourly) - v0.5.0
97
117
  - **Fire Weather Data**: Cached for 2 hours (gridpoint data updates ~hourly) - v0.5.0
@@ -112,8 +132,18 @@ export CACHE_ENABLED=false
112
132
 
113
133
  # Adjust maximum cache size (default: 1000 entries)
114
134
  export CACHE_MAX_SIZE=1500
135
+
136
+ # Optional: NOAA NCEI API token for official climate normals (US only, NEW in v1.2.0)
137
+ # Falls back to Open-Meteo computed normals if not configured
138
+ export NCEI_API_TOKEN=your_token_here
115
139
  ```
116
140
 
141
+ **Note on Climate Normals (v1.2.0):**
142
+ - By default, climate normals use Open-Meteo's computed 30-year averages (completely free, global coverage, zero setup)
143
+ - Optionally, you can configure a free NCEI API token to use official NOAA climate normals for US locations
144
+ - Get a free token at: https://www.ncdc.noaa.gov/cdo-web/token
145
+ - If NCEI token is configured but unavailable, the system automatically falls back to Open-Meteo
146
+
117
147
  ### Monitoring
118
148
 
119
149
  Use the `check_service_status` tool to view cache statistics including:
@@ -237,7 +267,7 @@ You can also find coordinates manually:
237
267
 
238
268
  ## Available Tools
239
269
 
240
- ### 1. get_forecast (ENHANCED in v0.4.0)
270
+ ### 1. get_forecast (ENHANCED in v0.4.0, v1.2.0)
241
271
  Get weather forecast for any location worldwide.
242
272
 
243
273
  **Parameters:**
@@ -246,6 +276,7 @@ Get weather forecast for any location worldwide.
246
276
  - `days` (optional): Number of days in forecast (1-16, default: 7)
247
277
  - `granularity` (optional): "daily" or "hourly" (default: "daily")
248
278
  - `include_precipitation_probability` (optional): Include rain chances (default: true)
279
+ - `include_normals` (optional): Include climate normals for comparison (default: false, NEW in v1.2.0)
249
280
  - `source` (optional): "auto" (default), "noaa" (US only), or "openmeteo" (global)
250
281
 
251
282
  **Description:**
@@ -266,19 +297,35 @@ Automatically selects the best data source: NOAA for US locations (more detailed
266
297
  - Weather conditions and descriptions
267
298
  - UV index (for international locations)
268
299
  - Humidity and atmospheric conditions
300
+ - Climate normals comparison (when `include_normals=true`, NEW in v1.2.0)
301
+ - Snow and ice accumulation forecasts (when available, NEW in v1.2.0)
302
+ - All timestamps in local timezone (NEW in v1.2.0)
269
303
 
270
- ### 2. get_current_conditions
271
- Get current weather conditions for a location.
304
+ ### 2. get_current_conditions (ENHANCED in v1.2.0)
305
+ Get current weather conditions for a location (US only).
272
306
 
273
307
  **Parameters:**
274
308
  - `latitude` (required): Latitude coordinate (-90 to 90)
275
309
  - `longitude` (required): Longitude coordinate (-180 to 180)
310
+ - `include_fire_weather` (optional): Include fire weather indices (default: false)
311
+ - `include_normals` (optional): Include climate normals for comparison (default: false, NEW in v1.2.0)
276
312
 
277
313
  **Example:**
278
314
  ```
279
315
  What are the current weather conditions in New York? (latitude: 40.7128, longitude: -74.0060)
280
316
  ```
281
317
 
318
+ **Returns:**
319
+ - Current temperature, humidity, wind, pressure
320
+ - Heat index or wind chill (when applicable)
321
+ - 24-hour temperature range
322
+ - Recent precipitation
323
+ - Cloud cover and visibility
324
+ - Snow depth on ground (when available, NEW in v1.2.0)
325
+ - Climate normals comparison (when `include_normals=true`, NEW in v1.2.0)
326
+ - Fire weather indices (when `include_fire_weather=true`)
327
+ - All timestamps in local timezone (NEW in v1.2.0)
328
+
282
329
  ### 3. search_location (NEW in v0.4.0)
283
330
  Find coordinates for any location worldwide by name.
284
331
 
@@ -542,7 +589,7 @@ Use the `check_service_status` tool to proactively verify API availability:
542
589
 
543
590
  ### Automated Test Suite
544
591
 
545
- This project includes a comprehensive test suite with 247 automated tests:
592
+ This project includes a comprehensive test suite with 693 automated tests:
546
593
 
547
594
  ```bash
548
595
  # Run all tests
@@ -559,13 +606,13 @@ npm run test:ui
559
606
  ```
560
607
 
561
608
  **Test Coverage:**
562
- - **247 tests** across unit and integration test suites
563
- - **100% coverage** on critical utilities (cache, validation, units, errors)
609
+ - **693 tests** across unit and integration test suites (340 new tests in v1.2.0)
610
+ - **100% coverage** on critical utilities (cache, validation, units, errors, normals, snow, timezone)
564
611
  - **54% overall coverage** with focus on reliability and security
565
612
  - All tests execute in ~1 second
566
613
 
567
614
  **Test Categories:**
568
- - **Unit Tests** (228 tests) - Cache, validation, units, errors, config, retry logic
615
+ - **Unit Tests** (427 tests) - Cache, validation, units, errors, config, retry logic, normals, snow, timezone
569
616
  - **Integration Tests** (19 tests) - Error recovery scenarios, service status checks
570
617
 
571
618
  ### Quick API Connectivity Test
@@ -611,6 +658,7 @@ weather-mcp/
611
658
  ├── src/
612
659
  │ ├── index.ts # Main MCP server
613
660
  │ ├── config/
661
+ │ │ ├── api.ts # API configuration (NCEI token) - NEW in v1.2.0
614
662
  │ │ ├── cache.ts # Cache configuration and TTL strategies
615
663
  │ │ └── displayThresholds.ts # Display thresholds for weather conditions
616
664
  │ ├── errors/
@@ -620,10 +668,14 @@ weather-mcp/
620
668
  │ │ ├── currentConditionsHandler.ts # Current conditions handler
621
669
  │ │ ├── forecastHandler.ts # Forecast tool handler
622
670
  │ │ ├── historicalWeatherHandler.ts # Historical weather handler
671
+ │ │ ├── airQualityHandler.ts # Air quality handler
672
+ │ │ ├── marineConditionsHandler.ts # Marine conditions handler
673
+ │ │ ├── locationHandler.ts # Location search handler
623
674
  │ │ └── statusHandler.ts # Service status handler
624
675
  │ ├── services/
625
676
  │ │ ├── noaa.ts # NOAA API service
626
- │ │ └── openmeteo.ts # Open-Meteo API service
677
+ │ │ ├── openmeteo.ts # Open-Meteo API service
678
+ │ │ └── ncei.ts # NCEI climate normals service - NEW in v1.2.0
627
679
  │ ├── types/
628
680
  │ │ ├── noaa.ts # NOAA TypeScript type definitions
629
681
  │ │ └── openmeteo.ts # Open-Meteo TypeScript type definitions
@@ -632,9 +684,12 @@ weather-mcp/
632
684
  │ ├── logger.ts # Structured logging utilities
633
685
  │ ├── temperatureConversion.ts # Temperature conversion helpers
634
686
  │ ├── units.ts # Unit conversion utilities
635
- └── validation.ts # Input validation functions
687
+ ├── validation.ts # Input validation functions
688
+ │ ├── normals.ts # Climate normals utilities - NEW in v1.2.0
689
+ │ ├── snow.ts # Snow and ice data utilities - NEW in v1.2.0
690
+ │ └── timezone.ts # Timezone-aware formatting - NEW in v1.2.0
636
691
  ├── tests/
637
- │ ├── unit/ # Unit tests (228 tests)
692
+ │ ├── unit/ # Unit tests (427 tests) - 93 new tests in v1.2.0
638
693
  │ └── integration/ # Integration tests (19 tests)
639
694
  ├── dist/ # Compiled JavaScript (generated)
640
695
  ├── docs/ # Documentation
@@ -0,0 +1,30 @@
1
+ /**
2
+ * API configuration for external weather services
3
+ *
4
+ * Most APIs used by this server are free and require no authentication.
5
+ * Optional API tokens can be configured for enhanced features.
6
+ */
7
+ /**
8
+ * NCEI (National Centers for Environmental Information) API token
9
+ *
10
+ * OPTIONAL: Get a free token at https://www.ncdc.noaa.gov/cdo-web/token
11
+ *
12
+ * Benefits of providing a token:
13
+ * - Access to official NOAA climate normals for US locations
14
+ * - More accurate than computed normals from reanalysis data
15
+ *
16
+ * If not provided:
17
+ * - Climate normals will be computed from Open-Meteo historical data
18
+ * - Works globally (not just US)
19
+ * - No setup required
20
+ *
21
+ * Rate limits with token:
22
+ * - 5 requests per second
23
+ * - 10,000 requests per day
24
+ */
25
+ export declare const NCEI_API_TOKEN: string | undefined;
26
+ /**
27
+ * Check if NCEI API is available (token configured)
28
+ */
29
+ export declare function isNCEIAvailable(): boolean;
30
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * API configuration for external weather services
3
+ *
4
+ * Most APIs used by this server are free and require no authentication.
5
+ * Optional API tokens can be configured for enhanced features.
6
+ */
7
+ /**
8
+ * NCEI (National Centers for Environmental Information) API token
9
+ *
10
+ * OPTIONAL: Get a free token at https://www.ncdc.noaa.gov/cdo-web/token
11
+ *
12
+ * Benefits of providing a token:
13
+ * - Access to official NOAA climate normals for US locations
14
+ * - More accurate than computed normals from reanalysis data
15
+ *
16
+ * If not provided:
17
+ * - Climate normals will be computed from Open-Meteo historical data
18
+ * - Works globally (not just US)
19
+ * - No setup required
20
+ *
21
+ * Rate limits with token:
22
+ * - 5 requests per second
23
+ * - 10,000 requests per day
24
+ */
25
+ export const NCEI_API_TOKEN = process.env.NCEI_API_TOKEN;
26
+ /**
27
+ * Check if NCEI API is available (token configured)
28
+ */
29
+ export function isNCEIAvailable() {
30
+ return !!NCEI_API_TOKEN && NCEI_API_TOKEN.trim().length > 0;
31
+ }
32
+ //# sourceMappingURL=api.js.map
@@ -0,0 +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"}
@@ -6,11 +6,11 @@
6
6
  */
7
7
  export declare class ApiError extends Error {
8
8
  readonly statusCode: number;
9
- readonly service: 'NOAA' | 'OpenMeteo';
9
+ readonly service: 'NOAA' | 'OpenMeteo' | 'NCEI';
10
10
  readonly userMessage: string;
11
11
  readonly helpLinks: string[];
12
12
  readonly isRetryable: boolean;
13
- constructor(message: string, statusCode: number, service: 'NOAA' | 'OpenMeteo', userMessage: string, helpLinks?: string[], isRetryable?: boolean);
13
+ constructor(message: string, statusCode: number, service: 'NOAA' | 'OpenMeteo' | 'NCEI', userMessage: string, helpLinks?: string[], isRetryable?: boolean);
14
14
  /**
15
15
  * Format error for display to user
16
16
  */
@@ -21,13 +21,13 @@ export declare class ApiError extends Error {
21
21
  */
22
22
  export declare class RateLimitError extends ApiError {
23
23
  readonly retryAfter?: number;
24
- constructor(service: 'NOAA' | 'OpenMeteo', retryAfter?: number);
24
+ constructor(service: 'NOAA' | 'OpenMeteo' | 'NCEI', messageOrRetryAfter?: string | number, retryAfter?: number);
25
25
  }
26
26
  /**
27
27
  * Service unavailable error - API is down or timing out
28
28
  */
29
29
  export declare class ServiceUnavailableError extends ApiError {
30
- constructor(service: 'NOAA' | 'OpenMeteo', originalError?: Error);
30
+ constructor(service: 'NOAA' | 'OpenMeteo' | 'NCEI', messageOrError?: string | Error, originalError?: Error);
31
31
  }
32
32
  /**
33
33
  * Invalid location error - coordinates not supported or out of range
@@ -35,13 +35,13 @@ export declare class ServiceUnavailableError extends ApiError {
35
35
  export declare class InvalidLocationError extends ApiError {
36
36
  readonly latitude?: number;
37
37
  readonly longitude?: number;
38
- constructor(service: 'NOAA' | 'OpenMeteo', message: string, latitude?: number, longitude?: number);
38
+ constructor(service: 'NOAA' | 'OpenMeteo' | 'NCEI', message: string, latitude?: number, longitude?: number);
39
39
  }
40
40
  /**
41
41
  * Data not found error - requested data doesn't exist
42
42
  */
43
43
  export declare class DataNotFoundError extends ApiError {
44
- constructor(service: 'NOAA' | 'OpenMeteo', message: string);
44
+ constructor(service: 'NOAA' | 'OpenMeteo' | 'NCEI', message: string);
45
45
  }
46
46
  /**
47
47
  * Validation error - invalid input parameters
@@ -1 +1 @@
1
- {"version":3,"file":"ApiError.d.ts","sourceRoot":"","sources":["../../src/errors/ApiError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9C,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpC,SAAgB,WAAW,EAAE,OAAO,CAAC;gBAGnC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,WAAW,EAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAM,EAAO,EACxB,WAAW,GAAE,OAAe;IAgB9B;;OAEG;IACH,aAAa,IAAI,MAAM;CAYxB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAExB,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM;CAoB/D;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,QAAQ;gBACvC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,aAAa,CAAC,EAAE,KAAK;CAoBjE;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;IAChD,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAGjC,OAAO,EAAE,MAAM,GAAG,WAAW,EAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM;CAerB;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,OAAO,EAAE,MAAM;CAY3D;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAgB,KAAK,CAAC,EAAE,GAAG,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;CAUzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAetD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAgBvD"}
1
+ {"version":3,"file":"ApiError.d.ts","sourceRoot":"","sources":["../../src/errors/ApiError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACvD,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpC,SAAgB,WAAW,EAAE,OAAO,CAAC;gBAGnC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,EACtC,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAM,EAAO,EACxB,WAAW,GAAE,OAAe;IAgB9B;;OAEG;IACH,aAAa,IAAI,MAAM;CAYxB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAExB,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAiC/G;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,QAAQ;gBACvC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,aAAa,CAAC,EAAE,KAAK;CAiC3G;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;IAChD,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAGjC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,EACtC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM;CAerB;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM;CAYpE;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAgB,KAAK,CAAC,EAAE,GAAG,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;CAUzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAetD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAgBvD"}
@@ -42,33 +42,56 @@ export class ApiError extends Error {
42
42
  */
43
43
  export class RateLimitError extends ApiError {
44
44
  retryAfter;
45
- constructor(service, retryAfter) {
46
- const userMessage = retryAfter
47
- ? `Rate limit exceeded. Please retry after ${retryAfter} seconds.`
48
- : 'Rate limit exceeded. Please retry in a few seconds.';
45
+ constructor(service, messageOrRetryAfter, retryAfter) {
46
+ // Handle backwards compatibility: if second param is number, treat it as retryAfter
47
+ let message;
48
+ let retry;
49
+ if (typeof messageOrRetryAfter === 'number') {
50
+ message = undefined;
51
+ retry = messageOrRetryAfter;
52
+ }
53
+ else if (typeof messageOrRetryAfter === 'string') {
54
+ message = messageOrRetryAfter;
55
+ retry = retryAfter;
56
+ }
57
+ const userMessage = message || (retry
58
+ ? `Rate limit exceeded. Please retry after ${retry} seconds.`
59
+ : 'Rate limit exceeded. Please retry in a few seconds.');
49
60
  super(`Rate limit exceeded for ${service}`, 429, service, userMessage, [
50
61
  'https://weather.gov/documentation/services-web-api',
51
62
  'https://open-meteo.com/en/features#api-documentation',
63
+ 'https://www.ncdc.noaa.gov/cdo-web/webservices'
52
64
  ], true // Retryable after waiting
53
65
  );
54
66
  this.name = 'RateLimitError';
55
- this.retryAfter = retryAfter;
67
+ this.retryAfter = retry;
56
68
  }
57
69
  }
58
70
  /**
59
71
  * Service unavailable error - API is down or timing out
60
72
  */
61
73
  export class ServiceUnavailableError extends ApiError {
62
- constructor(service, originalError) {
63
- super(`${service} API is currently unavailable`, 503, service, `The ${service} weather service is temporarily unavailable. Please try again in a few minutes.`, [
64
- service === 'NOAA'
65
- ? 'https://www.weather.gov/'
66
- : 'https://open-meteo.com/',
67
- ], true // Retryable
74
+ constructor(service, messageOrError, originalError) {
75
+ // Handle backwards compatibility: if second param is Error, treat it as originalError
76
+ let message;
77
+ let error;
78
+ if (typeof messageOrError === 'string') {
79
+ message = messageOrError;
80
+ error = originalError;
81
+ }
82
+ else if (messageOrError instanceof Error) {
83
+ message = undefined;
84
+ error = messageOrError;
85
+ }
86
+ const userMessage = message || `The ${service} weather service is temporarily unavailable. Please try again in a few minutes.`;
87
+ const helpLink = service === 'NOAA' ? 'https://www.weather.gov/'
88
+ : service === 'NCEI' ? 'https://www.ncei.noaa.gov/'
89
+ : 'https://open-meteo.com/';
90
+ super(`${service} API is currently unavailable`, 503, service, userMessage, [helpLink], true // Retryable
68
91
  );
69
92
  this.name = 'ServiceUnavailableError';
70
- if (originalError && originalError.stack) {
71
- this.stack = `${this.stack}\nCaused by: ${originalError.stack}`;
93
+ if (error && error.stack) {
94
+ this.stack = `${this.stack}\nCaused by: ${error.stack}`;
72
95
  }
73
96
  }
74
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ApiError.js","sourceRoot":"","sources":["../../src/errors/ApiError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjB,UAAU,CAAS;IACnB,OAAO,CAAuB;IAC9B,WAAW,CAAS;IACpB,SAAS,CAAW;IACpB,WAAW,CAAU;IAErC,YACE,OAAe,EACf,UAAkB,EAClB,OAA6B,EAC7B,WAAmB,EACnB,YAAsB,EAAE,EACxB,cAAuB,KAAK;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,qFAAqF;QACrF,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,eAAe,IAAI,CAAC,WAAW,EAAE,CAAC;QAE/D,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,6BAA6B,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC5B,OAAO,IAAI,KAAK,IAAI,IAAI,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1B,UAAU,CAAU;IAEpC,YAAY,OAA6B,EAAE,UAAmB;QAC5D,MAAM,WAAW,GAAG,UAAU;YAC5B,CAAC,CAAC,2CAA2C,UAAU,WAAW;YAClE,CAAC,CAAC,qDAAqD,CAAC;QAE1D,KAAK,CACH,2BAA2B,OAAO,EAAE,EACpC,GAAG,EACH,OAAO,EACP,WAAW,EACX;YACE,oDAAoD;YACpD,sDAAsD;SACvD,EACD,IAAI,CAAC,0BAA0B;SAChC,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,QAAQ;IACnD,YAAY,OAA6B,EAAE,aAAqB;QAC9D,KAAK,CACH,GAAG,OAAO,+BAA+B,EACzC,GAAG,EACH,OAAO,EACP,OAAO,OAAO,iFAAiF,EAC/F;YACE,OAAO,KAAK,MAAM;gBAChB,CAAC,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,yBAAyB;SAC9B,EACD,IAAI,CAAC,YAAY;SAClB,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QAEtC,IAAI,aAAa,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,gBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IAChC,QAAQ,CAAU;IAClB,SAAS,CAAU;IAEnC,YACE,OAA6B,EAC7B,OAAe,EACf,QAAiB,EACjB,SAAkB;QAElB,KAAK,CACH,OAAO,EACP,GAAG,EACH,OAAO,EACP,OAAO,EACP,EAAE,EACF,KAAK,CAAC,gBAAgB;SACvB,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IAC7C,YAAY,OAA6B,EAAE,OAAe;QACxD,KAAK,CACH,OAAO,EACP,GAAG,EACH,OAAO,EACP,OAAO,EACP,EAAE,EACF,KAAK,CAAC,gBAAgB;SACvB,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxB,KAAK,CAAU;IACf,KAAK,CAAO;IAE5B,YAAY,OAAe,EAAE,KAAc,EAAE,KAAW;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAY;IAC3C,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,WAAW,CAAC;IAC3B,CAAC;IAED,yCAAyC;IACzC,IACE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QACtC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QACnC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAY;IAC7C,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;QACrC,OAAO,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,iEAAiE;IACjE,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO;SACnC,OAAO,CAAC,cAAc,EAAE,oBAAoB,CAAC;SAC7C,OAAO,CAAC,WAAW,EAAE,sBAAsB,CAAC;SAC5C,OAAO,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAE7C,OAAO,UAAU,gBAAgB,EAAE,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"ApiError.js","sourceRoot":"","sources":["../../src/errors/ApiError.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"alertsHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/alertsHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASlD,wBAAsB,eAAe,CACnC,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAmG7D"}
1
+ {"version":3,"file":"alertsHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/alertsHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAUlD,wBAAsB,eAAe,CACnC,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAkH7D"}
@@ -2,10 +2,26 @@
2
2
  * Handler for get_alerts tool
3
3
  */
4
4
  import { validateCoordinates, validateOptionalBoolean } from '../utils/validation.js';
5
+ import { formatInTimezone, guessTimezoneFromCoords } from '../utils/timezone.js';
5
6
  export async function handleGetAlerts(args, noaaService) {
6
7
  // Validate input parameters with runtime checks
7
8
  const { latitude, longitude } = validateCoordinates(args);
8
9
  const active_only = validateOptionalBoolean(args?.active_only, 'active_only', true);
10
+ // Get timezone for proper time formatting
11
+ let timezone = guessTimezoneFromCoords(latitude, longitude); // fallback
12
+ try {
13
+ // Try to get timezone from station (preferred)
14
+ const stations = await noaaService.getStations(latitude, longitude);
15
+ if (stations.features && stations.features.length > 0) {
16
+ const stationTimezone = stations.features[0].properties.timeZone;
17
+ if (stationTimezone) {
18
+ timezone = stationTimezone;
19
+ }
20
+ }
21
+ }
22
+ catch (error) {
23
+ // Use fallback timezone
24
+ }
9
25
  // Get alerts data
10
26
  const alertsData = await noaaService.getAlerts(latitude, longitude, active_only);
11
27
  const alerts = alertsData.features;
@@ -14,7 +30,7 @@ export async function handleGetAlerts(args, noaaService) {
14
30
  output += `**Location:** ${latitude.toFixed(4)}, ${longitude.toFixed(4)}\n`;
15
31
  output += `**Status:** ${active_only ? 'Active alerts only' : 'All alerts'}\n`;
16
32
  if (alertsData.updated) {
17
- output += `**Updated:** ${new Date(alertsData.updated).toLocaleString()}\n`;
33
+ output += `**Updated:** ${formatInTimezone(alertsData.updated, timezone)}\n`;
18
34
  }
19
35
  output += `\n`;
20
36
  if (alerts.length === 0) {
@@ -52,13 +68,13 @@ export async function handleGetAlerts(args, noaaService) {
52
68
  }
53
69
  output += `**Severity:** ${props.severity} | **Urgency:** ${props.urgency} | **Certainty:** ${props.certainty}\n`;
54
70
  output += `**Area:** ${props.areaDesc}\n`;
55
- output += `**Effective:** ${new Date(props.effective).toLocaleString()}\n`;
56
- output += `**Expires:** ${new Date(props.expires).toLocaleString()}\n`;
71
+ output += `**Effective:** ${formatInTimezone(props.effective, timezone)}\n`;
72
+ output += `**Expires:** ${formatInTimezone(props.expires, timezone)}\n`;
57
73
  if (props.onset && props.onset !== props.effective) {
58
- output += `**Onset:** ${new Date(props.onset).toLocaleString()}\n`;
74
+ output += `**Onset:** ${formatInTimezone(props.onset, timezone)}\n`;
59
75
  }
60
76
  if (props.ends) {
61
- output += `**Ends:** ${new Date(props.ends).toLocaleString()}\n`;
77
+ output += `**Ends:** ${formatInTimezone(props.ends, timezone)}\n`;
62
78
  }
63
79
  output += `\n**Description:**\n${props.description}\n`;
64
80
  if (props.instruction) {
@@ -1 +1 @@
1
- {"version":3,"file":"alertsHandler.js","sourceRoot":"","sources":["../../src/handlers/alertsHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alertsHandler.js","sourceRoot":"","sources":["../../src/handlers/alertsHandler.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,9 @@
2
2
  * Handler for get_current_conditions tool
3
3
  */
4
4
  import { NOAAService } from '../services/noaa.js';
5
- export declare function handleGetCurrentConditions(args: unknown, noaaService: NOAAService): Promise<{
5
+ import { OpenMeteoService } from '../services/openmeteo.js';
6
+ import { NCEIService } from '../services/ncei.js';
7
+ export declare function handleGetCurrentConditions(args: unknown, noaaService: NOAAService, openMeteoService: OpenMeteoService, nceiService: NCEIService): Promise<{
6
8
  content: Array<{
7
9
  type: string;
8
10
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"currentConditionsHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/currentConditionsHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAmBlD,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA6P7D"}
1
+ {"version":3,"file":"currentConditionsHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/currentConditionsHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAuBlD,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAwT7D"}
@@ -5,17 +5,36 @@ import { validateCoordinates, validateOptionalBoolean } from '../utils/validatio
5
5
  import { convertToFahrenheit } from '../utils/temperatureConversion.js';
6
6
  import { DisplayThresholds } from '../config/displayThresholds.js';
7
7
  import { getHainesCategory, getGrasslandFireDangerCategory, getRedFlagCategory, getCurrentFireWeatherValue, formatMixingHeight, interpretTransportWind } from '../utils/fireWeather.js';
8
- export async function handleGetCurrentConditions(args, noaaService) {
8
+ import { extractSnowDepth, formatSnowData, hasWinterWeather } from '../utils/snow.js';
9
+ import { formatInTimezone, guessTimezoneFromCoords } from '../utils/timezone.js';
10
+ import { getClimateNormals, formatNormals, getDateComponents } from '../utils/normals.js';
11
+ export async function handleGetCurrentConditions(args, noaaService, openMeteoService, nceiService) {
9
12
  // Validate input parameters with runtime checks
10
13
  const { latitude, longitude } = validateCoordinates(args);
11
14
  const includeFireWeather = validateOptionalBoolean(args?.include_fire_weather, 'include_fire_weather', false);
15
+ const includeNormals = validateOptionalBoolean(args?.include_normals, 'include_normals', false);
12
16
  // Get current observation
13
17
  const observation = await noaaService.getCurrentConditions(latitude, longitude);
14
18
  const props = observation.properties;
19
+ // Get timezone for proper time formatting
20
+ let timezone = guessTimezoneFromCoords(latitude, longitude); // fallback
21
+ try {
22
+ // Try to get timezone from station (preferred)
23
+ const stations = await noaaService.getStations(latitude, longitude);
24
+ if (stations.features && stations.features.length > 0) {
25
+ const stationTimezone = stations.features[0].properties.timeZone;
26
+ if (stationTimezone) {
27
+ timezone = stationTimezone;
28
+ }
29
+ }
30
+ }
31
+ catch (error) {
32
+ // Use fallback timezone
33
+ }
15
34
  // Format current conditions
16
35
  let output = `# Current Weather Conditions\n\n`;
17
36
  output += `**Station:** ${props.station}\n`;
18
- output += `**Time:** ${new Date(props.timestamp).toLocaleString()}\n\n`;
37
+ output += `**Time:** ${formatInTimezone(props.timestamp, timezone)}\n\n`;
19
38
  // Main conditions
20
39
  if (props.textDescription) {
21
40
  output += `**Conditions:** ${props.textDescription}\n`;
@@ -156,6 +175,14 @@ export async function handleGetCurrentConditions(args, noaaService) {
156
175
  output += `**Last 6 Hours:** ${precipIn.toFixed(2)} inches\n`;
157
176
  }
158
177
  }
178
+ // Winter Weather section (snow depth if available)
179
+ const snowDepth = extractSnowDepth(props);
180
+ if (snowDepth) {
181
+ const snowData = { snowDepth };
182
+ if (hasWinterWeather(snowData)) {
183
+ output += formatSnowData(snowData);
184
+ }
185
+ }
159
186
  // Fire Weather section (optional)
160
187
  if (includeFireWeather) {
161
188
  try {
@@ -217,6 +244,26 @@ export async function handleGetCurrentConditions(args, noaaService) {
217
244
  output += `⚠️ Fire weather data not available for this location.\n`;
218
245
  }
219
246
  }
247
+ // Climate Normals section (optional)
248
+ if (includeNormals) {
249
+ try {
250
+ // Get date components from observation timestamp
251
+ const { month, day } = getDateComponents(props.timestamp);
252
+ // Fetch climate normals using hybrid strategy
253
+ const normals = await getClimateNormals(openMeteoService, nceiService, latitude, longitude, month, day);
254
+ // Format and display normals with current temperature for comparison
255
+ const currentTemps = {
256
+ high: max24F !== null ? Math.round(max24F) : undefined,
257
+ low: min24F !== null ? Math.round(min24F) : undefined
258
+ };
259
+ output += formatNormals(normals, currentTemps);
260
+ }
261
+ catch (error) {
262
+ // If normals fetch fails, just skip it (don't error the whole request)
263
+ output += `\n## Climate Normals\n\n`;
264
+ output += `⚠️ Climate normals data not available for this location.\n`;
265
+ }
266
+ }
220
267
  output += `\n---\n`;
221
268
  output += `*Data source: NOAA National Weather Service*\n`;
222
269
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"currentConditionsHandler.js","sourceRoot":"","sources":["../../src/handlers/currentConditionsHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"currentConditionsHandler.js","sourceRoot":"","sources":["../../src/handlers/currentConditionsHandler.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@
4
4
  */
5
5
  import { NOAAService } from '../services/noaa.js';
6
6
  import { OpenMeteoService } from '../services/openmeteo.js';
7
- export declare function handleGetForecast(args: unknown, noaaService: NOAAService, openMeteoService: OpenMeteoService): Promise<{
7
+ import { NCEIService } from '../services/ncei.js';
8
+ export declare function handleGetForecast(args: unknown, noaaService: NOAAService, openMeteoService: OpenMeteoService, nceiService?: NCEIService): Promise<{
8
9
  content: Array<{
9
10
  type: string;
10
11
  text: string;