使用说明
🌦️ MCP天气刮刀
该项目是 模型上下文协议(MCP) 通过**OpenAI**和FastAPI使用轻量级LLM从开放网络源获取和构建实时天气信息。目标是探索LLM如何与工具交互,并作为智能代理检索和推理非结构化网络数据。
🚀 特性
- ✅ 符合MCP标准的服务器,通过浏览器搜索进行天气抓取
- ✅ 与OpenAI LLM集成(例如gpt-3.5-turbo)
- ✅ FastAPI服务器提供天气信息作为可调用的MCP工具
- ✅ 使用自动HTML解析
selectolax为了表现 - ✅ LLM将非结构化web内容提取为结构化模式
- ✅ Streamlit应用程序前端,用于用户交互
- ✅ 使用响应缓存
functools.lru_cache
🧠 潜水前先刷新一下
本次回购的五大概念
| 🧩 概念|🔍 它是什么⚙️ 为什么重要|
|-----------|---------------|-------------------|
| 模型上下文协议(MCP) |LLM中工具调用的新协议|支持结构化AI代理通信|
| 乌维科恩 |用于Python web应用程序的快速ASGI服务器|托管基于FastAPI的MCP服务器|
| Selectolax |高速HTML解析器|高效抓取和提取天气数据|
| functools.lru_cache |内置Python装饰器来缓存函数调用|通过避免重复获取来提高性能|
| 令牌使用指标(OpenAI) |关于LLM调用中使用了多少令牌的信息|帮助跟踪成本并优化提示设计|
💡 即使你熟悉Python和API,这些工具也代表 尖端的AI堆栈工程 值得一看!
📊 令牌使用和性能指标
Streamlit UI现在包括:
-
⏱️ 响应时间
获取和处理天气信息所花费的时间 -
🧠 提示令牌
LLM提示中使用的令牌 -
💬 完成令牌
LLM响应中生成的令牌 -
🔢 代币总数
每个请求的令牌总数,可用于成本跟踪
这些结果以清晰的视觉布局显示在每张结果卡下。
🖥️ Streamlit应用程序预览
需求
- Python 3.9或更高版本
- 中列出的依赖关系
requirements.txt
🛠️ 设置
- 克隆仓库
git clone https://github.com/your-username/mcp_weather_scraper.git cd mcp_weather_scraper - 创建并激活虚拟环境
python -m venv .venv .venv\Scripts\activate # On Windows - 安装依赖项
pip install -r requirements.txt - 设置环境变量
在根目录中创建.env文件并添加您的OpenAI API密钥
OPENAI_API_KEY=your_openai_api_key - 运行服务器服务器将在以下时间可用http://localhost:8000. 您可以访问API文档:
uvicorn server:app --reload- Swagger用户界面:http://localhost:8000/docs
- ReDoc :http://localhost:8000/redoc
- 提出请求或
python client.py该脚本发送一个POST请求,其中包含以下有效载荷:curl -X POST http://localhost:8000/weather -H "Content-Type: application/json" -d '{"location": "Seattle"}'服务器将以JSON格式的天气数据进行响应,例如:{ "location": "Seattle" }{ "location": "Seattle", "temperature": "15°C", "humidity": "80%", "air_quality": "Good", "condition": "Cloudy" }
📦 文件夹结构
.
📁 mcp_weather_scraper/
│
├── assets/
│ └── streamlit_screenshot.png
├── server.py # MCP-compatible tool server
├── client.py # MCP client that interacts with model + tools
├── data_models.py # Pydantic schemas for request/response
├── utils.py # HTML cleaning, scraping, etc.
├── requirements.txt
└── .env
📄 许可证
This project is licensed under the MIT License.
