open-meteo-mcp
Enables users to get weather forecasts, snow conditions, air quality, and location search via the Open-Meteo API, with guided prompts for ski trips and outdoor activities.
README
[!WARNING] This repository has been consolidated into the swiss-mcp mono-repo. New development happens in
packages/open-meteo-mcp/. This repo is kept for historical reference only.
Open Meteo MCP Server
A Model Context Protocol (MCP) server providing weather and snow condition tools via the Open-Meteo API.
Version 3.3.0 - Full type safety, automated quality checks, 90% test coverage!
Features
Core Capabilities
- Geocoding: Search locations by name instead of coordinates
- Weather Forecasts: Get current weather and multi-day forecasts for any location
- Snow Conditions: Get snow depth, snowfall, and mountain weather data
- Air Quality: Monitor AQI, pollutants, UV index, and pollen levels
- MCP Resources: Weather codes, ski resort coordinates, AQI reference, Swiss locations
- MCP Prompts: Guided workflows for ski trips, outdoor activities, and travel planning
- Free API: No API key required - powered by Open-Meteo's free weather API
- MCP Integration: Seamlessly integrates with MCP-compatible clients like Claude Desktop
Quality & Reliability (Phase 8 Complete)
- Type Safety: 0 mypy errors, full type annotations across codebase
- Code Quality: 100% ruff formatting and linting compliant
- Error Handling: Standardized error handling decorators across all tools (Phase 8)
- Automated Checks: Pre-commit hooks enforce quality on every commit
- Test Coverage: 248+ tests passing, 90%+ code coverage
- Production Ready: Fully tested, documented, and ready for deployment
Tools
search_location
Search for locations by name to get coordinates (NEW in v2.1).
Parameters:
name(required): Location name to searchcount(optional): Number of results (1-100, default: 10)language(optional): Language for results (default: "en")country(optional): Country code filter (e.g., "CH" for Switzerland)
Example: search_location(name="Zurich") → Returns coordinates, elevation, timezone
get_weather
Get weather forecast for a location with temperature, precipitation, humidity, and more.
Parameters:
latitude(required): Latitude in decimal degreeslongitude(required): Longitude in decimal degreesforecast_days(optional): Number of forecast days (1-16, default: 7)include_hourly(optional): Include hourly forecasts (default: true)timezone(optional): Timezone for timestamps (default: "auto")
Enhanced in v2.1: Now includes precipitation probability, apparent temperature, UV index, cloud cover, visibility, wind gusts
get_snow_conditions
Get snow conditions and forecasts for mountain locations.
Parameters:
latitude(required): Latitude in decimal degreeslongitude(required): Longitude in decimal degreesforecast_days(optional): Number of forecast days (1-16, default: 7)include_hourly(optional): Include hourly data (default: true)timezone(optional): Timezone for timestamps (default: "Europe/Zurich")
Enhanced in v2.1: Now includes wind chill, cloud cover, precipitation probability
get_air_quality
Get air quality forecast including AQI, pollutants, UV index, and pollen (NEW in v2.1).
Parameters:
latitude(required): Latitude in decimal degreeslongitude(required): Longitude in decimal degreesforecast_days(optional): Number of forecast days (1-5, default: 5)include_pollen(optional): Include pollen data (default: true, Europe only)
Returns: European/US AQI, PM10, PM2.5, O3, NO2, SO2, CO, UV index, pollen counts
Resources
The server provides MCP resources for reference data:
weather-codes
WMO weather code reference with descriptions, categories, and travel impact.
- URI:
weather://codes - Format: JSON
- Content: 28 weather codes with interpretations
...existing code...
swiss-locations
Popular Swiss locations with coordinates (NEW in v2.1).
- URI:
weather://swiss-locations - Format: JSON
- Content: Cities, mountains, passes, and lakes
aqi-reference
Air Quality Index interpretation guide (NEW in v2.1).
- URI:
weather://aqi-reference - Format: JSON
- Content: European/US AQI scales, UV index, pollen levels, health recommendations
weather-parameters
Available weather and snow parameters from Open-Meteo API.
- URI:
weather://parameters - Format: JSON
- Content: Hourly/daily parameters with units and categories
Prompts
The server provides MCP prompts to guide LLM workflows:
ski-trip-weather
Guide for checking snow conditions and weather for ski trips.
- Arguments: resort, dates
- Workflow: Resort lookup → Snow conditions → Weather → Assessment
plan-outdoor-activity
Weather-aware outdoor activity planning workflow.
- Arguments: activity, location, timeframe
- Workflow: Activity sensitivity → Weather check → Suitability assessment
weather-aware-travel
Integration pattern for combining weather with journey planning.
- Arguments: destination, travel_dates, trip_type
- Workflow: Destination weather → Packing advice → Activity suggestions
Technology Stack
- Python 3.11+
- FastMCP - MCP server framework
- httpx - Async HTTP client
- Pydantic - Data validation
- structlog - Structured logging
- uv - Fast Python package manager
Prerequisites
- Python 3.11 or higher
- uv package manager
Installation
Install uv (if not already installed)
Windows (PowerShell):
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Install Dependencies
uv sync
This will install all required dependencies including FastMCP, httpx, pydantic, and testing tools.
Running Locally
Stdio Mode (for Claude Desktop)
uv run python -m open_meteo_mcp.server
Testing with MCP Inspector
npx @modelcontextprotocol/inspector uv run python -m open_meteo_mcp.server
MCP Integration
Claude Desktop Configuration
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"open-meteo": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\YourUsername\\path\\to\\open-meteo-mcp",
"run",
"python",
"-m",
"open_meteo_mcp.server"
]
}
}
}
Note: Update the --directory path to match your local installation.
Development
Running Tests
# Run all tests
uv run pytest tests/ -v
# Run with coverage
uv run pytest tests/ --cov=open_meteo_mcp --cov-report=html
# Run specific test file
uv run pytest tests/test_models.py -v
Project Structure
open-meteo-mcp/
├── src/
│ └── open_meteo_mcp/
│ ├── __init__.py
│ ├── server.py # FastMCP server with tools, resources, prompts
│ ├── client.py # Open-Meteo API client
│ ├── models.py # Pydantic models
│ ├── helpers.py # Utility functions
│ └── data/ # JSON resource files
│ ├── weather-codes.json
...existing code...
│ └── weather-parameters.json
├── tests/
│ ├── test_models.py
│ ├── test_client.py
│ └── test_helpers.py
├── pyproject.toml # Project configuration
└── .fastmcp/
└── config.yaml # FastMCP Cloud deployment config
Deployment
FastMCP Cloud
Deploy to FastMCP Cloud for remote access:
# Login to FastMCP Cloud
fastmcp login
# Deploy the server
fastmcp deploy
# Check deployment status
fastmcp status open-meteo-mcp
The server will be available at https://open-meteo-mcp.fastmcp.cloud
Example Usage
Once connected via MCP, you can ask:
Geocoding (NEW):
- "Find coordinates for Zurich"
- "Where is the Matterhorn?"
- "Search for Interlaken"
Weather Queries:
- "What's the weather in Bern, Switzerland?"
- "Show me the 7-day forecast for Zurich"
- "What's the UV index tomorrow?"
- "Chance of rain this weekend?"
Air Quality (NEW):
- "What's the air quality in Zurich?"
- "Pollen forecast for Bern?"
- "Is it safe to exercise outdoors today?"
Snow Conditions:
- "What are the snow conditions in Zermatt?"
- "Will it snow in the Alps this week?"
- "Wind conditions at Verbier?"
Ski Trip Planning (uses prompts + resources):
- "Plan a ski trip to Verbier this weekend"
- "Compare snow conditions across St. Moritz, Davos, and Zermatt"
Outdoor Activities (uses prompts):
- "I want to hike the Eiger Trail next week, what's the weather?"
- "Best days for cycling around Lake Geneva this week?"
- "Can I go hiking tomorrow? I have allergies" (checks weather + pollen)
Weather Codes
The API returns WMO weather codes. See docs/WEATHER_CODES.md for the complete reference.
Migration from Java
This is version 2.0 of the Open Meteo MCP server, migrated from Java/Spring Boot to Python/FastMCP for:
- Faster development and iteration
- Easier deployment with FastMCP Cloud
- Better integration with the MCP ecosystem
- Simpler codebase and dependencies
The Java version (v1.x) is archived in the java-v1 branch.
License
MIT License
Credits
Weather data provided by Open-Meteo - Free Open-Source Weather API.
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.