🌤️ 带有OpenAI的MCP天气服务器
一个简单的MCP服务器,通过OpenWeatherMap API获取天气信息,并使用OpenAI GPT-4o-mini作为交互界面。
📋 这是做什么的?
- 🌍 获取任何城市的当前天气
- 📅 显示多日天气预报
- 🤖 使用GPT-4o-mini进行自然对话
- 🔧 实现MCP协议,以便将AI连接到外部数据
🚀 快速启动
1. 安装依赖项
# Создайте виртуальное окружение
python3 -m venv venv
# Активируйте его
# На macOS/Linux:
source venv/bin/activate
# На Windows:
venv\Scripts\activate
# Установите зависимости
pip3 install -r requirements.txt2. 配置API密钥
创建一个文件 .env 在项目的核心中:
# API ключ OpenWeatherMap (бесплатный)
# Получите на: https://openweathermap.org/api
OPENWEATHER_API_KEY=ваш_ключ_здесь
# API ключ OpenAI
# Получите на: https://platform.openai.com/api-keys
OPENAI_API_KEY=ваш_ключ_здесь如何获取密钥:
- OpenWeatherMap(开放天气图):
1. 请在https://openweathermap.org进行注册 1. 转到API密钥部分 1. 复制密钥(免费计划每天提供1000次请求)
- OpenAI(开放人工智能研究所):
1. 请访问https://platform.openai.com进行注册 1. 创建一个新的API密钥 1. 充值余额(至少5美元)
3. 启动
# Просто запустите клиент
python3 client.py💬 使用示例
启动后,只需用自然语言询问天气:
👤 Вы: Какая погода в Москве?
🤖 Ассистент: [Показывает текущую погоду в Москве]
👤 Вы: А какой прогноз на 5 дней для Санкт-Петербурга?
🤖 Ассистент: [Показывает прогноз на 5 дней]
👤 Вы: Что лучше надеть в Лондоне сегодня?
🤖 Ассистент: [Проверяет погоду и дает рекомендации]🔧 仅服务器测试
如果您想在没有客户端的情况下测试服务器:
# Используйте MCP Inspector
uv run mcp dev server.py
# Или установите в Claude Desktop
uv run mcp install server.py --name "Weather Service"📁 项目结构
weather-mcp-server/
├── server.py # MCP сервер с инструментами погоды
├── client.py # Клиент с OpenAI и mcp-use
├── .env # API ключи (не добавляйте в Git!)
├── requirements.txt # Python зависимости
└── README.md # Эта инструкция🛠️ 可用工具
get_current_weather
获取当前城市的天气
参数:
city(必填):城市名称units(可选):“公制”或“英制”
get_forecast
获取多日天气预报
参数:
city(必填):城市名称days(可选):天数(1-5)units(可选):“公制”或“英制”
⚠️ 重要备注
- 不要使用
print()在 server.py 中 - 这将破坏STDIO传输 - 保存
.env在安全方面 - 添加到.gitignore - API限制:
- OpenWeatherMap 免费版:每天1000次查询 - OpenAI:取决于您的套餐
- OpenAI的成本GPT-4o-mini非常便宜(每100万个token约0.15美元)
🐛 解决问题
错误:“未找到OPENWEATHER_API_KEY”
- 检查文件是否
.env已创建并包含密钥 - 确保文件与脚本位于同一文件夹中
错误:“无法获取天气信息”
- 检查城市名称的拼写是否正确
- 试试这个城市的英文名字
服务器无法启动
- 确保虚拟环境已激活
- 检查所有依赖项是否已安装
