Weather MCP Server
README.md
# 🌦️ Weather MCP Server and Client
Welcome to the **Weather Model Context Protocol (MCP) Project**! This project provides real-time weather intelligence by integrating with external APIs like the National Weather Service (NWS). It is built using the **FastMCP** framework and supports both server and client interactions.
## 🚀 Features
- **Weather Alerts**: Fetch weather alerts for any US state.
- **Weather Forecasts**: Get detailed weather forecasts for specific locations.
- **Asynchronous Operations**: Fully asynchronous for high performance.
- **Modular Design**: Clean separation of server, client, and utility logic.
- **LLM Integration**: Summarize weather data using a language model (DistilGPT-2).
## 📂 Project Structure
- **`server.py`**: The main server file that registers tools for fetching weather alerts and forecasts.
- **`client.py`**: A command-line client to interact with the server.
- **`app.py`**: A Streamlit-based web app for user-friendly interaction.
- **`agent.py`**: An advanced client integrating a language model for summarizing weather data.
## 🛠️ Setup Instructions
1. **Clone the Repository**:
```bash
git clone <repository-url>
cd mcp
```
2. **Install Dependencies**:
Ensure Python 3.8+ is installed, then run:
```bash
pip install -r requirements.txt
```
3. **Run the Server**:
Start the FastMCP server:
```bash
python server.py
```
4. **Interact with the Client**:
Use the command-line client or the Streamlit app to interact with the server.
## 🖥️ Usage
### Command-Line Client
1. **List Available Tools**:
```bash
python client.py list_tools
```
2. **Fetch Alerts**:
```bash
python client.py get_alerts --state CA
```
3. **Fetch Forecasts**:
```bash
python client.py get_forecast --latitude 34.05 --longitude -118.25
```
### Streamlit Web App
1. Run the app:
```bash
streamlit run app.py
```
2. Use the sidebar to select actions like "List Tools," "Get Alerts," or "Get Forecast."
### LLM Integration
1. Summarize weather data using the language model:
```bash
python agent.py interact_with_llm --llm_action get_alerts --state CA
python agent.py interact_with_llm --llm_action get_forecast --latitude 34.05 --longitude -118.25
```
## 🎥 Video Demonstration
Watch a quick demonstration of the Weather MCP Project in action:
[[Weather MCP Demo]](https://youtu.be/J_gK5BL8xhY)
## 🌐 External Dependencies
- **FastMCP**: Framework for building MCP servers and clients.
- **httpx**: For making asynchronous HTTP requests.
- **Streamlit**: For building the web app.
- **Transformers**: For integrating the DistilGPT-2 language model.
## 📋 Notes
- Ensure the server is running before using the client or web app.
- Follow the asynchronous programming model to avoid blocking operations.
## ❤️ Acknowledgments
- **FastMCP** for the server-client framework.
- **National Weather Service (NWS)** for providing weather data.
- **Hugging Face Transformers** for the DistilGPT-2 model.
## 🤝 Contributing
We welcome contributions to the Weather MCP Project! Here's how you can help:
1. **Report Bugs**: If you encounter any issues, please open an issue on the GitHub repository.
2. **Suggest Features**: Have an idea for a new feature? Let us know by creating a feature request.
3. **Submit Pull Requests**: Fork the repository, make your changes, and submit a pull request for review.
4. **Improve Documentation**: Help us enhance the documentation by fixing typos, adding examples, or clarifying instructions.
### Contribution Guidelines
- Follow the project's coding conventions and structure.
- Ensure all new code is covered by tests.
- Use clear and concise commit messages.
- Test your changes thoroughly before submitting.
Enjoy exploring the weather with **Weather MCP**! 🌤️
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues