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 — 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 forecastshould_i_carry_umbrella("Mumbai")— a yes/no answer with reasoning, not just a rain percentageis_good_for_outdoors("Delhi")— checks rain, wind, and temperature together to judge if it's a good day to be outsidecompare_weather("Bangalore", "Delhi")— compares two cities at once
Setup
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):
python test_weather.py
Connecting it to Claude Desktop
Add this to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["/absolute/path/to/weather-mcp/server.py"]
}
}
}
Connecting it to Gemini CLI
Add this to ~/.gemini/settings.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.