Weather MCP Server and Client
A simple example of using fastmcp to create a weather MCP (Model Control Protocol) server and client.
Features
- Weather Server: Provides current weather and forecast data for major cities
- Weather Client: Demonstrates how to interact with the MCP server
- Tools Available:
get_weather(city)- Get current weather for a cityget_forecast(city, days)- Get weather forecast for 1-7 dayslist_cities()- Get list of available cities
- Resources: Access to weather data via URI-based resources
Installation
- Install dependencies:
pip install fastmcp asyncio-extras python-dateutil
- Or install from requirements:
pip install -r requirements.txt
Usage
Running the Server
python weather_server.py
The server will start and provide weather tools for the following cities:
- New York
- London
- Tokyo
- Sydney
Running the Client
python weather_client.py
Choose between:
- Demo mode - Shows example interactions
- Interactive mode - Allows manual testing of commands
Available Cities
The server provides mock weather data for:
- New York
- London
- Tokyo
- Sydney
Example Usage
# Get current weather
weather = await get_weather("New York")
# Get 5-day forecast
forecast = await get_forecast("London", 5)
# List all available cities
cities = await list_cities()
API Reference
Tools
get_weather(city: str)
Get current weather information for a city.
Returns:
- temperature (°C)
- humidity (%)
- condition (sunny, cloudy, rainy, etc.)
- wind_speed (km/h)
- pressure (hPa)
- timestamp
get_forecast(city: str, days: int = 3)
Get weather forecast for a city.
Parameters:
- city: City name
- days: Number of days (1-7)
Returns:
- List of daily forecasts with temperature highs/lows, conditions, etc.
list_cities()
Get list of available cities.
Returns:
- List of city names
Resources
weather://current/{city}- Current weather data for a city
Extending the Example
To connect this to a real weather API:
- Replace the
MOCK_WEATHER_DATAwith API calls - Add API key configuration
- Handle API rate limits and errors
- Add more cities and weather parameters
Notes
- This example uses mock data for demonstration
- In production, you'd connect to a real weather API like OpenWeatherMap
- The client examples show the structure but don't make actual MCP calls
- Refer to fastmcp documentation for complete MCP protocol implementation
