Skip to main content
Glama

Weather MCP Server

README.md4.32 kB
# Weather MCP Project A **Model Context Protocol (MCP) server** that provides real-time weather alerts and forecasts from the US National Weather Service. Built with modern Python practices, comprehensive testing, and production-ready deployment. [![Tests](https://img.shields.io/badge/tests-53%20passing-brightgreen)](tests/) [![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)](htmlcov/) [![Type Checking](https://img.shields.io/badge/mypy-passing-brightgreen)](mypy.ini) [![Code Quality](https://img.shields.io/badge/ruff-passing-brightgreen)](.ruff.toml) [![Python](https://img.shields.io/badge/python-3.13%2B-blue)](pyproject.toml) ## Features - **Weather Alerts** - Real-time alerts from the National Weather Service - **Weather Forecasts** - Detailed forecasts for any US location - **Web Interface** - Beautiful Streamlit UI for easy interaction - **MCP Protocol** - Standards-compliant Model Context Protocol server - **Async/Await** - High-performance asynchronous architecture - **100% Test Coverage** - Comprehensive test suite with 53 tests - **Type Safe** - Full MyPy type checking compliance - **Production Ready** - Deployed and operational ## Quick Start ### Prerequisites - Python 3.13 ### 1. Clone and Install ```bash git clone <your-repo-url> cd weather-mcp-project pip install -r requirements.txt ``` ### 2. Run the Web Interface ```bash streamlit run ui.py ``` Open your browser to `http://localhost:8501` and start exploring weather data! ### 3. Run the MCP Server ```bash python -m weather_mcp.server ``` The MCP server will start on `http://localhost:8000` with SSE transport. ## Installation ### Using pip ```bash pip install -r requirements.txt ``` ## API Reference ### Weather Alerts Get active weather alerts for any US state: ```python await get_alerts(state: str) -> str ``` **Parameters:** - `state` (str): Two-letter US state code (e.g., "CA", "TX", "NY") **Returns:** - Formatted string with active alerts or "No active alerts" message **Example:** ```python alerts = await get_alerts("CA") print(alerts) # Output: Winter Storm Warning for Los Angeles County... ``` ### Weather Forecasts Get detailed weather forecast for coordinates: ```python await get_forecast(latitude: float, longitude: float) -> str ``` **Parameters:** - `latitude` (float): Latitude coordinate - `longitude` (float): Longitude coordinate **Returns:** - Formatted forecast string with 5-day outlook **Example:** ```python forecast = await get_forecast(34.0522, -118.2437) # Los Angeles print(forecast) # Output: Today: Temperature: 75°F, Wind: 10 mph SW... ``` ### MCP Tools The server exposes two MCP tools: 1. **`get_alerts`** - Fetch weather alerts by state 2. **`get_forecast`** - Fetch weather forecast by coordinates ## Development ### Project Structure ``` weather-mcp-project/ ├── weather_mcp/ # Core MCP server │ ├── __init__.py │ ├── server.py # FastMCP server │ ├── nws_api.py # National Weather Service API client │ └── tools.py # Weather processing tools ├── client/ # MCP client │ ├── __init__.py │ └── client.py # Client implementation ├── tests/ # Comprehensive test suite │ ├── conftest.py # Test configuration │ ├── test_*.py # Test modules │ └── run_tests.py # Test runner ├── ui.py # Streamlit web interface ├── requirements.txt # Dependencies ├── pyproject.toml # Project configuration └── README.md # This file ``` ### Code Quality This project maintains high code quality standards: - **100% Test Coverage** - Every line of code is tested - **Type Checking** - Full MyPy compliance - **Linting** - Ruff for code formatting and style - **Standards** - Follows Python best practices ## Testing ### Run with Coverage ```bash python -m pytest --cov=weather_mcp --cov=client --cov-report=html --cov-report=term tests/ ``` ### Test Coverage Report After running tests with coverage, open `htmlcov/index.html` in your browser for a detailed coverage report. ### Quality Checks ```bash # Type checking mypy . # Linting and formatting ruff check ruff format ```

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/laksh-krishna-sharma/Live-Weather-Alerts-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server