Skip to main content
Glama
karannsharma01

Weather MCP Server

README.md
# Weather MCP Server

A Model Context Protocol (MCP) server that provides weather information for the United States using the National Weather Service (NWS) API. Built with [FastMCP](https://github.com/jlowin/fastmcp).

## Features

This server exposes tools that allow AI assistants to fetch real-time weather data:

- **`get_alerts(state: str)`**: Get active weather alerts for a given US state (using the 2-letter state code like CA, NY, TX). Returns details on the event, severity, description, and safety instructions.
- **`get_forecast(latitude: float, longitude: float)`**: Get the detailed weather forecast for a specific location (using latitude and longitude). Returns the forecast for the next 5 periods (e.g., this afternoon, tonight, tomorrow).

## Prerequisites

- Python 3.10 or higher
- `uv` package manager

## Installation & Setup

This project uses `uv` for dependency management. To set it up:

1. Clone the repository
2. Install dependencies (this will create a virtual environment if you run it using uv):
   ```bash
   uv sync
   ```

## Usage

You can run the MCP server manually via standard input/output, which is how MCP clients will interact with it:

```bash
uv run weather.py
```

### Integrating with Claude Desktop

To use this server with Claude Desktop, you would add it to your `claude_desktop_config.json`:

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

### Integrating with a custom MCP Client

If you have a custom Python MCP Client, you can connect to it like this:

```python
from mcp import StdioServerParameters

server_params = StdioServerParameters(
    command="uv",
    args=["--directory", "path/to/mcp-server", "run", "weather.py"],
    env=None
)
# Pass server_params to your MCP client
```

## APIs Used
- [National Weather Service API](https://api.weather.gov) (No API key required)

TDQS

B3.4/5.0

Scored across 2 tools

Disambiguation5/5

get_alerts and get_forecast have clearly distinct purposes: one for weather alerts by state, the other for forecast by coordinates. No overlap exists.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern (get_alerts, get_forecast), making them predictable.

Tool Count3/5

With only 2 tools, the server feels thin for a weather domain, bordering on insufficient scope.

Completeness2/5

Common weather operations like current conditions, hourly forecast, or radar are missing, leaving significant gaps for typical use cases.

Maintenance

ActivityInactive
ResponsivenessNo issues