Деплой MCP-сервера с использованием Docker

На предыдущем этапе мы подготовили фундамент: арендовали облачный сервер и настроили доступ по SSH. Теперь перенесем MCP-сервер из локальной среды в интернет.

Мы выполним удалённый деплой — развернем приложение на сервере, чтобы оно работало круглосуточно. Стандарт индустрии для этого — Docker. Он гарантирует, что агент будет работать в облаке точно так же, как на вашем ноутбуке.

Подготовка и перенос образа

Чтобы запустить код на сервере, его нужно туда доставить. Самый надежный способ — упаковать проект в Docker-образ.

В промышленной разработке используют реестры (Docker Hub, GitHub Packages или Yandex Container Registry). Для быстрой работы на курсе мы используем экспорт образа напрямую.

Как показано на Схеме 1, мы собираем образ локально, а затем разворачиваем его на удаленной машине.

Запуск в фоновом режиме

При локальном запуске логи отображаются в терминале. Если запустить процесс так же на сервере и закрыть SSH-сессию, агент выключится. Чтобы сервер работал постоянно, мы запустим фоновый контейнер (режим detached).

Для управления деплоем используем Docker Compose. Он позволяет описать конфигурацию в одном файле docker-compose.yml вместо ввода длинных команд в консоль.

Создайте на сервере файл docker-compose.yml:

services:
  mcp-server:
    image: my-mcp-agent:latest # Название вашего образа
    ports:
      - "8080:8080"
    restart: unless-stopped
    environment:
      - NODE_ENV=production

Параметр unless-stopped включает автозапуск контейнера. Если облачный провайдер перезагрузит физический сервер или произойдет сбой, Docker сам поднимет вашего агента при старте системы.

Команды управления

Подключитесь к серверу по SSH и выполните команды в директории проекта:

  1. Запуск в фоне: docker compose up -d 🛰️
  2. Проверка статуса: docker compose ps
  3. Просмотр логов: docker compose logs -f

Запуск через docker run без флага -d и политики restart. При разрыве SSH-соединения ваш MCP-сервер мгновенно остановится, и ИИ-агент (в Cursor или Claude) потеряет доступ к инструментам.

Проверка доступности

Нужно убедиться, что сервер отвечает на запросы. Большинство провайдеров (Selectel, Yandex Cloud) сразу выдают публичный IP-адрес.

Проверьте эндпоинт /capabilities через curl: curl http://<IP_ВАШЕГО_СЕРВЕРА>:8080/capabilities

Если пришел JSON-ответ с описанием функций — ваш MCP-агент работает в облаке.

  1. Подключитесь к облачному серверу.
  2. Разверните MCP-сервер через Docker Compose.
  3. Убедитесь, что настроен автозапуск контейнера через unless-stopped.
  4. Перезагрузите сервер в панели управления и проверьте, поднялся ли контейнер автоматически через пару минут.

Инфраструктура готова. Сейчас сервер работает, но у него нет доступа к нейросетям. В следующем уроке мы разберемся, как получить API-ключи Claude и безопасно хранить их, чтобы не допустить утечки данных.

Понравился урок?

Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей

Продолжить в Telegram