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 Weather Server

πŸš€ 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.

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

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/moaaz01/mcp-weather-server'

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