io.github.darshan0548/weather-mcp
MCP server for weather with reasoning — umbrella advice, outdoor checks, city comparisons.
Open source Repository Open in the app JSON README (API)
About
MCP server for weather with reasoning — umbrella advice, outdoor checks, city comparisons.
Details
- Kind
- MCP servers
- Topic
- AI, RAG & memory
- Publisher
- darshan0548
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 1.1.0
- Last push
- 2026-08-28T19:45:07Z
- Repository state
- ativo
- Language
- Python
- License
- MIT
- Added
- 2026-08-29 03:02:41
- Updated
- 2026-08-29 03:02:41
- Origin id
io.github.darshan0548/weather-mcp
README
# weather-mcp
An MCP (Model Context Protocol) server that lets an AI assistant Claude, Gemini CLI, or any MCP-compatible client answer real weather questions using live data, instead of just fetching raw numbers.
Powered by [Open-Meteo](https://open-meteo.com) — free, no API key required.
## Why this isn't just a raw weather API wrapper
Most weather integrations just return `temperature: 22°C`. This one adds a reasoning layer on top, so you can ask things a plain API can't answer directly:
- `get_weather("Bangalore")` — current conditions + today's forecast
- `should_i_carry_umbrella("Mumbai")` — a yes/no answer with reasoning, not just a rain percentage
- `is_good_for_outdoors("Delhi")` — checks rain, wind, and temperature together to judge if it's a good day to be outside
- `compare_weather("Bangalore", "Delhi")` — compares two cities at once
## Setup
```bash
git clone https://github.com/darshan0548/weather-mcp.git
cd weather-mcp
python3 -m venv venv
source venv/bin/activate # on Windows: venv\Scripts\activate
pip install -r requirements.txt
```
## Running the tests
A quick sanity check against the real API (no mocking, no API key needed):
```bash
python test_weather.py
```
## Connecting it to Claude Desktop
Add this to your Claude Desktop config (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["/absolute/path/to/weather-mcp/server.py"]
}
}
}
```
## Connecting it to Gemini CLI
Add this to `~/.gemini/settings.json`:
```json
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["/absolute/path/to/weather-mcp/server.py"]
}
}
}
```
Restart your client, then just ask it something like *"should I carry an umbrella in Chennai today?"*
## Project structure
```
weather_core.py # talks to the Open-Meteo API, no MCP-specific code
weather_advice.py # reasoning layer built on top of raw weather data
server.py # MCP server — wires the above into tools
test_weather.py # sanity tests against the real API
```
Kept as separate files on purpose — `weather_core.py` and `weather_advice.py` have no MCP dependency at all, so they're easy to test or reuse on their own.
## Contributing
PRs welcome. Some ideas if you want to add a tool:
- Hourly forecast breakdown instead of just today's summary
- Air quality data (Open-Meteo has a free endpoint for this too)
- Multi-day trip planning (best day this week for an outdoor event)
- Severe weather alerts
Keep new tools in `weather_advice.py` if they add reasoning on top of raw data, or `weather_core.py` if they're pure data fetching — then wire them into `server.py` as a new `@mcp.tool()`.
## License
MIT — see [LICENSE](LICENSE).