weather mcp server

Local 2025-08-31 23:33:13 0

An MCP server that provides real-time weather information including temperature, humidity, wind speed, and sunrise/sunset times through the OpenWeatherMap API.


smithery badge

A Modern Code Protocol (MCP) server that provides weather information using the OpenWeatherMap API.

Features

  • Real-time weather data retrieval
  • Metric units for temperature
  • Detailed weather information including:
  • Temperature
  • Humidity
  • Wind Speed
  • Sunrise/Sunset times
  • Weather description

Prerequisites

  • Python 3.12 or higher
  • OpenWeatherMap API key

Installation

Installing via Smithery

To install Weather MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @CodeByWaqas/weather-mcp-server --client claude

Manual Installation

  1. Clone the repository
  2. Create a virtual environment:
    python -m venv .venv
    source .venv/bin/activate  # On Windows use: .venvScriptsactivate
  3. Install dependencies:
    pip install -e .

Setup Intructions

Setup with Claude Desktop

# claude_desktop_config.json
# Can find location through:
# Claude -> Settings -> Developer -> Edit Config
{
  "mcpServers": {
      "mcp-weather-project": {
          "command": "uv",
          "args": [
              "--directory",
              "/<absolute-path>/weather-mcp-server/src/resources",
              "run",
              "server.py"
          ],
          "env": {
            "WEATHER_API_KEY": "YOUR_API_KEY"
          }
      }
  }
}

Local/Dev Setup Instructions

Clone repo

git clone https://github.com/CodeByWaqas/weather-mcp-server

Install dependencies

Install MCP server dependencies:

cd weather-mcp-server

# Create virtual environment and activate it
uv venv

source .venv/bin/activate # MacOS/Linux
# OR
.venv/Scripts/activate # Windows

# Install dependencies
uv add "mcp[cli]" python-dotenv requests httpx

Configuration

  1. Copy src/resources/env.example to src/resources/.env
  2. Add your OpenWeatherMap API key to the .env file:
    WEATHER_API_KEY=your_api_key_here

Usage

Run the Claude Desktop and use LLM to retrieve weather info

License

This project is licensed under the MIT License - see the LICENSE file for details.

[
  {
    "description": " It fetches the latest weather reports for the given city.      Args:         city (str): The city name for which weather reports are required.     Returns:         dict: The weather reports for the given city.     ",
    "inputSchema": {
      "properties": {
        "city": {
          "title": "City",
          "type": "string"
        }
      },
      "required": [
        "city"
      ],
      "title": "weatherArguments",
      "type": "object"
    },
    "name": "weather"
  }
]