使用说明
集成大型语言模型(LLM)的天气与新闻多功能控制面板(MCP)
一个由Groq LLM驱动的智能聊天机器人,通过实现模型上下文协议(MCP)来使用工具访问天气和新闻数据。
建筑学
User → Streamlit UI → LLM Client → Groq LLM
↓
MCP Server (JSON-RPC over stdio)
↓
Weather & News APIs
组件
app.py- 具有流式响应的Streamlit聊天界面llm_client.py- 协调大型语言模型(LLM)调用和MCP通信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)将:
- 分析你的问题
- 确定要调用哪个工具
- 通过MCP服务器执行该工具
- 生成一个自然、有帮助的回复
它是如何运作的
LLM → MCP 流程(或“流向”)
- 用户查询 → Streamlit 用户界面捕获输入
- 工具选择 → 大语言模型(LLM)分析查询并生成JSON工具调用
- MCP 通讯(或 MCP 沟通,具体翻译取决于上下文,若MCP为特定公司或项目名称,则可能需直译为“MCP 通信/交流”) →
llm_client(在游戏中)生成(生物/物品)mcp_server子进程 - JSON-RPC 请求 通过标准输入发送到MCP服务器
- 工具执行 MCP调用天气或新闻API
- 回应 → 工具结果通过标准输出返回
- 最终答案 → 大语言模型(LLM)生成用户友好的响应(流式传输)
- 记录日志 → 所有交互记录到
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