Past Weather. Present Impact. AI-Ready Intelligence
WeatherForensics is a Data as a Service (DaaS) that provides comprehensive historical weather data, including standard conditions and severe weather events, relative to a specified target location and timestamp. While most services focus on the "what," our proprietary engine calculates the localized impact of historical weather events—ranging from localized tornadoes to regional hurricanes—at a specific coordinate and datetime.
Visit the GitHub repository at
https://github.com/markwkiehl/WeatherForensics-MCP
to access the sample Python client script (mcp_client_noaa.py). That script will allow you to interact with the WeatherForensics Model Context Protocol (MCP) server.
No registration or API Key required for the "Forever Free" Tier.
The MCP provides access to standard meteorological data and severe weather tracking via these MCP tools.
Standard Weather Tools:noaa_ncei_monthly_weather_for_location_datenoaa_ncei_daily_weather_for_location_datenoaa_ncei_hourly_weather_for_location_datenoaa_swdi_nx3tvs_tornado_impact_to_locationnoaa_swdi_supercell_storm_nx3mda_impact_to_locationnoaa_swdi_nx3hail_impact_to_locationnoaa_swdi_nx3structure_impact_to_locationnoaa_nhc_tropical_cyclone_for_location_dateThe included sample script mcp_client_noaa.py requires Python 3.10+ and the following packages:
pip install fastmcp python-json-logger
Clone this repository and navigate to the directory containing `mcp_client_noaa.py`.
Configure your service tier by setting the WeatherForensics_API_KEY environment variable. The script automatically determines the correct Uniform Resource Locator (URL) based on this key.
Set the environment variable for your operating system, then run the script:
Execute the client script from your terminal:
python mcp_client_noaa.py
To use the server directly within Claude Desktop or similar AI agents, pass the key via the env object in your agent's configuration file:
{
"mcpServers": {
"weatherforensics": {
"command": "python",
"args": [
"/absolute/path/to/WeatherForensics-MCP/mcp_client_noaa.py"
],
"env": {
"WeatherForensics_API_KEY": ""
}
}
}
}
WeatherForensics is deployed on Google Cloud Run and offers predictable pricing to power your applications. All tiers include access to both the Model Context Protocol (MCP) Server and the Representational State Transfer (REST) Application Programming Interface (API).
| Tier | Price | Rate Limits & Quotas | Infrastructure |
|---|---|---|---|
| Forever Free | $0/mo | 10 Requests Per Minute (RPM), 500 Req/Day, 1 Concurrent | Shared Community Resource |
| Pro | $29/mo | 60 RPM, 10,000 Req/Day, 5 Concurrent | Dedicated Endpoints, Zero Cold Starts |
| Enterprise | $279/mo | 500+ RPM, Unlimited Concurrency | Dedicated Instance, Custom Bulk Payloads |
Note: Free tier users do not need an API key. Excessive volume on the free tier may result in Internet Protocol (IP) throttling or severe latency. Exceeding your tier's rate limits will return a Hypertext Transfer Protocol (HTTP) 429 Too Many Requests status code.
All endpoints require target coordinates (latitude,longitude) and local datetime in ISO format.
Note on Timezones: While all endpoints require your target time as a local datetime (local_datetime_iso), the returned metadata reflects the standard of the underlying dataset. Standard weather responses will echo your input asdatetime_local, whereas Severe Weather Data Inventory (SWDI) responses convert and return your target time asdatetime_utcto align with radar observation standards.
{
"result": {
"event_type": "monthly_weather",
"data_source": "NOAA_NCEI_Search_&_Data_Service_API",
"target_metadata": {
"latitude": 40.4407,
"longitude": -76.12267,
"datetime_local": "2025-07-10T00:00:00"
},
"station_metadata": {
"distance_from_target_mi": 9.8,
"STATION": "USW00014712",
"LATITUDE": 40.37342,
"LONGITUDE": -75.95924,
"ELEVATION_ft": 331.9
},
"data": [
{
"measurement": "Precipitation",
"value": "6.69",
"unit": "\"",
"category": "Precipitation"
},
{
"measurement": "Maximum temperature",
"value": "89.2",
"unit": "\u00b0F",
"category": "Temperature"
}
],
"acknowledgments_and_attributions": {
"required_attribution": "Weather data derived from NOAA NCEI and NHC. This is not an official NOAA product.",
"data_sources": [
"NOAA National Centers for Environmental Information (NCEI)",
"NOAA National Hurricane Center (NHC) HURDAT2 Database"
],
"software_acknowledgments": "Hurricane parsing utilizes hurdat2parser (MIT License).",
"usage_policy": "https://weatherforensics.dev/terms.html",
"attributions_details": "https://weatherforensics.dev/attributions.html"
}
},
"message": "Monthly weather for 2025-07-10 00:00:00 at 40.4407,-76.12267"
}
{
"result": {
"event_type": "daily_weather",
"data_source": "NOAA_NCEI_Search_&_Data_Service_API",
"target_metadata": {
"latitude": 40.4407,
"longitude": -76.12267,
"datetime_local": "2025-07-10T00:00:00"
},
"station_metadata": {
"distance_from_target_mi": 9.8,
"STATION": "USW00014712",
"DATE": "2025-07-10",
"LATITUDE": 40.37342,
"LONGITUDE": -75.95924,
"ELEVATION_ft": 331.9
},
"data": [
{
"measurement": "Maximum temperature",
"value": "88",
"unit": "\u00b0F",
"category": "Temperature"
},
{
"measurement": "Fastest 5-second wind speed",
"value": "12.1",
"unit": "mph",
"category": "Wind"
}
],
"acknowledgments_and_attributions": {
"required_attribution": "Weather data derived from NOAA NCEI and NHC. This is not an official NOAA product.",
"data_sources": [
"NOAA National Centers for Environmental Information (NCEI)",
"NOAA National Hurricane Center (NHC) HURDAT2 Database"
],
"software_acknowledgments": "Hurricane parsing utilizes hurdat2parser (MIT License).",
"usage_policy": "https://weatherforensics.dev/terms.html",
"attributions_details": "https://weatherforensics.dev/attributions.html"
}
},
"message": "Daily weather for 2025-07-10 00:00:00 at 40.4407,-76.12267"
}
{
"result": {
"event_type": "hourly_weather",
"data_source": "NOAA_NCEI_Search_&_Data_Service_API",
"target_metadata": {
"latitude": 40.4407,
"longitude": -76.12267,
"datetime_local": "2025-07-10T13:00:00"
},
"station_metadata": {
"distance_from_target_mi": 9.8,
"STATION_NAME": "READING RGNL AP",
"remarks_Source_Station_ID": "725103-14712",
"timestamp_utc": "2025-07-10T09:54:02+00:00",
"STATION": "USW00014712",
"LATITUDE": 40.3733,
"LONGITUDE": -75.9592,
"ELEVATION_ft": 332.0
},
"data": [
{
"measurement": "temperature",
"value": 25.6,
"unit": "\u00b0C",
"category": "Temperature"
},
{
"measurement": "wind_speed",
"value": 2.1,
"unit": "m/s",
"category": "Wind"
}
],
"acknowledgments_and_attributions": {
"required_attribution": "Weather data derived from NOAA NCEI and NHC. This is not an official NOAA product.",
"data_sources": [
"NOAA National Centers for Environmental Information (NCEI)",
"NOAA National Hurricane Center (NHC) HURDAT2 Database"
],
"software_acknowledgments": "Hurricane parsing utilizes hurdat2parser (MIT License).",
"usage_policy": "https://weatherforensics.dev/terms.html",
"attributions_details": "https://weatherforensics.dev/attributions.html"
}
},
"message": "Hourly weather for 2025-07-10 13:00:00 at 40.4407,-76.12267"
}
{
"result": {
"event_type": "tropical_cyclone",
"data_source": "NOAA_NHC_HURDAT2_Database",
"target_metadata": {
"latitude": 26.674,
"longitude": -82.248,
"datetime_local": "2022-09-28T04:00:00+00:00"
},
"storm_metadata": {
"storm_season": 2022,
"count_of_tropical_cyclones": 35
},
"cyclone_report": {
"STORM_NAME": "IAN (AL092022)",
"OBSERVATION_TIMESTAMP_LOCAL": "28 Sep 2022 14:00:00",
"DISTANCE_FROM_STORM_TRACK_CENTROID_TO_TARGET_mi": 3.5,
"MAX_SUSTAINED_WIND_SPEED_mph": 155.4,
"IMPACT_ANALYSIS": "CRITICAL wind impact measured"
},
"acknowledgments_and_attributions": {
"required_attribution": "Weather data derived from NOAA NCEI and NHC. This is not an official NOAA product.",
"data_sources": [
"NOAA National Centers for Environmental Information (NCEI)",
"NOAA National Hurricane Center (NHC) HURDAT2 Database"
],
"software_acknowledgments": "Hurricane parsing utilizes hurdat2parser (MIT License).",
"usage_policy": "https://weatherforensics.dev/terms.html",
"attributions_details": "https://weatherforensics.dev/attributions.html"
}
},
"message": "Weather conditions from NOAA NHC for tropical cyclone impact at 26.674,-82.248 in 2022:\n"
}
{
"result": {
"event_type": "tornado_vortex_signature",
"data_source": "NOAA_NCEI_SWDI_NX3TVS",
"target_metadata": {
"latitude": 40.7037,
"longitude": -89.4148,
"datetime_utc": "2013-11-17T06:00:00Z"
},
"impact_analysis": {
"target_cpa_miles": 1.66,
"impact_category": "Direct Hit / Core Tornado Impact",
"threat_level": "Extreme",
"description": "Target is within 2 miles of the TVS track. High probability of tornadic impact.",
"required_agent_actions": [
"Overlay target with active NWS GIS warning polygons."
],
"rankine_estimated_wind_kts": 23.5
},
"cpa_radar_metrics": {
"time_utc": "2013-11-17T17:03:14Z",
"time_to_cpa_minutes": 663.2,
"storm_cell_id": "R2",
"wsr_id": "KILX",
"maximum_delta_velocity_kts": 146.0,
"maximum_shear": 69.0,
"azimuth_deg": 348.0,
"range_nm": 33.0
},
"acknowledgments_and_attributions": {
"required_attribution": "Weather data derived from NOAA NCEI and NHC. This is not an official NOAA product.",
"data_sources": [
"NOAA National Centers for Environmental Information (NCEI)",
"NOAA National Hurricane Center (NHC) HURDAT2 Database"
],
"software_acknowledgments": "Hurricane parsing utilizes hurdat2parser (MIT License).",
"usage_policy": "https://weatherforensics.dev/terms.html",
"attributions_details": "https://weatherforensics.dev/attributions.html"
}
},
"message": "Weather conditions from NOAA NCEI SWDI dataset 'nx3tvs' at 40.7037,-89.4148 on 17 Nov 2013"
}
{
"result": {
"event_type": "supercell_mesocyclone",
"data_source": "NOAA_NCEI_SWDI_NX3MDA",
"target_metadata": {
"latitude": 40.7037,
"longitude": -89.4148,
"datetime_utc": "2013-11-17T06:00:00Z"
},
"impact_analysis": {
"target_cpa_miles": 1.11,
"impact_category": "Direct Hit / Core Impact",
"threat_level": "Extreme",
"description": "Target was within 3 miles of the mesocyclone track. High probability of tornadoes or extreme winds.",
"dual_pol_warning": null
},
"cpa_radar_metrics": {
"time_utc": "2013-11-17T17:04:52Z",
"time_to_cpa_minutes": 664.9,
"storm_cell_id": 499,
"distance_from_radar_core_mi": 3.95,
"tornado_vortex_signature": "N",
"low_level_delta_velocity_kts": 106,
"strength_rank": 9.0,
"tornadic_potential": "High"
},
"acknowledgments_and_attributions": {
"required_attribution": "Weather data derived from NOAA NCEI and NHC. This is not an official NOAA product.",
"data_sources": [
"NOAA National Centers for Environmental Information (NCEI)",
"NOAA National Hurricane Center (NHC) HURDAT2 Database"
],
"software_acknowledgments": "Hurricane parsing utilizes hurdat2parser (MIT License).",
"usage_policy": "https://weatherforensics.dev/terms.html",
"attributions_details": "https://weatherforensics.dev/attributions.html"
}
},
"message": "Weather conditions from NOAA NCEI SWDI dataset 'nx3mda' at 40.7037,-89.4148 on 17 Nov 2013"
}
{
"result": {
"event_type": "hail_storm",
"data_source": "NOAA_NCEI_SWDI_NX3HAIL",
"target_metadata": {
"latitude": 42.31476,
"longitude": -88.44616,
"datetime_utc": "2024-08-27T05:00:00Z"
},
"impact_analysis": {
"target_cpa_miles": 1.37,
"impact_category": "Near Miss / Hail Impact",
"threat_level": "High",
"description": "Target was within 1 to 5 miles of the hail core. Severe probability: 60.0%.",
"dual_pol_warning": null
},
"cpa_radar_metrics": {
"time_utc": "2024-08-27T22:36:37Z",
"time_to_cpa_minutes": 1056.6,
"storm_cell_id": "C0",
"wsr_id": "KMKE",
"distance_from_radar_core_mi": 4.45,
"hail_probability_pct": 100.0,
"severe_probability_pct": 60.0,
"max_hail_size_in": 1.5
},
"acknowledgments_and_attributions": {
"required_attribution": "Weather data derived from NOAA NCEI and NHC. This is not an official NOAA product.",
"data_sources": [
"NOAA National Centers for Environmental Information (NCEI)",
"NOAA National Hurricane Center (NHC) HURDAT2 Database"
],
"software_acknowledgments": "Hurricane parsing utilizes hurdat2parser (MIT License).",
"usage_policy": "https://weatherforensics.dev/terms.html",
"attributions_details": "https://weatherforensics.dev/attributions.html"
}
},
"message": "Weather conditions from NOAA NCEI SWDI dataset 'nx3hail' at 42.31476,-88.44616 on 27 Aug 2024"
}
{
"result": {
"event_type": "storm_cell_structure",
"data_source": "NOAA_NCEI_SWDI_NX3STRUCTURE",
"target_metadata": {
"latitude": 40.7037,
"longitude": -89.4148,
"datetime_utc": "2013-11-17T06:00:00Z"
},
"impact_analysis": {
"target_cpa_miles": 0.38,
"impact_category": "Direct Hit / Core Impact",
"description": "Target was within 3 miles of the storm core track. High probability of heavy precipitation, large hail, or severe wind."
},
"cpa_radar_metrics": {
"time_utc": "2013-11-17T16:43:46Z",
"time_to_cpa_minutes": 643.8,
"storm_cell_id": "Z3",
"wsr_id": "KMKX",
"distance_from_radar_core_mi": 55.57,
"max_reflectivity_dbz": 53,
"vertically_integrated_liquid_kg_m2": 15
},
"acknowledgments_and_attributions": {
"required_attribution": "Weather data derived from NOAA NCEI and NHC. This is not an official NOAA product.",
"data_sources": [
"NOAA National Centers for Environmental Information (NCEI)",
"NOAA National Hurricane Center (NHC) HURDAT2 Database"
],
"software_acknowledgments": "Hurricane parsing utilizes hurdat2parser (MIT License).",
"usage_policy": "https://weatherforensics.dev/terms.html",
"attributions_details": "https://weatherforensics.dev/attributions.html"
}
},
"message": "Weather conditions from NOAA NCEI SWDI dataset 'nx3structure' at 40.7037,-89.4148 on 17 Nov 2013"
}
When integrating the API, you may encounter the following standard HTTP status codes:
200 OK: The request was successful and the JSON payload is returned.400 Bad Request: The request payload is malformed, missing required fields (latitude, longitude, local_datetime_iso), or contains invalid coordinates/dates.401 Unauthorized: An invalid or missing API Key was provided for a Pro/Enterprise tier endpoint.405 Method not allowed: You are trying to connect with the REST API endpoint using the MCP client script.429 Too Many Requests: You have exceeded the rate limits for your specific subscription tier. Back off and retry later.500 Internal Server Error: An unexpected error occurred on the server (e.g., upstream NOAA API timeouts).When integrating the WeatherForensics Application Programming Interface (API) or Model Context Protocol (MCP) into your applications, you must comply with the following usage and attribution requirements.
Note: The client scripts in this repository are open-sourced under the Massachusetts Institute of Technology (MIT) License. Access to the WeatherForensics API and its data is strictly subject to our full Terms of Service.
To comply with National Oceanic and Atmospheric Administration (NOAA) guidelines, any public-facing application or AI agent interface displaying our data must include the following attribution visibly to the end-user:
"Weather data derived from NOAA National Centers for Environmental Information (NCEI) and the National Hurricane Center (NHC). This application and its data are not official NOAA products and do not represent any agency determination, view, or policy."
Data Sources: Tropical cyclone impact analysis is derived from the HURDAT2 database (Landsea, C. W., and J. L. Franklin, 2013). Our backend utilizes the hurdat2parser library (Copyright © 2019-2021 Kyle S. Gentry), licensed under the MIT License.
Disclaimer: The service is provided on an "AS IS" and "AS AVAILABLE" basis. Data should not be used as the sole basis for life-safety decisions, financial trading, or legal determinations.
Acknowledgments & Attributions | Terms of Service | Copyright © 2026 Mechatronic Solutions LLC, All Rights Reserved