About Weather App
Weather App is a command-line application and MCP server for weather data worldwide, intended for people who need current conditions, forecasts, or alerts. It can also serve as a template for building Python MCP servers.
Key features
- 01Retrieve current conditions
- 02Get daily and hourly forecasts
- 03Retrieve weather alerts
- 04Query weather by coordinates
- 05Detect user location automatically
Use cases
- 01Check conditions and forecasts for a location
- 02Look up weather by coordinates
- 03Check for location-specific weather alerts
MCP support
The MCP server exposes tools for weather queries, forecasts, alerts, location detection, and API status checks.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEWeather App
A command-line and MCP-based weather application that provides current weather conditions, forecasts, and alerts for locations worldwide.
Features
- Get current weather conditions for any location
- Get daily weather forecasts
- Get hourly weather forecasts
- Get weather alerts
- Get weather by coordinates
- Automatic location detection
- Test API connection
- Check API key and subscription status
Installation
Prerequisites
- Python 3.12 or higher
- uv package manager
Setup
-
Clone this repository:
git clone <repository-url> cd weather-app -
Create a
.envfile in the root directory with your OpenWeatherMap API key:OPENWEATHER_API_KEY=your_api_key_hereYou can get an API key from OpenWeatherMap.
-
Run the installation script:
./scripts/install.shFor development setup, use:
./scripts/install.sh --dev
Usage
Run the weather app:
./scripts/run_weather.sh
This will start the MCP server with the following available tools:
get_current_weather: Get current weather conditionsget_forecast: Get daily weather forecastget_hourly_forecast: Get hourly weather forecastget_alerts: Get weather alertsget_weather_by_coordinates: Get weather by coordinatesget_user_location: Get your current locationtest_api_connection: Test the API connectioncheck_api_key_and_subscription: Check your API key and subscription
Development
Code Style and Linting
This project uses:
All of these tools are configured in the pyproject.toml file.
Pre-commit Hooks
We use pre-commit hooks to ensure code quality. After installing the development dependencies, the hooks are automatically set up.
To manually install the pre-commit hooks:
uv run pre-commit install
To run the pre-commit hooks manually:
uv run pre-commit run --all-files
Testing
Run the tests:
./scripts/run_tests.sh
Run with coverage:
./scripts/run_tests.sh --coverage
Run integration tests (requires API key):
./scripts/run_tests.sh --integration
Run integration tests with coverage:
./scripts/run_tests.sh --integration --coverage
Creating an MCP Server
To create your own MCP server using this project as a template:
-
Install the project with development dependencies:
./scripts/install.sh --dev -
Create a new Python file with your MCP server implementation:
import os from dotenv import load_dotenv from mcp.server.fastmcp import FastMCP # Load environment variables load_dotenv() # Initialize FastMCP server mcp = FastMCP("your-app-name") # Define your tools @mcp.tool async def your_tool(param1: str, param2: int) -> str: """Tool description.""" # Your implementation here return "Result" # Run the server if __name__ == "__main__": mcp.run() -
Run your server:
python your_server.py
License
This project is licensed under the MIT License - see the LICENSE file for details.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.