weather-mcp-server

A Model Context Protocol (MCP) server that provides weather information for cities around the world.

Visit Server
Added on 3/28/2025

Weather MCP Server

smithery badge

A Model Context Protocol (MCP) server that provides weather information for cities around the world.

Features

  • Get current weather for any city
  • Provides temperature, weather conditions, humidity, wind information, and more
  • Fallback to mock data if API request fails

Requirements

  • Node.js (v14 or higher)
  • npm or yarn
  • OpenWeather API key (optional - will use mock data if not provided)

Installation

  1. Clone this repository
  2. Install dependencies:
    npm install
    
  3. Build the server:
    npm run build
    

Usage

Running locally

npm start

Using with Claude or other MCP-compatible AI assistants

Add the following configuration to your MCP settings:

{
  "mcpServers": {
    "weather-server": {
      "command": "node",
      "args": ["path/to/weather-server/build/index.js"],
      "env": {
        "OPENWEATHER_API_KEY": "your-api-key-here" // Optional - will use mock data if not provided
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

API Key and Mock Data

This server can operate in two modes:

  1. With API Key: When an OpenWeather API key is provided via the OPENWEATHER_API_KEY environment variable, the server will fetch real-time weather data from the OpenWeather API.

  2. Without API Key: If no API key is provided, the server will automatically use mock data for a set of predefined cities (London, New York, Tokyo, Paris, Sydney). For other cities, it will use default mock data.

To get an OpenWeather API key:

  1. Sign up at OpenWeather
  2. Navigate to your account's "API keys" section
  3. Generate a new API key or use an existing one

The mock data mode is useful for development, testing, or when you don't need real-time weather data.

Available Tools

get_current_weather

Get current weather information for a specified city.

Input Schema:

{
  "city": "string" // City name (e.g., "London", "New York", "Tokyo")
}

Example Response:

{
  "location": "London, GB",
  "date": "Monday, March 24, 2025",
  "time": "7:30:00 PM",
  "temperature": {
    "current": "12°C",
    "feelsLike": "10°C"
  },
  "weather": {
    "main": "Cloudy",
    "description": "Overcast clouds",
    "icon": "https://openweathermap.org/img/wn/04d@2x.png"
  },
  "details": {
    "humidity": "75%",
    "pressure": "1012 hPa",
    "windSpeed": "4.5 m/s",
    "windDirection": "230°",
    "cloudiness": "90%",
    "sunrise": "6:45 AM",
    "sunset": "7:30 PM"
  },
  "source": "OpenWeather API" // or "Mock Data (No API key provided)" or "Mock Data (API request failed)"
}

The source field in the response indicates where the data came from:

  • "OpenWeather API": Real-time data from the OpenWeather API
  • "Mock Data (No API key provided)": Mock data used because no API key was provided
  • "Mock Data (API request failed)": Mock data used because the API request failed

License

MIT