Skip to main content

🌤️ MCP Сервер Погоды с OpenAI

Простой 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.txt

2. Настройка 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
    2. Перейдите в раздел API Keys
    3. Скопируйте ключ (бесплатный план дает 1000 запросов/день)
  • OpenAI:

    1. Зарегистрируйтесь на https://platform.openai.com
    2. Создайте новый API ключ
    3. Пополните баланс (минимум $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 (опционально): "metric" или "imperial"

get_forecast

Получает прогноз погоды на несколько дней

Параметры:

  • city (обязательный): Название города
  • days (опционально): Количество дней (1-5)
  • units (опционально): "metric" или "imperial"

⚠️ Важные замечания

  1. Не используйте print() в server.py - это сломает STDIO транспорт
  2. Храните .env в безопасности - добавьте в .gitignore
  3. Лимиты API:
    • OpenWeatherMap Free: 1000 запросов/день
    • OpenAI: зависит от вашего тарифа
  4. Стоимость OpenAI: GPT-4o-mini очень дешевая (~$0.15 за 1M токенов)

🐛 Решение проблем

Ошибка: "OPENWEATHER_API_KEY не найден"

  • Проверьте, что файл .env создан и содержит ключ
  • Убедитесь, что файл находится в той же папке, что и скрипты

Ошибка: "Не удалось получить погоду"

  • Проверьте правильность написания города
  • Попробуйте английское название города

Сервер не запускается

  • Убедитесь, что виртуальное окружение активировано
  • Проверьте, что все зависимости установлены

📚 Полезные ссылки

Metadata

Release files for iflow-mcp_helpfreedom-openweathermap_mcp 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iflow-mcp_helpfreedom-openweathermap_mcp 1.0.0
File Size Uploaded
iflow_mcp_helpfreedom_openweathermap_mcp-1.0.0.tar.gz 18.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iflow-mcp_helpfreedom-openweathermap_mcp 1.0.0
File Interpreter ABI Platform
iflow_mcp_helpfreedom_openweathermap_mcp-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 38.6 kB

Release files / iflow_mcp_helpfreedom_openweathermap_mcp-1.0.0.tar.gz

Download URL iflow_mcp_helpfreedom_openweathermap_mcp-1.0.0.tar.gz
Size 18.9 kB
Tags Source
SHA-256 checksum
How to use checksums
d579c932e9b4c8174fdad6e24f497e845dde0729acb50516eeda06fac68029af
BLAKE2b-256 checksum
How to use checksums
f57d67497bf91ecfe43d09f3d79b8f867cbf575bb8dff29604210f3bf2a70c41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / iflow_mcp_helpfreedom_openweathermap_mcp-1.0.0-py3-none-any.whl

Download URL iflow_mcp_helpfreedom_openweathermap_mcp-1.0.0-py3-none-any.whl
Size 19.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
682f0d73c10c32dc4375bc65f48e0f765fb3c3f1cdcd407c14f4bc42ba72b20a
BLAKE2b-256 checksum
How to use checksums
8fe96a4d72eb6be04ff993fa68c01d0716fe06a3383733e300856004987bb9f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page