Skip to main content
Glama
Guilherme-Garcia

Weather MCP Server

Weather Forecast MCP Server & Agent

A complete implementation of a weather forecast MCP (Model Context Protocol) server with a Databricks Agent Bricks agent integration.

Overview

This project demonstrates how to build and deploy:

  1. Weather MCP Server - FastMCP server exposing weather forecast tools

  2. Agent Bricks Integration - An intelligent agent that uses the MCP server to answer weather questions

The weather data comes from Open-Meteo, a free weather API requiring no signup or API key.

Related MCP server: Weather Prediction MCP Server

Architecture

┌─────────────────┐      ┌──────────────────┐      ┌─────────────────┐
│  User Question  │─────▶│  Agent Bricks    │─────▶│  Weather MCP    │
│   "Will it      │      │     Agent        │      │     Server      │
│  rain in SF?"   │      │                  │      │                 │
└─────────────────┘      └──────────────────┘      └─────────────────┘
                                  │                          │
                                  │                          ▼
                                  │                  ┌─────────────────┐
                                  │                  │  weather_broker │
                                  │                  │                 │
                                  ▼                  └─────────────────┘
                         ┌─────────────────┐                │
                         │  Natural Lan-   │                ▼
                         │  guage Response │        ┌─────────────────┐
                         └─────────────────┘        │   Open-Meteo    │
                                                    │      API        │
                                                    └─────────────────┘

Files

Weather MCP Server

  • weather_broker.py - Weather API adapter (HTTP calls to Open-Meteo)

  • weather_mcp_server.py - FastMCP server with 3 tools

  • app.yaml - Databricks App deployment config

  • requirements.txt - Python dependencies

Agent Configuration

  • weather_agent.py - Agent Bricks agent configuration

MCP Tools

The server exposes 3 tools:

1. get_current_weather(location: str)

Get current weather conditions for any location.

Example:

get_current_weather("Chicago")
# Returns: temperature, feels_like, humidity, wind, conditions, etc.

2. get_forecast(location: str, days: int = 7)

Get multi-day weather forecast (1-16 days).

Example:

get_forecast("Austin", days=5)
# Returns: daily forecasts with high/low temps, precipitation, conditions

3. predict_umbrella_needed(location: str, date: Optional[str] = None)

Make a recommendation about needing an umbrella.

Example:

predict_umbrella_needed("Seattle", "2026-08-15")
# Returns: YES/NO/MAYBE recommendation with reasoning

Deployment

Step 1: Deploy the MCP Server

# From the workspace CLI or notebook
databricks apps create weather_mcp \
  --source-path /Workspace/Users/your-email@example.com/weather_mcp

Step 2: Get the App URL

databricks apps get weather_mcp
# Note the URL, e.g., https://dbc-xxxxx.cloud.databricks.com/apps/weather_mcp

Step 3: Configure the Agent

Edit weather_agent.py and set WEATHER_MCP_URL to your deployed app URL:

MCP_SERVER_URL = "https://dbc-xxxxx.cloud.databricks.com/apps/weather_mcp"

Step 4: Deploy the Agent

The agent can be deployed as another Databricks App or used directly in notebooks.

Testing

Test the MCP Server Locally

# In a notebook
import weather_broker

# Test current weather
weather_broker.get_current_weather("San Francisco")

# Test forecast
weather_broker.get_forecast("New York", days=3)

Test the Agent

from weather_agent import create_weather_agent

agent = create_weather_agent()

# Ask weather questions
response = agent.chat("What's the weather like in Chicago right now?")
print(response)

response = agent.chat("Will it rain in Austin this weekend?")
print(response)

response = agent.chat("Should I bring a jacket to Seattle tomorrow?")
print(response)

Example Queries

The agent can handle natural language questions like:

  • "What's the temperature in Los Angeles?"

  • "Will it rain in Seattle tomorrow?"

  • "Should I bring an umbrella to Chicago this weekend?"

  • "Give me a 5-day forecast for New York"

  • "What's the weather like in Austin compared to Dallas?"

  • "Is it going to be hot in Phoenix next week?"

Weather Data Source

This implementation uses Open-Meteo:

  • ✓ Free, no API key required

  • ✓ ~10,000 calls/day for non-commercial use

  • ✓ Current conditions + 16-day forecasts

  • ✓ Global coverage

  • ✓ Temperature, precipitation, wind, humidity, sunrise/sunset

Extending

Add More Tools

To add new weather-related tools:

  1. Add a function to weather_broker.py to fetch the data

  2. Decorate a new tool function in weather_mcp_server.py with @mcp.tool

  3. Update the agent instructions to describe when to use the new tool

Switch to a Different Weather API

To use a different weather API:

  1. Replace the API calls in weather_broker.py

  2. If the API requires authentication, add secret management

  3. Update app.yaml with any needed environment variables

  4. Keep the same function signatures so the MCP tools don't change

License

This is a learning project for educational purposes.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides real-time weather forecasts, current conditions, and smart umbrella recommendations through MCP tools, backed by the Open-Meteo API.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides current weather, multi-day forecasts, and umbrella recommendations through natural language queries, using the Open-Meteo API with no API key required.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides current weather conditions, multi-day forecasts, and umbrella recommendations for any location using the Open-Meteo API. Enables natural language weather queries through MCP tools.
    -