Real-time natural hazard monitoring: earthquakes, tsunamis, volcanoes, solar weather, air quality
Runs on your machine from its package; the steps are below.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted β your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
uvx wems-mcp-server
MCP client config
{
"mcpServers": {
"wems": {
"command": "uvx",
"args": [
"wems-mcp-server"
]
}
}
}π¨ Real-time Natural Hazard Monitoring for AI Agents
A powerful Model Context Protocol (MCP) server that connects AI assistants to authoritative natural hazard data sources. Monitor earthquakes, tsunamis, volcanoes, and solar events with configurable alerts and webhooks.
π€ AI Agents: Skip scanning this repo. Read
AI.TOCfirst β it's a 500-token project map. Then useAI.INDEXto find specific functions andAI.REGISTERfor env vars, APIs, and config. This project uses the LBF AI Navigation Standard.
| Hazard Type | Data Source | Coverage |
|---|---|---|
| π Earthquakes | USGS | Global, magnitude filtering |
| π Tsunamis | NOAA PTWC + CTWC | Global ocean basins |
| π Volcanoes | Smithsonian GVP + USGS | Global volcanic activity |
| βοΈ Solar Events | NOAA SWPC | Solar flares, CMEs, geomagnetic storms |
| π Space Weather Alerts | NOAA SWPC | Active space weather alerts & warnings |
| π Hurricanes | NHC + NWS | Atlantic & Pacific tropical cyclones |
| π₯ Wildfires | NWS + NIFC | Fire weather alerts & active perimeters |
| βοΈ Severe Weather | NWS Alerts | Tornadoes, thunderstorms, floods, winter storms |
| π¨ Air Quality | OpenAQ | Global AQI, PM2.5, PM10, Oβ, NOβ, SOβ, CO |
| π΅ Drought Conditions | US Drought Monitor | US state drought levels (D0-D4) + trends |
| π‘οΈ Threat Advisories | DHS NTAS + State Dept + CISA | Terrorism, travel risk, cyber threats |
pip install wems-mcp-server
git clone https://github.com/heliosarchitect/wems-mcp-server.git
cd wems-mcp-server
pip install -r requirements.txt
# Run as MCP server (connects to AI assistants)
python -m wems_mcp_server
# Test earthquake monitoring
python -c "
import asyncio
from wems_mcp_server import check_earthquakes
print(asyncio.run(check_earthquakes(min_magnitude=6.0)))
"
bash scripts/setup_wems_alerting_ai.sh
This will:
wems-unified-relay.service{
"earthquakes_found": 3,
"events": [
{
"magnitude": 7.2,
"location": "67 km SW of Tres Picos, Mexico",
"time": "2024-02-13T14:30:15Z",
"depth": 35.8,
"tsunami_threat": true
}
]
}
| Tool | Description |
|---|---|
check_earthquakes | Query recent earthquake activity |
check_solar | Monitor space weather (K-index, flares, CMEs) |
check_volcanoes | Track volcanic activity alerts |
check_tsunamis | Monitor tsunami warnings |
check_hurricanes | Track tropical cyclones & forecast tracks |
check_wildfires | Fire weather alerts & active perimeters |
check_severe_weather | Monitor tornadoes, thunderstorms, flash floods |
check_floods | Flood warnings & USGS river gauge data |
check_air_quality | AQI monitoring with pollutant data |
check_threat_advisories | Terrorism, travel risk & cyber threat monitoring |
check_space_weather_alerts | Active space weather alerts & warnings from NOAA SWPC |
check_drought_status | US state drought conditions with D0-D4 levels (Premium) |
configure_alerts | Update alert thresholds and webhooks |
fuse_multi_source_incidents | Multi-source incident fusion (feature-flagged) |
alerts:
earthquake:
min_magnitude: 6.0
regions: ["US", "Caribbean", "Pacific"]
webhook: "https://your-endpoint.com/earthquake"
solar:
min_kp_index: 7 # Geomagnetic storm threshold
webhook: "https://your-endpoint.com/solar"
volcano:
alert_levels: ["WARNING", "WATCH"]
webhook: "https://your-endpoint.com/volcano"
tsunami:
enabled: true
regions: ["pacific", "atlantic", "indian"]
webhook: "https://your-endpoint.com/tsunami"
Add to your OpenClaw configuration:
{
"mcpServers": {
"wems": {
"command": "python3",
"args": ["/path/to/wems-mcp-server/wems_mcp_server.py"],
"env": {
"WEMS_CONFIG": "/path/to/config.yaml"
}
}
}
}
# config.yaml - Full customization example
alerts:
earthquake:
min_magnitude: 6.0
regions: ["US", "Caribbean", "Pacific"]
webhook: "https://your-endpoint.com/earthquake"
solar:
min_kp_index: 7 # G3+ geomagnetic storm
webhook: "https://your-endpoint.com/solar"
volcano:
alert_levels: ["WARNING", "WATCH"]
regions: ["Cascade Range", "Ring of Fire"]
webhook: "https://your-endpoint.com/volcano"
tsunami:
enabled: true
regions: ["pacific", "atlantic", "indian"]
webhook: "https://your-endpoint.com/tsunami"
Pair with monitoring tools for comprehensive coverage:
# Example: Send earthquake data to monitoring system
curl -X POST https://your-monitoring.com/api/events \
-H "Content-Type: application/json" \
-d "$(python -c 'import wems; print(wems.get_recent_earthquakes())')"
WEMS now includes Stripe metering scaffolding and affordable default pricing.
1 unitcheck_space_weather_alerts: 2 unitsfuse_multi_source_incidents: 3 unitsSee: config/wems_stripe_billing.json
Key fields:
event_nameapi_key_to_customerbilling_units.defaultbilling_units.by_toolpricing.free_calls_per_rolling_30dpricing.tiers[]STRIPE_API_KEY or STRIPE_SECRET_KEY (direct env)WEMS uses best-effort lookup and never blocks alerting if billing key resolution fails.
Built with β€οΈ for the AI community by Helios π
Part of the expanding OpenClaw ecosystem