MCP-сервер · Разработка и DevOps
Docker MCP Gateway
Официальный шлюз Docker (основа MCP Toolkit в Docker Desktop): запускает MCP-серверы из каталога в изолированных контейнерах и отдаёт их клиенту одним входом. Серверы собираются в профили, секреты и OAuth берёт на себя Docker.
Сверено 21 октября 2026 г.
Что умеет шлюз
Docker MCP Gateway не предлагает собственных инструментов вроде управления контейнерами, он решает другую задачу: запускает MCP-серверы из каталога Docker и отдаёт их клиенту через один вход. Репозиторий docker/mcp-gateway содержит плагин Docker CLI docker-mcp, на котором построен MCP Toolkit в Docker Desktop. Плагин может работать и отдельно от Docker Desktop.
Каждый локальный сервер из каталога запускается в изолированном контейнере, а серверы на npx и uvx получают минимальные права на хосте. Серверы группируются в профили: профиль можно подключить к клиенту, экспортировать и передать через реестр OCI. Шлюз умеет OAuth-авторизацию для серверов, которым она нужна, хранит секреты в менеджере Docker Desktop, ведёт журнал вызовов и позволяет включать и отключать отдельные инструменты. По документации Toolkit, агент через Dynamic MCP может сам искать и добавлять серверы из каталога.
Когда использовать
Шлюз удобен, когда нужно подключить к клиенту сразу несколько MCP-серверов (GitHub, Notion, Puppeteer и другие из каталога) и не ставить каждый вручную. Один раз настроенный профиль подключается к Claude Desktop, Cursor, VS Code и другим клиентам, и все они видят одинаковый набор.
Подойдёт он и для командной работы: профиль выгружают в файл или реестр, и коллеги получают тот же набор серверов. Если нужен всего один сервер и вы не пользуетесь Docker, проще подключить его напрямую.
Ограничения и безопасность
В README указано, что для MCP Toolkit нужен Docker Desktop 4.59 или новее; вне Docker Desktop (Docker CE, WSL2) для обхода проверок задают переменную DOCKER_MCP_IN_CONTAINER=1, а профили включают командой docker mcp feature enable profiles. В документации Docker сам MCP Toolkit отмечен как бета.
Изоляция заметная: по документации Toolkit инструменты работают в своих контейнерах с ограничением 1 CPU и 2 ГБ памяти, доступа к файловой системе хоста по умолчанию нет, а файловые монтирования получают только выбранные пользователем серверы. Запросы с секретами блокируются. Образы под префиксом mcp/ в каталоге собираются и подписываются самим Docker. Это защищает хост, но не отменяет прав подключённых серверов: сервер GitHub по-прежнему действует с вашими правами в GitHub.
Установка
Docker Desktop
В Docker Desktop (4.59 или новее) включите функцию MCP Toolkit: плагин docker-mcp уже входит в свежие версии. Проверить, что он доступен, можно командой:
docker mcp --helpУстановка плагина из исходников
Если нужна последняя версия или вы работаете без Docker Desktop, соберите и установите плагин как плагин Docker CLI:
git clone https://github.com/docker/mcp-gateway.git
cd mcp-gateway
mkdir -p "$HOME/.docker/cli-plugins/"
make docker-mcpВне Docker Desktop (Docker CE, WSL2, контейнер) при ошибке «Docker Desktop is not running» задайте переменную, а для профилей включите функцию:
export DOCKER_MCP_IN_CONTAINER=1
docker mcp feature enable profilesПрофиль и сервер
Каталог по умолчанию подтягивается командой docker mcp catalog pull mcp/docker-mcp-catalog. Создайте профиль с сервером из каталога и сразу подключите его к клиенту:
docker mcp profile create --name dev-tools \
--server catalog://mcp/docker-mcp-catalog/github \
--connect cursorДобавить сервер в существующий профиль:
docker mcp profile server add dev-tools \
--server catalog://mcp/docker-mcp-catalog/notionClaude Desktop
Шлюз подключается как обычный MCP-сервер:
{
"mcpServers": {
"MCP_DOCKER": {
"command": "docker",
"args": ["mcp", "gateway", "run"]
}
}
}Подключить клиент к профилю можно и командой:
docker mcp client connect <client-name> --profile <profile-id>Claude Code
Если Claude Code хранит конфигурацию в нестандартном каталоге, задайте CLAUDE_CONFIG_DIR и подключите шлюз к профилю:
export CLAUDE_CONFIG_DIR=/path/to/custom/config
docker mcp client connect claude-code --profile dev-tools --globalVS Code
Добавьте в пользовательский mcp.json:
"mcp": {
"servers": {
"MCP_DOCKER": {
"command": "docker",
"args": [
"mcp",
"gateway",
"run",
"--profile",
"my_profile"
],
"type": "stdio"
}
}
}Или создайте .vscode/mcp.json в проекте командой (файл персональный, добавьте его в .gitignore):
docker mcp client connect vscode --profile my_profile
echo ".vscode/mcp.json" >> .gitignoreЗапуск шлюза вручную
# stdio, профиль по умолчанию
docker mcp gateway run
# потоковый режим для нескольких клиентов
docker mcp gateway run --port 8080 --transport streaming
# только выбранные серверы и инструменты
docker mcp gateway run --servers server1,server2 --tools server1:* --tools server2:tool2Совместимые клиенты
- Claude Desktop
- Claude Code
- Cursor
- VS Code