Skip to main content
Glama
moaaz01

MCP Weather Server

by moaaz01

🌀️ MCP Weather Server

A production-ready Model Context Protocol weather server built with the official Anthropic FastMCP Python SDK. Provides weather forecasts, alerts, and current conditions through a standardized AI-agent interface.

License: MIT Python 3.10+ MCP SDK


✨ Features

  • πŸ”§ 2 Tools: get_alerts (weather alerts by state) and get_forecast (5-day forecast by coordinates)

  • πŸ“„ 1 Resource: weather://{state}/current β€” formatted current conditions

  • πŸ’¬ 1 Prompt: weather_assistant(state) β€” guided weather analysis template

  • πŸ”Œ Dual Transport: stdio (local clients) and Streamable HTTP (remote clients)

  • πŸͺ΅ Structured Logging: All server logs go to stderr (compatible with stdio transport)

  • πŸ“¦ No API Keys Required: Uses realistic simulated weather data

  • πŸ§ͺ Test Client Included: Ready-to-run example client


Related MCP server: MCP Server Basic Example

πŸš€ Quick Start

Option 1: pip

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python weather_server.py
uv venv
source .venv/bin/activate
uv add "mcp[cli]>=1.27,<2" httpx
python weather_server.py

Option 3: Setup script

chmod +x setup.sh
./setup.sh
python weather_server.py

πŸ“‹ Usage

stdio Transport (default)

python weather_server.py

The server listens on stdin/stdout, ready to connect to Claude Desktop, Cursor, or any MCP client.

Streamable HTTP Transport

python weather_server.py --transport streamable-http --port 8000

Now available at http://localhost:8000/mcp for HTTP-based clients.

Run the Test Client

# In one terminal:
python weather_server.py

# In another terminal:
source .venv/bin/activate
python client_example.py

πŸ› οΈ Tools Reference

get_alerts(state: str) -> list[dict]

Get active weather alerts for a US state.

Parameter

Type

Description

Example

state

str

2-letter US state code

"CA", "TX", "FL"

Returns: List of alerts with type, severity, and area.

get_forecast(latitude: float, longitude: float) -> list[dict]

Get a 5-day weather forecast for coordinates.

Parameter

Type

Description

latitude

float

Decimal degrees (-90 to 90)

longitude

float

Decimal degrees (-180 to 180)

Returns: 5-day forecast with date, temperature_f, condition, humidity_pct, wind_mph.


πŸ“„ Resources Reference

weather://{state}/current

Returns formatted current weather conditions for a state as markdown.


πŸ’¬ Prompts Reference

weather_assistant(state: str)

Creates a weather analysis assistant prompt template.

Parameter

Type

Description

state

str

2-letter US state code


πŸ”Œ Connecting to Clients

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "weather": {
      "command": "python",
      "args": ["/ABSOLUTE/PATH/TO/mcp-weather-server/weather_server.py"]
    }
  }
}

Cursor

In Cursor Settings β†’ Features β†’ MCP Servers, add:

  • Name: weather

  • Type: command

  • Command: python /ABSOLUTE/PATH/TO/mcp-weather-server/weather_server.py

HTTP Client (Streamable HTTP)

curl -X POST http://localhost:8000/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":"1","method":"tools/list","params":{}}'

πŸ“ Project Structure

mcp-weather-server/
β”œβ”€β”€ weather_server.py      # Main server implementation
β”œβ”€β”€ client_example.py      # Example MCP client
β”œβ”€β”€ requirements.txt       # Python dependencies
β”œβ”€β”€ setup.sh              # Automated setup script
β”œβ”€β”€ README.md             # This file
└── .gitignore

🧠 Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     stdio/HTTP      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  MCP Client  β”‚ ◄──────────────►  β”‚  Weather Server   β”‚
β”‚ (Claude, etc)β”‚                    β”‚  (FastMCP)        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                           β”‚
                                    β”Œβ”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”
                                    β”‚  Simulated   β”‚
                                    β”‚  Weather Dataβ”‚
                                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“œ License

MIT β€” see LICENSE for details.

πŸ™Œ Contributing

PRs welcome! Please ensure tools have proper type hints and docstrings.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides tools to fetch weather alerts for US states and forecasts based on latitude/longitude coordinates using the US National Weather Service API.
    2
    55 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A basic Model Context Protocol server implementation that demonstrates core MCP functionality including tools and resources. Provides weather alerts through the Weather API and serves as a learning example for MCP development.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides weather forecasts and active alerts for US locations using the National Weather Service API. It supports both local stdio and remote HTTP/SSE transport modes for flexible integration with MCP clients.
    55 npm
    GPL 3.0