Odel
weather mcp

weather mcp

@darshan0548PythonMITUpdated 1w ago

MCP server for weather with reasoning — umbrella advice, outdoor checks, city comparisons.

Server endpointStreamable HTTPNo authProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

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 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

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.