Weather App
by mindsightventures
A command-line and MCP-based weather application that provides current weather conditions, forecasts, and alerts for locations worldwide. It allows users to access weather information through various tools.
Last updated: N/A
Weather 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
.env
file in the root directory with your OpenWeatherMap API key:OPENWEATHER_API_KEY=your_api_key_here
You can get an API key from OpenWeatherMap.
-
Run the installation script:
./scripts/install.sh
For 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.