IT · Model Context Protocol

Контейнеризація MCP сервера

Один образ — той самий HTTP endpoint у Cursor

Урок 12

План заняття

  1. 01 Навіщо Docker для MCP

Блок 1

Навіщо Docker для MCP

HTTP уже є. Середовище все ще на ноутбуці

Навіщо Docker для MCP

Це ще не деплой

qauto MCP server уже працює через Streamable HTTP: Cursor ходить на http://127.0.0.1:8001/mcp, credentials — у headers.

Це сервер на одній машині. Щоб його запустити, потрібні Python 3.14, uv, залежності й сертифікати.

Навіщо Docker для MCP

Основна проблема

Локальний uv run python -m qauto_mcp прив’язує MCP Server до хоста. Середовище живе на ноутбуці, а не в проєкті.

Колега, CI або хмарний хост мають повторити те саме встановлення. Інакше знову «у мене працює».

Навіщо Docker для MCP

Наслідки

  • На іншій машині немає Python 3.14 або uv — сервер не стартує
  • Версії бібліотек роз’їжджаються. Той самий код поведиться по-різному
  • Процес живе, поки відкритий термінал. Закрив — Host втрачає endpoint

Навіщо Docker для MCP

Рішення: контейнер

Docker пакує сервер разом із середовищем: Python, uv, залежності, код, каталог авто й CA-bundle.

Один контейнер — один процес: FastMCP на Streamable HTTP, endpoint /mcp. Базу, Redis і nginx не додаємо.

Навіщо Docker для MCP

Як це працює

Фінал заняття

Підсумки

На цій лекції ми розібрали, навіщо Docker MCP-серверу після Streamable HTTP і як упакувати qauto MCP в один контейнер через Compose.

Контейнер дає однаковий запуск без локального Python і uv: Host підключається до того самого HTTP endpoint, а секрети лишаються у клієнті.

У наступній лекції перейдемо до Security in MCP — ризики tools і skills та чому локальний запуск чужого коду не є «просто розширенням агента».