Weather MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Weather MCP ServerWhat's the weather in London?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Weather MCP Server
A Model Context Protocol (MCP) server built with fastmcp that exposes exactly 5 weather tools from one API provider (Open-Meteo) — each tool calls a different endpoint on that provider.
Includes a Groq-powered LLM agent and a browser inbox UI. You ask a weather question in plain English; the LLM picks the right Open-Meteo endpoint tool, calls it, and returns an HTML answer. The UI shows which MCP tool was actually called for each query.
Architecture Diagram
flowchart LR
classDef browser fill:#e0f2fe,stroke:#0284c7,color:#0f172a,stroke-width:1.5px;
classDef agent fill:#ede9fe,stroke:#7c3aed,color:#0f172a,stroke-width:1.5px;
classDef mcp fill:#dcfce7,stroke:#16a34a,color:#0f172a,stroke-width:1.5px;
classDef api fill:#fef3c7,stroke:#d97706,color:#0f172a,stroke-width:1.5px;
classDef store fill:#f8fafc,stroke:#64748b,color:#0f172a,stroke-width:1px;
subgraph Browser["Browser UI - index.html :8080"]
Q["User asks weather question"]:::browser
H["GET /health"]:::browser
C["POST /chat { question }"]:::browser
R["Render tool_used + HTML answer"]:::browser
end
subgraph Agent["Groq Agent - agent.py :8001"]
A1["FastAPI routes"]:::agent
A2["MCP SSE client"]:::agent
A3["Groq call #1<br/>pick best tool + extract city"]:::agent
A4["Groq call #2<br/>format final HTML answer"]:::agent
end
subgraph MCP["Weather MCP Server - server.py :8000"]
M0["SSE endpoint /sse"]:::mcp
M1["open_meteo_geocode"]:::mcp
M2["open_meteo_current"]:::mcp
M3["open_meteo_forecast"]:::mcp
M4["open_meteo_air_quality"]:::mcp
M5["open_meteo_historical"]:::mcp
end
subgraph OpenMeteo["Open-Meteo provider"]
E1["/v1/search"]:::api
E2["/v1/forecast<br/>current weather"]:::api
E3["/v1/forecast<br/>5-day forecast"]:::api
E4["/v1/air-quality"]:::api
E5["/v1/archive"]:::api
end
K[".env<br/>GROQ_API_KEY<br/>MCP_SSE_URL"]:::store
Q --> C
H --> A1
C --> A1
A1 --> A2
A1 --> A3
A3 -->|"tool choice + city"| A2
A2 -->|"list_tools() + call_tool()"| M0
M0 --> M1
M0 --> M2
M0 --> M3
M0 --> M4
M0 --> M5
M1 --> E1
M2 --> E2
M3 --> E3
M4 --> E4
M5 --> E5
M0 -->|"HTML tool result"| A4
A4 -->|"tool_used + html"| R
K --> A1Related MCP server: Weather MCP
Query Flow
sequenceDiagram
autonumber
participant U as Browser UI
participant AG as agent.py
participant G as Groq
participant M as server.py
participant O as Open-Meteo
U->>AG: GET /health
AG->>M: list_tools() over SSE
M-->>AG: 5 available open_meteo_* tools
AG-->>U: agent ok, MCP status, Groq configured
U->>AG: POST /chat {question}
AG->>M: list_tools() over SSE
M-->>AG: tool schemas
AG->>G: Question + tool schemas
G-->>AG: Selected tool + city args
AG->>M: call_tool(tool_name, {city})
M->>O: HTTP GET to chosen endpoint
O-->>M: live JSON weather data
M-->>AG: HTML tool result
AG->>G: User question + tool name + tool HTML
G-->>AG: final HTML answer
AG-->>U: { tool_used, html }
U->>U: Show tool bar and answer cardThe 5 Tools — One Provider, Five Endpoints
# | MCP Tool | Open-Meteo Endpoint | What it returns |
1 |
|
| Coordinates, timezone, region |
2 |
|
| Current temp, humidity, wind, conditions |
3 |
|
| 5-day daily high/low, rain |
4 |
|
| AQI, PM2.5, PM10, ozone |
5 |
|
| Yesterday's min/max temp, conditions |
All 5 tools use Open-Meteo only — free, no weather API key required.
API Keys
Key | Required for | Sign up |
| LLM inbox UI ( | https://console.groq.com/keys (free tier) |
Weather tools need no API key. Only Groq is required for the inbox UI.
copy .env.example .env
# Edit .env — add GROQ_API_KEYQuick Start
1. Install dependencies
git clone https://github.com/RimeetMavani/weather-mcp--build.git
cd weather-mcp--build
pip install -r requirements.txt2. Configure Groq API key
copy .env.example .env
# Edit .env — add GROQ_API_KEY (required for LLM inbox)3. Start the MCP server (SSE on port 8000)
python server.pyYou should see:
Starting MCP server 'Weather MCP Server' with transport 'sse' on http://127.0.0.1:8000/sseKeep this terminal open.
4. Start the LLM agent (port 8001)
Open a second terminal:
python agent.py5. Serve the HTML inbox UI (port 8080)
Open a third terminal:
python -m http.server 80806. Open the browser UI
Go to: http://localhost:8080/index.html
Wait for status dots to turn green (agent, MCP, LLM)
Type a weather question or click a suggested question
After each query, the MCP tool called bar shows the exact tool the LLM picked (e.g.
open_meteo_forecast) and its endpointView the HTML-formatted answer below
Inbox UI — Dynamic Tool Display
The UI does not show a fixed tool name before you ask. After each query:
UI element | What it shows |
Tool called bar | Exact MCP tool name + Open-Meteo endpoint used for this query |
HTML answer card | Groq-formatted weather answer (badge shows the specific tool name) |
Suggested questions | Plain questions only — no pre-assigned tool labels |
Example after asking "Give me the 5-day forecast for Tokyo":
MCP tool called: open_meteo_forecast → api.open-meteo.com/v1/forecast5 Suggested Inbox Questions
Question | Tool the LLM typically picks |
What's the weather in London right now? |
|
Give me the 5-day forecast for Tokyo |
|
What's the air quality in Paris? |
|
What were the coordinates and timezone for New York? |
|
How was the weather in Sydney yesterday? |
|
The actual tool chosen is shown in the UI after each query — the LLM may pick a different tool if it fits the question better.
CLI Test (all 5 tools)
With server.py running in another terminal:
python test_client.pyConnects via SSE, lists all 5 tools, calls each with a live city, and prints a pass/fail summary. No Groq agent needed for this test.
Project Files
File | Purpose |
| MCP server — 5 Open-Meteo endpoint tools, SSE transport |
| Groq LLM agent — picks MCP tool, returns |
| Inbox UI — status panel, dynamic tool bar, HTML answers |
| Terminal script to test all 5 MCP tools directly |
| Python dependencies |
| Template for Groq API key |
Ports Summary
Port | Service | Command |
8000 | MCP server (SSE) |
|
8001 | Groq LLM agent |
|
8080 | Browser UI |
|
End Testing
Close the browser tab
Stop the HTML server:
Ctrl+CStop the agent:
Ctrl+CStop the MCP server:
Ctrl+C
This server cannot be installed
Maintenance
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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/RimeetMavani/weather-mcp--build'
If you have feedback or need assistance with the MCP directory API, please join our Discord server