weather-mcp
by kaustubhreet
README.md
# weather-mcp š¤
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that
provides weather data ā current conditions and forecasts ā to AI agents.
### what an MCP Server?
```
An MCP server is just a Python program that:
1. Starts a server.
2. Registers one or more tools.
3. Waits for a client (Cline) to call those tools.
4. Executes the requested tool.
5. Returns the result.
```
## Architecture
```
weather-mcp/
āāā src/
ā āāā server.py # MCP server entry point
ā āāā config.py # Config/constants
ā āāā logger.py # Logging
ā āāā tools/weather.py # MCP tool definitions
ā āāā services/weather_service.py # Business logic
ā āāā clients/weather_client.py # OpenWeatherMap API client
ā āāā models/weather_model.py # Data models
ā āāā utils/helpers.py # Utility functions
āāā tests/test_weather.py
```
## Prerequisites
- Python ā„ 3.10
- An [OpenWeatherMap API key](https://openweathermap.org/api) (free tier)
## Setup
```bash
# Clone and enter the directory
cd weather-mcp
# Create a virtual environment
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/macOS
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Configure your API key
cp .env.example .env
# Edit .env and set WEATHER_API_KEY=your_key
```
## Usage
### Run the MCP server (stdio mode)
```bash
python -m src.server
```
Or using the MCP CLI:
```bash
mcp run src/server.py
```
## Available Tools
| Tool | Description |
|-------------------|--------------------------------------------|
| `get_current_weather` | Current conditions by city or GPS coordinates |
| `get_forecast` | 3-hourly forecast by city or GPS coordinates |
Both tools accept `units` (`metric`, `imperial`, or `standard`).
## Testing
```bash
pytest tests/
```
### Output format
Here's the current weather for **Mumbai** fetched live from the weather-mcp server:
---
**āļø Mumbai, IN ā Broken Clouds**
| Metric | Value |
|--------|-------|
| š” Temperature | **30.1°C** (feels like **35.5°C**) |
| š Min / Max | 30.1°C / 30.1°C |
| š§ Humidity | **71%** |
| š¬ Wind | **4.4 m/s** at 255° (WSW) |
| š Visibility | **10,000 m** |
| āļø Cloud Cover | **82%** |
| š½ Pressure | **1006 hPa** |
---
Notice the **feels-like temperature (35.5°C)** is noticeably higher than the actual 30.1°C ā this is due to the high humidity (71%) making it feel much hotter, which is typical for Mumbai's coastal climate.This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues