weather-mcp-server
A Model Context Protocol (MCP) server that provides weather information for cities around the world.
Weather MCP Server
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
- Clone this repository
 - Install dependencies:
npm install - 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:
- 
With API Key: When an OpenWeather API key is provided via the
OPENWEATHER_API_KEYenvironment variable, the server will fetch real-time weather data from the OpenWeather API. - 
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:
- Sign up at OpenWeather
 - Navigate to your account's "API keys" section
 - 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