Skip to main content
Glama
bryankemp

Weather MCP Server

by bryankemp

Weather MCP Server

A Model Context Protocol (MCP) server that provides weather data tools using the National Weather Service (NWS) API.

Overview

This MCP server exposes two main tools for accessing weather information:

  • get_alerts: Fetch active weather alerts for a US state

  • get_forecast: Retrieve detailed weather forecasts for a specific latitude/longitude

The server is built using FastMCP and communicates over stdio transport, making it compatible with MCP clients like Claude Desktop.

Features

  • 🌀️ Real-time weather forecasts from the National Weather Service

  • ⚠️ Active weather alerts by state

  • πŸ”„ Async API calls for efficient data retrieval

  • πŸ›‘οΈ Robust error handling and user-friendly responses

  • πŸ“¦ Easy integration with MCP-compatible clients

Requirements

  • Python 3.11 or higher

  • uv package manager (recommended)

Installation

# Clone the repository
git clone <repository-url>
cd weather

# Install dependencies
uv sync

# Activate virtual environment
source .venv/bin/activate

Using pip

# Clone the repository
git clone <repository-url>
cd weather

# Create virtual environment
python -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -e .

Usage

Running the Server

uv run weather.py

Integration with MCP Clients

To use this server with an MCP client like Claude Desktop, add it to your MCP configuration:

{
  "mcpServers": {
    "weather": {
      "command": "uv",
      "args": ["--directory", "/path/to/weather", "run", "weather.py"]
    }
  }
}

Available Tools

get_alerts

Fetch active weather alerts for a US state.

Parameters:

  • state (string): Two-letter US state code (e.g., "CA", "NY")

Example:

get_alerts(state="CA")

get_forecast

Retrieve weather forecast for a specific location.

Parameters:

  • latitude (float): Latitude coordinate

  • longitude (float): Longitude coordinate

Example:

get_forecast(latitude=37.7749, longitude=-122.4194)

API Integration

This server uses the National Weather Service API (api.weather.gov):

  • /alerts/active/area/{state} - Weather alerts by state

  • /points/{lat},{lon} - Forecast grid endpoints

  • Forecast URLs from points response - Detailed forecasts

All API requests include proper User-Agent and Accept headers as required by the NWS API.

Development

Project Structure

weather/
β”œβ”€β”€ weather.py          # Main MCP server implementation
β”œβ”€β”€ main.py             # Entry point (placeholder)
β”œβ”€β”€ config.json         # Configuration file
β”œβ”€β”€ pyproject.toml      # Project metadata and dependencies
β”œβ”€β”€ uv.lock            # Locked dependencies
└── README.md          # This file

Adding New Tools

  1. Define an async function in weather.py

  2. Decorate it with @mcp.tool()

  3. Use make_nws_request() for NWS API calls

  4. Return formatted strings, not raw JSON

  5. Handle errors gracefully

Testing

Test the server by:

  1. Running it and providing input via stdin

  2. Integrating with an MCP client

  3. Using MCP CLI tools

Error Handling

  • Network errors return user-friendly error messages

  • No raw exceptions are exposed to clients

  • All responses are formatted strings with clear labels

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

BSD-3-Clause License - see LICENSE file for details

Author

Bryan Kemp (bryan@kempville.com)

Acknowledgments

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/bryankemp/weather_mcp'

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