Skip to main content
Glama
MokshadaRaibagkar

MCP Weather Alert Agent

README.md
# ๐ŸŒฆ๏ธ MCP Weather Alert Agent

A lightweight AI agent powered by [MCP (Modular Connector Protocol)](https://github.com/modelcontextprotocol/specification) that fetches **real-time weather alerts** for any U.S. state using the [National Weather Service API](https://www.weather.gov/documentation/services-web-api).


---

## โœจ Features

- ๐Ÿค– **AI Chat Interface** - Interactive conversation with memory
- ๐ŸŒช๏ธ **Real-time Weather Alerts** - Live data from National Weather Service
- โšก **Fast Inference** - Powered by Groq LLM via LangChain
- ๐Ÿ”ง **MCP Integration** - Built with `mcp`, `mcp-use`, and `FastMCP`
- ๐Ÿ› ๏ธ **Tool-based Architecture** - Structured function calling

---

## ๐ŸŽฏ Quick Example

```bash
๐Ÿ’ฌ User: "Provide me weather alerts for California"
๐Ÿค– Agent: Calling get_alerts("CA")...
๐ŸŒฆ๏ธ Result: "FLOOD WARNING for Central Valley until 6 PM PST..."
```

---

## ๐Ÿš€ Getting Started

### Prerequisites
- Python 3.8+
- Groq API key ([Get one here](https://console.groq.com/))

### Installation

1. **Clone the repository**
   ```bash
   git clone https://github.com/MokshadaRaibagkar/mcp-weather-alert-agent.git
   cd mcp-weather-alert-agent
   ```

2. **Create virtual environment**
   ```bash
   python -m venv .venv
   source .venv/bin/activate  # Windows: .venv\Scripts\activate
   ```

3. **Install dependencies**
   ```bash
   pip install -r requirements.txt
   ```

4. **Set up environment variables**
   ```bash
   cp .env
   # Edit .env and add your GROQ_API_KEY
   ```

---

## ๐Ÿ› ๏ธ Usage

### Option 1: Interactive Chat Agent
```bash
uv run server/client.py
```

### Option 2: MCP Dev Server (for testing)
```bash
uv run mcp dev server/weather.py
```
Opens MCP Inspector for tool testing and debugging.

### Option 3: MCP Inspector (Visual Interface)
```bash
uv run mcp dev server/weather.py
```

---

## ๐Ÿ”ง API Reference

### `get_alerts(state: str) -> str`

Fetches active weather alerts for a U.S. state.

**Parameters:**
- `state` (str): Two-letter state code (e.g., "CA", "TX", "NY")

**Returns:**
- Formatted string with current weather alerts or "No active alerts"

**Example:**
```python
result = get_alerts("FL")
# Returns: "HURRICANE WARNING for Miami-Dade County..."
```

---


## ๐Ÿงช Example Interactions

```
Weather Alert Agent initialized! Ask me about weather alerts.

๐Ÿ’ฌ You: What are the current weather alerts for Texas?
๐Ÿ› ๏ธ Calling get_alerts with state: TX
๐ŸŒฆ๏ธ Current alerts for Texas:
- TORNADO WATCH for East Texas until 10 PM CDT
- FLASH FLOOD WARNING for Austin area until midnight

๐Ÿ’ฌ You: Any alerts in California?
๐Ÿ› ๏ธ Calling get_alerts with state: CA
โœ… No active weather alerts for California at this time.
```

---

## ๐ŸŒ Tech Stack

| Component | Technology |
|-----------|------------|
| **MCP Framework** | [MCP Protocol](https://github.com/modelcontextprotocol/specification) |
| **LLM** | [Groq](https://groq.com/) |
| **Agent Framework** | [LangChain](https://langchain.com/) |
| **Weather API** | [National Weather Service](https://www.weather.gov/documentation/services-web-api) |
| **Development** | [FastMCP](https://github.com/jlowin/fastmcp) |

---

## ๐Ÿค Contributing

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

---


## ๐Ÿ‘ฉโ€๐Ÿ’ป Author

**Mokshada Raibagkar**

- [Github](https://github.com/MokshadaRaibagkar)
- [LinkedIn](https://linkedin.com/in/mokshada-raibagkar)

---

<div align="center">

**โญ Star this repo if it helped you!**

Made with โค๏ธ and โ˜•

</div>