README.ru.md•7.6 kB
<p align="right">Also available in: <a href="./README.md">English</a></p>
# Exely Hotel Booking MCP Assistant
Проект для интеграции Exely Distribution API с LLM через MCP-сервер и взаимодействия с ним через Telegram-бота.
Этот проект упакован в Docker для легкого и надежного развертывания в production-среде на любом сервере или VPS.
### Ключевые особенности
- **Развертывание в один клик**: Используйте скрипты `deploy.sh` (для Linux) или `deploy.ps1` (для Windows) для автоматической установки и настройки.
- **Интерактивная настройка**: Скрипты сами запросят необходимые API ключи и создадут файлы конфигурации.
- **Гибкость**: Вы можете развернуть все компоненты на одной машине или разнести MCP-сервер и Telegram-бота на разные серверы.
- **Production-Ready**: Используется Multistage Docker-сборка для создания легковесных и безопасных образов.
- **Надежность**: Контейнеры настроены на автоматический перезапуск в случае сбоев.
## Структура проекта
```
exely_mcp_project/
├── app/ # Исходный код приложения (сервер FastAPI/MCP)
│ ├── __init__.py
│ ├── config.py # Конфигурация приложения (берется из файлов .env)
│ ├── main.py # FastAPI приложение с MCP-сервером
│ ├── exely_client/ # Клиент для Exely API
│ │ ├── __init__.py
│ │ ├── client.py # Сам клиент API
│ │ └── schemas.py # Pydantic модели для Exely API
│ ├── llm_client/ # Клиент для Mistral LLM API
│ │ ├── __init__.py
│ │ └── llm_client.py
│ └── mcp_tools/ # MCP инструменты (tools)
│ ├── __init__.py
│ ├── schemas_llm.py # Pydantic модели для параментров инструментов (tools)
│ ├── tools.py # Логика реализации инструментов (tools)
│ └── prompt_utils.py # Утилиты для создания подсказок к инструментам
│
├── telegram_bot.py # Исходный код бота Telegram
├── pyproject.toml # Зависимости и метаданные проекта
│
├── README.md # Основная документация (English)
├── README.ru.md # Опциональная документация (Russian)
│
│ --- Файлы развертывания ---
├── deploy.sh # Скрипт развертывания для Linux/macOS
├── deploy.ps1 # Скрипт развертывания для Windows (PowerShell)
├── Dockerfile # Файл создания Docker образа
├── .dockerignore # Список файлов, которые необходимо исключить из Docker образа
├── docker-compose.yml # Docker Compose для развертывания по принципу "все в одном контейнере"
├── docker-compose.server.yml # Только для развертывания сервера
├── docker-compose.bot.yml # Только для развертывания бота
│
│ --- Файлы окружения (обычно их нет в git) ---
├── .env.prod # (Генерируется) Переменные окружения продакшн среды
├── .env.bot.prod # (Генерируется) Переменные окружения продакшн среды для бота
└── .env.example # Шаблон для локальной разработки (без Docker)
```
## Развертывание (Production)
Это рекомендуемый способ для запуска проекта на VPS или любом другом сервере.
### Предварительные требования
- **Git** для клонирования репозитория.
- **Docker и Docker Compose**: Скрипт развертывания попытается автоматически установить их на системах Ubuntu. Для других ОС установите их согласно официальной документации.
### Инструкция по запуску
1. **Клонируйте репозиторий на ваш сервер:**
```bash
git clone https://github.com/Bdata0/Exely_MCP.git
cd ~/Exely_MCP
```
2. **Запустите скрипт развертывания:**
Скрипт сам проверит наличие Docker, запросит у вас все необходимые API ключи и токены, создаст файлы конфигурации и запустит проект.
* **Для Linux (Ubuntu, Debian и т.д.):**
Сначала сделайте скрипт исполняемым:
```bash
chmod +x deploy.sh
```
Затем запустите его:
```bash
./deploy.sh
```
* **Для Windows (используя PowerShell):**
Возможно, вам потребуется разрешить выполнение скриптов в текущей сессии:
```powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
```
Затем запустите скрипт:
```powershell
.\deploy.ps1
```
3. **Следуйте инструкциям в терминале:**
* Скрипт попросит вас ввести `EXELY_API_KEY`, `MISTRAL_API_KEY` и `TELEGRAM_BOT_TOKEN`. Ввод будет скрыт для безопасности.
* Затем он предложит выбрать сценарий развертывания:
1. **All-in-one**: Запустить и сервер, и бота на текущей машине (самый частый выбор).
2. **Server only**: Запустить только MCP-сервер.
3. **Bot only**: Запустить только Telegram-бота (потребуется ввести IP-адрес машины с сервером).
После выбора сценария скрипт автоматически соберет Docker-образы и запустит контейнеры в фоновом режиме.
### Управление приложением
- **Проверить статус контейнеров:** `docker compose ps`
- **Просмотреть логи в реальном времени:** `docker compose logs -f`
- **Остановить приложение:** `docker compose down`
Теперь ваш бот полностью настроен и запущен!