Простой MCP сервер для получения погоды через OpenWeatherMap API с использованием OpenAI GPT-4o-mini в качестве интерфейса.
- 🌍 Получает текущую погоду для любого города
- 📅 Показывает прогноз погоды на несколько дней
- 🤖 Использует GPT-4o-mini для естественного общения
- 🔧 Реализует протокол MCP для подключения AI к внешним данным
# Создайте виртуальное окружение
python3 -m venv venv
# Активируйте его
# На macOS/Linux:
source venv/bin/activate
# На Windows:
venv\Scripts\activate
# Установите зависимости
pip3 install -r requirements.txtСоздайте файл .env в корне проекта:
# API ключ OpenWeatherMap (бесплатный)
# Получите на: https://openweathermap.org/api
OPENWEATHER_API_KEY=ваш_ключ_здесь
# API ключ OpenAI
# Получите на: https://platform.openai.com/api-keys
OPENAI_API_KEY=ваш_ключ_здесьКак получить ключи:
-
OpenWeatherMap:
- Зарегистрируйтесь на https://openweathermap.org
- Перейдите в раздел API Keys
- Скопируйте ключ (бесплатный план дает 1000 запросов/день)
-
OpenAI:
- Зарегистрируйтесь на https://platform.openai.com
- Создайте новый API ключ
- Пополните баланс (минимум $5)
# Просто запустите клиент
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 # Эта инструкция
Получает текущую погоду для города
Параметры:
city(обязательный): Название городаunits(опционально): "metric" или "imperial"
Получает прогноз погоды на несколько дней
Параметры:
city(обязательный): Название городаdays(опционально): Количество дней (1-5)units(опционально): "metric" или "imperial"
- Не используйте
print()в server.py - это сломает STDIO транспорт - Храните
.envв безопасности - добавьте в.gitignore - Лимиты API:
- OpenWeatherMap Free: 1000 запросов/день
- OpenAI: зависит от вашего тарифа
- Стоимость OpenAI: GPT-4o-mini очень дешевая (~$0.15 за 1M токенов)
Ошибка: "OPENWEATHER_API_KEY не найден"
- Проверьте, что файл
.envсоздан и содержит ключ - Убедитесь, что файл находится в той же папке, что и скрипты
Ошибка: "Не удалось получить погоду"
- Проверьте правильность написания города
- Попробуйте английское название города
Сервер не запускается
- Убедитесь, что виртуальное окружение активировано
- Проверьте, что все зависимости установлены