weather — Enhanced MCP Weather Server
A feature-rich MCP (Model Context Protocol) server that provides comprehensive weather data using the NWS (National Weather Service) public APIs. Includes input validation, error handling, geocoding, and a unique weather comparison feature.
Quick start
Install uv (macOS / Linux):
Create project, venv and install deps:
Run the server:
Available Tools
The server provides the following MCP tools:
1. get_alerts(state: str)
Get active weather alerts for a US state.
Input: Two-letter US state code (e.g., "CA", "NY", "TX")
Features: Validates state codes, provides detailed alert information
2. get_forecast(latitude: float, longitude: float)
Get detailed weather forecast for a location using coordinates.
Input: Latitude (-90 to 90) and Longitude (-180 to 180)
Features: 10-period forecast (5 days), includes humidity and precipitation probability
3. get_forecast_by_city(city_name: str)
Get weather forecast by city name (no coordinates needed!).
Input: City name (e.g., "San Francisco", "New York", "Chicago")
Features: Automatic geocoding, works with city names
4. get_current_conditions(latitude: float, longitude: float)
Get real-time current weather conditions.
Input: Latitude and Longitude
Features: Temperature, humidity, wind, pressure, visibility, and more
5. compare_weather(location1: str, location2: str)
Compare weather conditions between two locations side-by-side.
Input: Two locations (city names or "lat,lon" format)
Features: Side-by-side comparison, temperature difference analysis, supports both city names and coordinates
Features
✅ Input Validation: Validates state codes and coordinate ranges
✅ Better Error Handling: Specific, helpful error messages
✅ Geocoding Support: Search by city name using Open-Meteo geocoding API
✅ Current Conditions: Real-time weather observations
✅ Enhanced Forecasts: More detailed information including humidity and precipitation
✅ Weather Comparison: Unique feature to compare two locations
✅ Location Detection: Automatically detects and displays city/state names
Files
weather.py— Main MCP server implementation with all toolsmain.py— Entry point that imports and runs the server
Notes
Python 3.11+ required (see
pyproject.toml)NWS Coverage: The NWS API only covers US territories. International locations will not work.
Transport: The server uses stdio transport by default
MCP Clients: Use Claude Desktop,
mcpCLI, or another MCP client to connectGeocoding: City name search uses Open-Meteo's free geocoding API (no API key required)
Example Usage
Once connected to an MCP client, you can use the tools like:
License
Apache License 2.0 — see LICENSE. Replace the placeholder year/name in LICENSE if needed.