Skip to main content
Glama
Krishna-Dhawangale

Weather MCP Server

README.md
# šŸŒ¦ļø MCP Weather Assistant

A Model Context Protocol (MCP) project that connects a Groq-hosted LLM to a custom **Weather MCP Server**, allowing you to ask natural-language questions about weather and get real-time, tool-grounded answers sourced from the **National Weather Service (NWS) API**.

## How It Works

```
User
  ↓
"Are there any weather alerts for CA?"
  ↓
Groq LLM
  ↓
Decides to call get_alerts_tool
  ↓
MCP Client
  ↓
MCP Weather Server
  ↓
National Weather Service API
  ↓
Real-time weather alerts
  ↓
Groq LLM
  ↓
Natural-language answer
```

1. The user asks a question in plain English.
2. The **Groq LLM** interprets the question and decides which tool to call (e.g. `get_alerts_tool`, `get_forecast_tool`).
3. The **MCP Client** sends that tool call to the **MCP Weather Server** over the Model Context Protocol.
4. The server queries the **National Weather Service API** for live data.
5. Results flow back through the client to the LLM.
6. The LLM turns the raw data into a clear, natural-language response for the user.

## Features

- šŸŒ¦ļø Real-time weather alerts by U.S. state
- šŸ“ Weather forecasts by location (lat/long)
- šŸ”Œ Built on the **Model Context Protocol (MCP)** — tools are exposed in a standardized way any MCP-compatible client can use
- ⚔ Powered by **Groq** for fast LLM inference
- 🧩 Clean separation between the LLM client and the weather tool server

## Project Structure

```
.
ā”œā”€ā”€ client/            # MCP client — connects to Groq LLM and the MCP server
ā”œā”€ā”€ server/             # MCP weather server — exposes get_alerts_tool, get_forecast_tool, etc.
ā”œā”€ā”€ requirements.txt     # or package.json, depending on stack
└── README.md
```
*(Adjust this tree to match your actual folder layout.)*

## Prerequisites

- Python 3.10+ (or Node.js, depending on your implementation)
- A [Groq API key](https://console.groq.com/)
- Internet access (the server calls the public NWS API — no API key required for NWS)

## Installation

```bash
git clone https://github.com/Krishna-Dhawangale/MCP.git
cd MCP
pip install -r requirements.txt
```

## Configuration

Create a `.env` file in the project root:

```env
GROQ_API_KEY=your_groq_api_key_here
```

## Usage

1. Start the MCP weather server:
   ```bash
   python server/weather_server.py
   ```
2. Run the client:
   ```bash
   python client/main.py
   ```
3. Ask a question:
   ```
   > Are there any weather alerts for CA?
   ```
   The client will route the query to the LLM, which calls the appropriate tool on the MCP server and returns a natural-language answer.

## Available Tools

| Tool | Description |
|---|---|
| `get_alerts_tool` | Fetches active weather alerts for a given U.S. state |
| `get_forecast_tool` | Fetches the weather forecast for a given latitude/longitude |

## Roadmap

- [ ] Add support for more locations (international)
- [ ] Add caching for repeated queries
- [ ] Add unit tests for tool handlers
- [ ] Support additional MCP clients beyond Groq

## Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.