Weather MCP Server
A Model Context Protocol (MCP) server that provides weather information, web search capabilities, and basic math operations using FastMCP.
Features
๐ค๏ธ Weather Tools
- get_alerts: Get weather alerts for any US state
- get_forecast: Get detailed weather forecast for any location (latitude/longitude)
๐ Search Tools
- brave_search: Search the web using Brave Search API
- add_numbers: Add two numbers together
๐ก Prompts
- suggest_events: Get comprehensive weather data and event suggestions for a location
Prerequisites
- Python 3.11 or higher
- uv package manager
- Brave Search API key (free from Brave Search API)
Installation
Clone and navigate to the project:
cd /opt/projects/mcp-hack/weatherInstall dependencies:
uv sync
Configuration
The server uses a hardcoded Brave Search API key. If you want to use your own API key, you can:
- Get a free API key from Brave Search API
- Update the
BRAVE_API_KEYconstant inweather.py
Running the Server
Method 1: Direct Python execution
uv run python weather.py
Method 2: Using the main module
uv run python main.py
Method 3: Using uv with module execution
uv run -m weather
Usage Examples
Once the server is running, you can use the following tools:
Weather Tools
# Get weather alerts for California
get_alerts("CA")
# Get forecast for San Francisco (37.7749, -122.4194)
get_forecast(37.7749, -122.4194)
Search Tool
# Search the web with default 3 results
brave_search("python programming tutorials")
# Search with custom result count
brave_search("weather forecast San Francisco", 5)
Math Tool
# Add two numbers
add_numbers(15.5, 24.3)
Prompts
# Get weather-based event suggestions
suggest_events("San Francisco")
# or with coordinates
suggest_events("37.7749,-122.4194")
API Integration
This server integrates with:
- National Weather Service API: For weather data and alerts
- Brave Search API: For web search functionality
- FastMCP: For MCP server implementation
- LangChain Community: For Brave Search tool integration
Development
Project Structure
weather/
โโโ weather.py # Main MCP server with all tools
โโโ main.py # Alternative entry point
โโโ pyproject.toml # Project dependencies
โโโ uv.lock # Dependency lock file
โโโ README.md # This file
Adding New Tools
To add new tools, follow the FastMCP pattern:
@mcp.tool()
async def your_tool_name(param1: str, param2: int = 10) -> str:
"""Tool description.
Args:
param1: Description of parameter 1
param2: Description of parameter 2 (default: 10)
"""
# Your tool logic here
return "Tool result"
Troubleshooting
Common Issues
"BRAVE_SEARCH_API_KEY environment variable not set"
- The API key is hardcoded in the server, but if you see this error, check that
BRAVE_API_KEYis properly set inweather.py
- The API key is hardcoded in the server, but if you see this error, check that
Weather API errors
- Ensure you're using valid US state codes (2 letters) for alerts
- Verify latitude/longitude coordinates are valid for forecasts
Import errors
- Run
uv syncto ensure all dependencies are installed - Make sure you're using Python 3.11 or higher
- Run
Dependencies
Key dependencies include:
fastmcp: MCP server frameworkhttpx: HTTP client for API requestslangchain-community: Brave Search integrationlangchain-core: Core LangChain functionality
License
This project is part of the MCP hack and is provided as-is for educational and development purposes.