weather-mcp
by rudraniai
README.md
# š¦ļø Weather MCP RAG Assistant
An AI-powered weather assistant built using **Model Context Protocol (MCP), Retrieval-Augmented Generation (RAG), LangChain, ChromaDB, Groq LLM, and OpenWeather API**.
The project exposes a custom MCP tool that retrieves real-time weather data and combines it with a RAG pipeline to generate contextual, natural-language weather insights.
## š Key Features
- Custom **MCP server** built using FastMCP
- Real-time weather retrieval using **OpenWeather API**
- **Retrieval-Augmented Generation (RAG)** pipeline for contextual responses
- **ChromaDB** vector store for storing and retrieving weather context
- Sentence Transformer embeddings using `all-MiniLM-L6-v2`
- **Groq-hosted LLM** integration through LangChain
- MCP tool integration with **VS Code / GitHub Copilot**
- Supports dynamic weather queries for different cities
- Secure API-key management using environment variables
## š§ How It Works
```text
User Query
ā
GitHub Copilot / MCP Client
ā
Weather MCP Server
ā
get_weather(location)
ā
OpenWeather API
ā
Weather Data Processing
ā
ChromaDB Vector Store
ā
RAG Retrieval
ā
Groq LLM
ā
Context-Aware Weather Response
```
## š ļø Tech Stack
**Language:** Python
**AI / GenAI:** LLMs, RAG, Prompt Engineering, Sentence Transformers
**Frameworks:** LangChain, FastMCP
**Vector Database:** ChromaDB
**LLM Provider:** Groq
**External API:** OpenWeather API
**Protocol:** Model Context Protocol (MCP)
**Development Environment:** VS Code, Git, GitHub
## š Project Structure
```text
Weather-MCP-RAG-Assistant/
ā
āāā rag/
ā āāā embedding.py
ā āāā llm.py
ā āāā retriever.py
ā āāā vector_store.py
ā
āāā services/
ā āāā weather_service.py
ā
āāā utils/
ā āāā parser.py
ā
āāā config.py
āāā server.py
āāā requirements.txt
āāā env.example
āāā .gitignore
āāā README.md
```
## āļø Setup
### 1. Clone the repository
```bash
git clone https://github.com/rudraniai/Weather-MCP-RAG-Assistant.git
cd Weather-MCP-RAG-Assistant
```
### 2. Create a virtual environment
```bash
python -m venv .venv
```
Activate it on Windows:
```bash
.venv\Scripts\activate
```
### 3. Install dependencies
```bash
pip install -r requirements.txt
```
### 4. Configure environment variables
Copy the example environment file:
```bash
copy env.example .env
```
Add your credentials to `.env`:
```env
OPENWEATHER_API_KEY=your_openweather_api_key
GROQ_API_KEY=your_groq_api_key
GROQ_MODEL=your_groq_model
EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
CHROMA_DB_DIR=./chroma_db
```
> API credentials are kept outside version control using `.gitignore`.
### 5. Run the MCP server
```bash
python server.py
```
## š MCP Configuration
Configure the local MCP server in VS Code using:
```json
{
"servers": {
"weather-mcp": {
"type": "stdio",
"command": "python",
"args": [
"PATH_TO_PROJECT/server.py"
]
}
},
"inputs": []
}
```
Replace `PATH_TO_PROJECT` with the local path to `server.py`.
After configuration:
1. Open the VS Code Command Palette.
2. Select `MCP: List Servers`.
3. Select `weather-mcp`.
4. Start the MCP server.
5. Open GitHub Copilot Chat and allow the MCP tool when requested.
## š„ Project Demo
The following demo shows the custom `weather-mcp` MCP tool being invoked through GitHub Copilot to retrieve and generate contextual weather information.

## š¬ Example Usage
Ask Copilot:
```text
Use the weather-mcp MCP tool to get the weather in Pune.
```
Other examples:
```text
Use the weather-mcp MCP tool to get the weather in Mumbai.
Use the weather-mcp MCP tool to get the weather in Nagpur.
```
Example information returned by the assistant includes:
- Current temperature
- Feels-like temperature
- Humidity
- Wind speed and direction
- Cloud conditions
- Weather summary
- Air-quality information when available
## š Security
Sensitive credentials such as API keys are stored in a local `.env` file.
The following files/directories are excluded from Git:
```text
.env
chroma_db/
__pycache__/
.vscode/
```
Never commit real API keys to the repository.
## š What I Learned
Through this project, I gained hands-on experience with:
- Building and exposing tools through **Model Context Protocol (MCP)**
- Integrating external APIs with LLM-based applications
- Implementing a **RAG pipeline**
- Working with embeddings and vector databases
- Using **ChromaDB** for contextual retrieval
- Connecting LangChain with a hosted LLM
- Integrating a custom MCP server with GitHub Copilot
- Managing environment variables and API credentials securely
## š® Future Improvements
- Add multi-day weather forecasting
- Add weather alerts and recommendations
- Improve retrieval and contextual memory
- Add additional weather and environmental data sources
- Build a standalone web interface using Streamlit or FastAPI
- Containerize the application using Docker
## š©āš» Author
**Rudrani Gulhane**
B.Tech Computer Science Engineering ā Artificial Intelligence & Machine Learning
Interested in **AI/ML, Generative AI, RAG, LLMs, AI Agents, and MCP-based applications**.
## š License
This project is intended for educational, portfolio, and experimental use.This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues