mcpField
W
Weather App

Weather App

Local
github.com/mindsightventuresMedia & Design2Updated 86w ago

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

  1. 01Retrieve current conditions
  2. 02Get daily and hourly forecasts
  3. 03Retrieve weather alerts
  4. 04Query weather by coordinates
  5. 05Detect user location automatically

Use cases

  1. 01Check conditions and forecasts for a location
  2. 02Look up weather by coordinates
  3. 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.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

Weather App

CI codecov

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
  1. Clone this repository:

    git clone <repository-url>
    cd weather-app
    
  2. 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.

  3. 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 conditions
  • get_forecast: Get daily weather forecast
  • get_hourly_forecast: Get hourly weather forecast
  • get_alerts: Get weather alerts
  • get_weather_by_coordinates: Get weather by coordinates
  • get_user_location: Get your current location
  • test_api_connection: Test the API connection
  • check_api_key_and_subscription: Check your API key and subscription

Development

Code Style and Linting

This project uses:

  • Black for code formatting
  • isort for import sorting
  • Ruff for linting
  • mypy for type checking

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:

  1. Install the project with development dependencies:

    ./scripts/install.sh --dev
    
  2. 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()
    
  3. Run your server:

    python your_server.py
    

License

This project is licensed under the MIT License - see the LICENSE file for details.

Comments

Markdown supported

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.