OpenWeatherMap MCP Server
A Model Context Protocol (MCP) server that provides weather data using the OpenWeatherMap API. This example demonstrates how to build an MCP server with multiple tools for current weather, forecasts, and air pollution data.
Features
Current Weather: Get real-time weather conditions for any city
5-Day Forecast: Retrieve weather forecasts with 3-hour intervals
Air Pollution: Access air quality data including pollutant concentrations
Prerequisites
Python 3.12+
OpenWeatherMap API key (free at openweathermap.org)
Installation
Clone this repository:
Create a virtual environment:
Install dependencies:
Set your OpenWeatherMap API key:
Usage
Running the Server
Testing with the Client
Using with Amazon Q
Create
.amazonq/mcp.jsonin your project:
Restart Amazon Q and ask: "What's the weather like in Tokyo?"
Available Tools
get_current_weather(city: str)
Returns current weather conditions including temperature, humidity, pressure, and weather description.
get_weather_forecast(city: str)
Returns a 5-day weather forecast with data points every 3 hours.
get_air_pollution(city: str)
Returns air quality data including AQI and pollutant concentrations (CO, NO, NO2, O3, SO2, PM2.5, PM10, NH3).
API Response Format
All tools return the complete OpenWeatherMap API response, allowing LLMs to extract relevant information based on context. Error responses include an error field with descriptive messages.
Development
Project Structure
Adding New Tools
Define a function with type hints
Add the
@mcp.tooldecoratorInclude a descriptive docstring
Handle errors gracefully
Example:
Security Notes
Never commit API keys to version control
Use environment variables for sensitive data
Consider rate limiting for production use
Validate input parameters
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
License
MIT License - see LICENSE file for details