Skip to main content
Glama

🌦️ Weather MCP RAG Assistant

一个基于 Model Context Protocol (MCP)、检索增强生成 (RAG)、LangChain、ChromaDB、Groq LLM 和 OpenWeather API 构建的 AI 天气助手。

该项目提供了一个自定义的 MCP 工具,用于检索实时天气数据,并将其与 RAG 流水线相结合,以生成具有上下文感知的自然语言天气洞察。

🚀 主要功能

  • 使用 FastMCP 构建的自定义 MCP 服务器

  • 使用 OpenWeather API 实时检索天气数据

  • 用于上下文响应的 检索增强生成 (RAG) 流水线

  • 用于存储和检索天气上下文的 ChromaDB 向量存储

  • 使用 all-MiniLM-L6-v2 的 Sentence Transformer 嵌入

  • 通过 LangChain 集成 Groq 托管的 LLM

  • 与 VS Code / GitHub Copilot 的 MCP 工具集成

  • 支持针对不同城市的动态天气查询

  • 使用环境变量进行安全的 API 密钥管理

Related MCP server: Weather MCP Server

🧠 工作原理

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

🛠️ 技术栈

语言: Python

AI / GenAI: LLMs、RAG、提示工程、Sentence Transformers

框架: LangChain、FastMCP

向量数据库: ChromaDB

LLM 提供商: Groq

外部 API: OpenWeather API

协议: Model Context Protocol (MCP)

开发环境: VS Code、Git、GitHub

📂 项目结构

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

⚙️ 设置

1. 克隆仓库

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

2. 创建虚拟环境

python -m venv .venv

在 Windows 上激活:

.venv\Scripts\activate

3. 安装依赖

pip install -r requirements.txt

4. 配置环境变量

复制示例环境文件:

copy env.example .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

使用 .gitignore 将 API 凭据排除在版本控制之外。

5. 运行 MCP 服务器

python server.py

🔌 MCP 配置

在 VS Code 中使用以下配置本地 MCP 服务器:

{
  "servers": {
    "weather-mcp": {
      "type": "stdio",
      "command": "python",
      "args": [
        "PATH_TO_PROJECT/server.py"
      ]
    }
  },
  "inputs": []
}

将 PATH_TO_PROJECT 替换为 server.py 的本地路径。

配置完成后:

  1. 打开 VS Code 命令面板。

  2. 选择 MCP: List Servers。

  3. 选择 weather-mcp。

  4. 启动 MCP 服务器。

  5. 打开 GitHub Copilot Chat,并在请求时允许 MCP 工具。

🎥 项目演示

以下演示展示了通过 GitHub Copilot 调用自定义 weather-mcp MCP 工具来检索和生成上下文天气信息的过程。

Weather MCP Demo

💬 示例用法

向 Copilot 提问:

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

其他示例:

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

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

助手返回的示例信息包括:

  • 当前温度

  • 体感温度

  • 湿度

  • 风速和风向

  • 云量状况

  • 天气摘要

  • 空气质量信息(如有)

🔐 安全性

API 密钥等敏感凭据存储在本地 .env 文件中。

以下文件/目录被排除在 Git 之外:

.env
chroma_db/
__pycache__/
.vscode/

切勿将真实的 API 密钥提交到仓库中。

📌 所学内容

通过这个项目,我获得了以下方面的实践经验:

  • 通过 Model Context Protocol (MCP) 构建和暴露工具

  • 将外部 API 与基于 LLM 的应用程序集成

  • 实现 RAG 流水线

  • 使用嵌入和向量数据库

  • 使用 ChromaDB 进行上下文检索

  • 将 LangChain 与托管的 LLM 连接

  • 将自定义 MCP 服务器与 GitHub Copilot 集成

  • 安全管理环境变量和 API 凭据

🔮 未来改进

  • 添加多日天气预报

  • 添加天气警报和建议

  • 改进检索和上下文记忆

  • 添加更多天气和环境数据源

  • 使用 Streamlit 或 FastAPI 构建独立的 Web 界面

  • 使用 Docker 将应用程序容器化

👩💻 作者

Rudrani Gulhane

计算机科学与工程学士——人工智能与机器学习

对 AI/ML、生成式 AI、RAG、LLMs、AI 智能体以及基于 MCP 的应用程序 感兴趣。

📄 许可证

本项目仅供教育、作品集和实验用途。

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.
    22 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.
    11 npm
    MIT