mcp-weather

mcp-weather

An MCP server that aggregates data from six weather sources to provide current conditions, forecasts, air quality, and aviation METAR information, specifically optimized for European and Nordic locations. It supports multi-source data merging and functions without API keys for several integrated providers.

Category
Visit Server

README

🇪🇺🇫🇮 mcp-weather

A Model Context Protocol (MCP) server that aggregates weather data from 6 sources, optimized for European and Nordic/Baltic locations. Works out of the box with zero API keys -- add optional keys to unlock more sources.

Features

  • 6 weather sources -- Open-Meteo, wttr.in, METAR, OpenWeatherMap, WeatherAPI, Tomorrow.io
  • 6 MCP tools -- current weather, forecast, air quality, aviation METAR, astronomy, source status
  • Nordic/Finnish focus -- 30+ Finnish cities with instant alias resolution (e.g. hki, tre, stadi), Nordic/Baltic capitals included
  • Multi-source aggregation -- merges data from all available sources for more complete and accurate results
  • Zero-config start -- 3 sources work without any API keys (Open-Meteo, wttr.in, METAR)
  • Smart caching -- LRU cache with stampede prevention, configurable TTL

MCP Tools

Tool Description
get_current_weather Current conditions from up to 5 sources, merged into one result
get_weather_forecast 1-7 day daily forecast (temperature, precipitation, wind, UV)
get_air_quality European AQI with PM2.5, PM10, NO2, O3, SO2, CO levels
get_metar Aviation weather (raw + decoded) from aviationweather.gov
get_astronomy Sunrise, sunset, day length, moon phase and illumination
get_weather_source_status Health check for all sources + cache statistics

Location Input

The server accepts multiple location formats:

Format Example Notes
Finnish alias hki, tre, stadi, turku 30+ cities with ICAO codes
Nordic capital stockholm, oslo, tallinn Finnish names work too (tukholma)
City name London, Berlin, Tokyo Geocoded via Open-Meteo
Coordinates 60.17,24.94 Latitude, longitude
ICAO code EFHK, ESSA For METAR tool

Quick Start

Docker (recommended)

git clone https://github.com/Koneisto/mcp-weather.git
cd mcp-weather
cp .env.example .env          # optionally add API keys
npm install && npm run build  # build TypeScript
docker compose up -d

The server will be available at http://localhost:3015 via supergateway (Streamable HTTP transport).

Local Development

git clone https://github.com/Koneisto/mcp-weather.git
cd mcp-weather
npm install
npm run build
node build/index.js           # runs on stdio transport

Claude Desktop / Claude Code

Add to your MCP client configuration:

{
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": ["/path/to/mcp-weather/build/index.js"],
      "env": {
        "OPENWEATHERMAP_API_KEY": "",
        "WEATHERAPI_KEY": "",
        "TOMORROW_IO_API_KEY": ""
      }
    }
  }
}

Configuration

All settings are via environment variables. Copy .env.example to .env to get started.

Variable Default Description
OPENWEATHERMAP_API_KEY (empty) OpenWeatherMap free tier key
WEATHERAPI_KEY (empty) WeatherAPI free tier key
TOMORROW_IO_API_KEY (empty) Tomorrow.io free tier key
CACHE_TTL_MINUTES 60 Cache time-to-live in minutes
CACHE_MAX_ENTRIES 200 Maximum cached responses
HTTP_TIMEOUT_MS 10000 HTTP request timeout in milliseconds

Sources by API Key Requirement

Source Requires Key Data Provided
Open-Meteo No Current, forecast, air quality
wttr.in No Current conditions
METAR No Aviation weather
OpenWeatherMap Yes Current conditions
WeatherAPI Yes Current conditions, astronomy (moon)
Tomorrow.io Yes Current conditions, air quality

Architecture

src/
  index.ts              # MCP server entry point (stdio transport)
  config.ts             # Environment variable loading
  cache.ts              # LRU cache with stampede prevention
  types.ts              # Shared TypeScript interfaces
  tools/
    current-weather.ts  # get_current_weather
    forecast.ts         # get_weather_forecast
    air-quality.ts      # get_air_quality
    metar.ts            # get_metar
    astronomy.ts        # get_astronomy
    source-status.ts    # get_weather_source_status
  sources/
    open-meteo.ts       # Open-Meteo (current, forecast, AQI)
    wttr-in.ts          # wttr.in (current)
    openweathermap.ts   # OpenWeatherMap (current)
    weatherapi.ts       # WeatherAPI (current, astronomy)
    tomorrow-io.ts      # Tomorrow.io (current, AQI)
    metar.ts            # aviationweather.gov (METAR)
  utils/
    aggregator.ts       # Multi-source data merging
    finnish-locations.ts # Finnish/Nordic city alias map
    location.ts         # Location resolution (alias -> geocode -> coords)
    units.ts            # Unit conversions and WMO weather codes

Transport

The server uses stdio transport natively. The Docker setup wraps it with supergateway to expose it as a Streamable HTTP endpoint on port 3000 (mapped to 3015 in docker-compose).

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured