Skip to main content
Glama
Benziela
by Benziela
README.md
# Weather MCP Server

A Model Context Protocol (MCP) server that provides real-time weather data and alerts from the National Weather Service (NWS) API.

## Features

- šŸŒ¤ļø **Weather Forecasts**: Get detailed weather forecasts for any US location using latitude/longitude coordinates
- 🚨 **Weather Alerts**: Retrieve active weather alerts for any US state
- šŸ”Œ **MCP Compatible**: Integrates seamlessly with Claude Desktop and other MCP clients

## Tools

### `get_forecast`
Get a detailed weather forecast for a specific location.

**Parameters:**
- `latitude` (float): Latitude of the location
- `longitude` (float): Longitude of the location

**Returns:** Formatted forecast for the next 5 periods including temperature, wind conditions, and detailed descriptions.

**Example:**
```
get_forecast(40.7128, -74.0060)  # New York City
```

### `get_alerts`
Get active weather alerts for a US state.

**Parameters:**
- `state` (string): Two-letter US state code (e.g., "CA", "NY", "TX")

**Returns:** List of active weather alerts with event type, area, severity, description, and instructions.

**Example:**
```
get_alerts("CA")  # California alerts
```

## Installation

### Prerequisites
- Python 3.12 or higher
- [uv](https://docs.astral.sh/uv/) package manager

### Setup

1. Clone the repository:
```bash
git clone https://github.com/Benziela/weather-mcp.git
cd weather-mcp
```

2. Install dependencies:
```bash
uv sync
```

## Usage

### With Claude Desktop

Add this configuration to your Claude Desktop config file:

**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "weather": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\Users\\jonathbenjamin_a\\Learn\\weather-mcp",
        "run",
        "weather"
      ]
    }
  }
}
```

### Standalone

Run the server directly:
```bash
uv run weather
```

## Development

The project structure:
```
weather-mcp/
ā”œā”€ā”€ weather.py          # Main MCP server implementation
ā”œā”€ā”€ main.py            # Entry point
ā”œā”€ā”€ pyproject.toml     # Project configuration
ā”œā”€ā”€ uv.lock           # Dependency lock file
└── README.md         # This file
```

## API Data Source

This server uses the [National Weather Service API](https://www.weather.gov/documentation/services-web-api), which provides:
- Free access with no API key required
- High-quality weather data for US locations
- Real-time weather alerts and warnings
- Detailed forecast periods

## Dependencies

- `httpx` - Async HTTP client for API requests
- `mcp` - Model Context Protocol SDK with CLI support

## License

MIT

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## Author

Benziela