weather-prediction-mcp-agent
This MCP server provides current weather, 1-16 day forecasts, travel recommendations, and city comparisons using Open-Meteo. It requires no API key and includes a transparent agent-friendly interface.
README
Weather Prediction MCP Server + Agent
Homework submission for 2026-08-08: a FastMCP weather server, a grounded Databricks Agent Bricks configuration, and an optional weather dashboard. The project follows the architectural pattern of Day 3's paper-trading project but uses original weather-domain code and Open-Meteo instead of copying the trading implementation.
Open-Meteo was selected because its public non-commercial API needs no signup, API key, paid tier, or Databricks secret. Place and postal-code lookup uses Open-Meteo's GeoNames-backed geocoding endpoint.
Architecture
Natural-language question
|
v
Databricks Agent Bricks
(agent/system_prompt.md)
|
| streamable HTTP tool call
v
MCP Databricks App Optional dashboard Databricks App
mcp_server/weather_mcp_server.py dashboard/app.py
| |
+---------- weather adapter -----------+
|
| HTTPS + normalized dicts
v
Open-Meteo Forecast + Geocoding APIs
mcp_server/ and dashboard/ are independently deployable Databricks Apps.
Each contains its own adapter copy because an App is deployed from one source
subfolder. A contract test prevents those copies from drifting.
MCP tools
| Tool | Purpose |
|---|---|
get_current_weather(location) |
Temperature, apparent temperature, conditions, humidity, precipitation, and wind for a place/postal code or lat,lon. |
get_forecast(location, days=7) |
1–16 daily forecasts with high/low, precipitation chance and total, conditions, wind, sunrise, and sunset. |
get_travel_recommendation(location, date) |
Derived umbrella, jacket, heat, wind, and outdoor-planning guidance for a YYYY-MM-DD date. |
compare_current_weather(locations) |
Stretch tool comparing current weather for 2–5 places and identifying the warmest and windiest. |
The recommendation is deliberately transparent: umbrella at at least 40% precipitation probability or 1 mm precipitation, jacket below an 18°C high or 10°C low, heat precautions at a 30°C high, and wind caution at 40 km/h. It returns both the decision and the values/rules that caused it.
All HTTP, retry, location resolution, response parsing, and decision logic is in
weather_adapter.py. Decorated functions only call the adapter and translate
errors into safe {"status": "error", ...} results. No stack trace, secret, or
raw upstream exception is returned to the agent.
Repository layout
mcp_server/
weather_mcp_server.py FastMCP tools and streamable-HTTP entry point
weather_adapter.py Open-Meteo HTTP adapter and recommendation logic
app.yaml MCP Databricks App command
requirements.txt
dashboard/
app.py Optional Streamlit dashboard
weather_adapter.py Independent App copy of the adapter
app.yaml
requirements.txt
agent/
system_prompt.md Agent Bricks instructions and guardrails
external_mcp.json Endpoint/tool registration checklist
demo_questions.md Three required demonstration scenarios
docs/evidence/ Safe place for redacted deployment screenshots
tests/ Unit and project-contract tests (no live API required)
Local development
Use Python 3.10 or later:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
pytest -q
Run the MCP server:
cd mcp_server
python weather_mcp_server.py
It listens on http://localhost:8000; the streamable-HTTP endpoint is
http://localhost:8000/mcp. Use MCP Inspector or another MCP client to list and
call tools. In another terminal, run the optional dashboard:
cd dashboard
pip install -r requirements.txt
streamlit run app.py
No .env or credential is required. The tests use fake HTTP sessions and are
repeatable without network access.
Deploy the MCP server App
The commands below use the current Databricks Apps flow. You can perform the
same steps in Compute > Apps and point the App at the mcp_server/ source
folder.
databricks auth login --host https://<workspace-hostname>
databricks apps create mcp-weather-prediction
DATABRICKS_USERNAME=$(databricks current-user me | jq -r .userName)
databricks sync mcp_server "/Users/$DATABRICKS_USERNAME/mcp-weather-prediction"
databricks apps deploy mcp-weather-prediction \
--source-code-path "/Workspace/Users/$DATABRICKS_USERNAME/mcp-weather-prediction"
Wait for the App to reach Running, copy its URL, and use
https://<app-url>/mcp as the MCP endpoint. Access is controlled by the
Databricks App's permissions. No weather secret or resource binding is needed.
Official references:
- Host your own MCP server as a Databricks App
- Use MCP servers in agents
- Open-Meteo forecast API
- Open-Meteo geocoding API
Register and build the Agent Bricks agent
Workspace UI labels can vary by preview version. Following the Day 3 workflow:
- Open AI Gateway > MCPs and add/register a custom MCP server.
- Enter
weather-predictionas its name and the deployedhttps://<app-url>/mcpendpoint. If the UI asks for the backing Databricks App instead, selectmcp-weather-prediction. - Confirm that all four tools in
agent/external_mcp.jsonare discovered and grant the agent/user permission to invoke the App or governed MCP service. - Open Agents > Agent Bricks > Create agent, choose the available custom tool-calling agent type, and add the registered MCP server under Tools.
- Paste the full contents of
agent/system_prompt.mdinto the system prompt. The prompt requires weather tool calls, defines tool order, handles ambiguous locations and errors, and forbids guessed weather. - Evaluate with the three prompts in
agent/demo_questions.md, then deploy the agent only after its tool traces and answers are grounded.
Do not replace the evidence placeholders with invented output. Capture actual
Agent Bricks tool calls/final answers after workspace deployment and add redacted
screenshots under docs/evidence/ or paste transcripts into the demo file.
Deploy the optional dashboard App
databricks apps create weather-planner-dashboard
databricks sync dashboard "/Users/$DATABRICKS_USERNAME/weather-planner-dashboard"
databricks apps deploy weather-planner-dashboard \
--source-code-path "/Workspace/Users/$DATABRICKS_USERNAME/weather-planner-dashboard"
The dashboard shows current conditions, a multi-day forecast, one transparent planning recommendation, and the last ten checks in the current browser session. It does not claim to persist or display Agent Bricks traces.
Error handling and limitations
- Ambiguous or missing places return a location error and invite clarification.
- Coordinates are range-checked; forecast days are limited to Open-Meteo's 16-day window; recommendation dates must be present in the returned forecast.
- HTTP requests use timeouts and retry rate limits/transient 5xx responses.
- Forecasts are predictions, not guarantees. This project does not expose severe-weather alerts; users should consult their official local authority for safety decisions.
- A place-name lookup selects Open-Meteo's first geocoding result. Include a region/country or coordinates when a name is ambiguous.
- The optional dashboard history is browser-session state, not durable storage.
Submission checklist
- [x] FastMCP server with streamable HTTP
- [x] Separate HTTP/parsing adapter
- [x] Current conditions tool
- [x] 1–16 day forecast tool
- [x] Derived recommendation with documented thresholds
- [x] Stretch city-comparison tool
- [x] Clean errors and no committed API keys
- [x]
requirements.txtandapp.yamlfor both Apps - [x] Agent tool list and specific system prompt
- [x] Three demonstration prompts prepared
- [ ] MCP App URL added after deployment
- [ ] Agent Bricks tool-call/final-answer evidence added after deployment
- [ ] Optional dashboard URL/screenshot added after deployment
Reference pattern
Architecture and deployment flow were informed by
databricks-lakebase-app-day-3
and the local weather-intelligence / dbbc-helpdesk repositories. This repo is
an original implementation: the trading broker was replaced with a focused
Open-Meteo adapter, the MCP surface is weather-specific, and the tests and
guardrails are written for weather planning.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.