Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-weatherwhat's the current weather and air quality in Helsinki?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🇪🇺🇫🇮 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 includedMulti-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 |
| Current conditions from up to 5 sources, merged into one result |
| 1-7 day daily forecast (temperature, precipitation, wind, UV) |
| European AQI with PM2.5, PM10, NO2, O3, SO2, CO levels |
| Aviation weather (raw + decoded) from aviationweather.gov |
| Sunrise, sunset, day length, moon phase and illumination |
| Health check for all sources + cache statistics |
Location Input
The server accepts multiple location formats:
Format | Example | Notes |
Finnish alias |
| 30+ cities with ICAO codes |
Nordic capital |
| Finnish names work too ( |
City name |
| Geocoded via Open-Meteo |
Coordinates |
| Latitude, longitude |
ICAO code |
| 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 -dThe 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 transportClaude 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 |
| (empty) | OpenWeatherMap free tier key |
| (empty) | WeatherAPI free tier key |
| (empty) | Tomorrow.io free tier key |
|
| Cache time-to-live in minutes |
|
| Maximum cached responses |
|
| 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 codesTransport
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).