天气新闻智能聊天机器人

一个基于Groq LLM的智能聊天机器人,通过Model Context Protocol (MCP)集成天气和新闻数据API,提供实时天气查询和新闻检索功能。

  • by pranav-582
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 pranav-582/Basic-MCP-Server

使用说明

集成大型语言模型(LLM)的天气与新闻多功能控制面板(MCP)

一个由Groq LLM驱动的智能聊天机器人,通过实现模型上下文协议(MCP)来使用工具访问天气和新闻数据。

建筑学

User → Streamlit UI → LLM Client → Groq LLM
                           ↓
                      MCP Server (JSON-RPC over stdio)
                           ↓
                   Weather & News APIs

组件

  1. app.py - 具有流式响应的Streamlit聊天界面
  2. llm_client.py - 协调大型语言模型(LLM)调用和MCP通信
  3. mcp_server.py - 实现官方JSON-RPC 2.0协议的MCP服务器

特点/特性

  • 🌤️ 来自OpenWeatherMap的实时天气数据
  • 📰 来自NewsAPI的最新新闻
  • 🤖 配备智能工具选择的Groq大型语言模型(LLM)
  • 💬 类ChatGPT的流式响应
  • 📝 自动请求/响应日志记录
  • 🔧 官方MCP协议实现

设置

1. 安装依赖项

pip install -r requirements.txt

2. 配置API密钥

复制 .env.example to .env 并添加您的API密钥:

OPENWEATHER_API_KEY=your_key_here
NEWSAPI_API_KEY=your_key_here
GROQ_API_KEY=your_key_here
GROQ_MODEL=openai/gpt-oss-120b

获取API密钥:

  • OpenWeatherMap:https://openweathermap.org/api(提供免费层级)
  • NewsAPI: https://newsapi.org/(免费版:每天100次请求)
  • Groq:https://console.groq.com/(提供免费层级)

3. 运行应用程序

streamlit run app.py

聊天界面将在您的浏览器中打开于 http://localhost:8501

使用示例

提出类似以下的自然语言问题:

  • “伦敦的天气怎么样?”
  • “现在东京的天气怎么样?”
  • “比特币的最新消息是什么?”
  • “给我展示一些关于人工智能的新闻”

该大型语言模型(LLM)将:

  1. 分析你的问题
  2. 确定要调用哪个工具
  3. 通过MCP服务器执行该工具
  4. 生成一个自然、有帮助的回复

它是如何运作的

LLM → MCP 流程(或“流向”)

  1. 用户查询 → Streamlit 用户界面捕获输入
  2. 工具选择 → 大语言模型(LLM)分析查询并生成JSON工具调用
  3. MCP 通讯(或 MCP 沟通,具体翻译取决于上下文,若MCP为特定公司或项目名称,则可能需直译为“MCP 通信/交流”) → llm_client (在游戏中)生成(生物/物品) mcp_server 子进程
  4. JSON-RPC 请求 通过标准输入发送到MCP服务器
  5. 工具执行 MCP调用天气或新闻API
  6. 回应 → 工具结果通过标准输出返回
  7. 最终答案 → 大语言模型(LLM)生成用户友好的响应(流式传输)
  8. 记录日志 → 所有交互记录到 logs/llm_requests.txt

MCP协议

服务器实现了官方的MCP方法:

  • initialize - 握手及能力交换
  • tools/list - 返回可用工具
  • tools/call - 执行一个带有参数的工具

日志

所有大型语言模型(LLM)和工具的交互都被记录在JSON格式中:

logs/llm_requests.txt

每条日志条目包括:

  • 时间戳
  • 阶段(工具决策、工具执行、最终响应)
  • 提示与回应
  • 工具调用和结果

发展

项目结构

D:\Projects\MCP\
├── app.py              # Streamlit UI
├── llm_client.py       # LLM orchestration & MCP client
├── mcp_server.py       # MCP server (tools implementation)
├── requirements.txt    # Python dependencies
├── .env               # API keys 
├── logs/              # Request logs
└── README.md          # This file