Skip to main content
Glama

๐ŸŒฆ๏ธ 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

Related MCP server: Weather MCP Server

๐Ÿง  How It Works

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

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

git clone https://github.com/rudraniai/Weather-MCP-RAG-Assistant.git
cd Weather-MCP-RAG-Assistant

2. Create a virtual environment

python -m venv .venv

Activate it on Windows:

.venv\Scripts\activate

3. Install dependencies

pip install -r requirements.txt

4. Configure environment variables

Copy the example environment file:

copy env.example .env

Add your credentials to .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

python server.py

๐Ÿ”Œ MCP Configuration

Configure the local MCP server in VS Code using:

{
  "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.

Weather MCP Demo

๐Ÿ’ฌ Example Usage

Ask Copilot:

Use the weather-mcp MCP tool to get the weather in Pune.

Other examples:

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:

.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.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to fetch real-time weather data for any location using the OpenWeatherMap API. Demonstrates how to build a simple MCP server that exposes weather information as a tool for LLMs.
    1
    GPL 3.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time weather updates and city geocoding by integrating the Nominatim and Open-Meteo APIs. It enables users to retrieve current weather conditions for any location through natural language queries in MCP-compatible clients.
    8 npm
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides weather data from OpenWeatherMap API through MCP tools and a REST API with OpenAPI support. Enables LLM agents to retrieve current weather, forecasts, and temperature ranges by city or coordinates.
    5 npm
    MIT