Что агенту программирования нужно от Docker
Агент в реальном проекте постоянно задаёт одни и те же вопросы: что работает, какое приложение на порту 3000, почему контейнер завершился, что в логах, можно ли запустить тесты в одноразовом окружении. Имея только shell, он запускает docker ps, docker inspect и docker logs и читает каждую строку вывода. Это работает, но медленно и дорого: сырой JSON и сотни строк логов попадают в контекст модели на каждом ходе.
MCP-сервер превращает эти вопросы в инструменты, возвращающие сам ответ. Инструменты Oxcart построены вокруг вопросов, а не конечных точек API Docker, поэтому один вызов заменяет цепочку команд.
13 инструментов
| Задача | Инструменты | Минимальный уровень, на котором они доступны |
|---|---|---|
| Просмотр | status, projects, ports, images, logs | Read only |
| Объяснение | diagnose: коды завершения, остановки из-за OOM, неуспешные проверки состояния, проблемы с портами и важные строки логов | Read only |
| Действия | container (запуск, остановка, перезапуск), exec, compose (up, down), sandbox без сети | Manage |
| Изменение и очистка | build, remove, cleanup (сначала предварительный просмотр), sandbox с сетью | Full |
status показывает каждый проект Compose с его папкой, веткой Git и URL на localhost, поэтому «приложение на порту 3000» означает одно и то же для вас и агента. Подписанные на ресурсы клиенты узнают о сбое, остановке из-за OOM или изменении состояния сразу, без опроса.
Меньше ответы — дешевле сеансы
Что агент читает для ответа на каждый вопрос через Oxcart по сравнению с выводом CLI docker, который пришлось бы читать иначе; измерено в один момент на одних контейнерах:
| Вопрос | MCP Oxcart | Эквивалент в CLI docker | CLI docker | Во сколько раз меньше |
|---|---|---|---|---|
| Почему этот контейнер остановился? | 159 | inspect + logs --tail 300 | 2,014 | 13× |
| Есть ли ошибки в последних 500 строках логов? | 39 | logs --tail 500 | 703 | 18× |
| Что работает? | 106 | ps -a + stats --no-stream + compose ls -a | 332 | 3,1× |
Пять тестовых контейнеров (аварийно завершающийся, с неуспешной проверкой состояния, остановленный из-за OOM, проект Compose, опубликованный порт). Размер ответов diagnose и logs не растёт вместе с логами. Сам список инструментов требует 510 токенов один раз за сеанс на уровне только чтения (6 инструментов) и 1 463 для всех 13.
Полные сеансы показывают ту же картину. Claude Code с Claude Opus 5.5 ответил на два повседневных вопроса: один раз только с CLI docker, другой — с MCP-сервером Oxcart. В обоих вариантах оба ответа были верными.
| Задача | Время | Стоимость | Токены | Ходы |
|---|---|---|---|---|
«Выдаёт ли worker ошибки? Покажи ошибку». | 4.2 s против 31.0 s | $0.022 против $0.157 | 10,686 против 52,266 | 2 против 8 |
«Мой контейнер api постоянно завершается. Почему?» | 8.5 s против 14.9 s | $0.036 против $0.070 | 11,283 против 19,510 | 2 против 4 |
Один сеанс на задачу с Oxcart и без него, на синтетических тестовых контейнерах, Oxcart 0.1.0: только ориентир. Стоимость зависит от кеширования промптов; порядок запусков не чередовался.
Настройте MCP-сервер Oxcart в любом агенте программирования
- Установите Oxcart. Скачайте Oxcart (Apple silicon, macOS 26 или новее) и откройте его. Настройка работает без интернета и занимает секунды.
- Скопируйте фразу для настройки. Откройте MCP Integrations в боковой панели Oxcart и скопируйте фразу: «Настрой для меня MCP-сервер Oxcart: выполни
/Applications/Oxcart.app/Contents/Helpers/oxcart agent setupи следуй его инструкциям». - Вставьте её в агент. Вставьте её в Claude Code, Codex, Cursor или любой агент, умеющий выполнять команды. Агент выполнит команду, прочитает предназначенные ему шаги и зарегистрирует сервер
oxcart. - Спросите о контейнерах. Спросите «что работает?» или «почему
apiостановился?». Агент появится на странице MCP Integrations с доступом только для чтения; все вызовы видны в журнале активности. - При желании повысьте уровень. Выберите Manage, чтобы агент мог запускать и останавливать контейнеры, выполнять команды и использовать Compose, или Full для сборки, удаления и очистки. Block отклоняет все вызовы.
Если агент не умеет выполнять команды (Claude Desktop, LM Studio и похожие приложения), Oxcart показывает фрагмент JSON для добавления в настройки MCP приложения. Для Claude Code прямая команда:
claude mcp add -s user oxcart -- /Applications/Oxcart.app/Contents/Helpers/oxcart mcp --client claude-code Для Codex команда codex mcp add oxcart -- /Applications/Oxcart.app/Contents/Helpers/oxcart mcp --client codex регистрирует сервер в CLI Codex и расширении IDE.
Уровни разрешений для каждого агента
| Уровень | Агент может |
|---|---|
| Read only (по умолчанию) | Просматривать контейнеры, логи, порты, проекты и образы; диагностировать сбои |
| Manage | Также запускать, останавливать и перезапускать, выполнять команды, Compose up и down, запускать песочницы без сети |
| Full | Также собирать, удалять, очищать и предоставлять песочницам доступ к сети |
| Block | Ничего: инструменты не отображаются, все вызовы отклоняются, агенту сообщается причина |
Инструменты выше уровня агента вообще не перечисляются, что также уменьшает его контекст. Каждый вызов записывается на Mac и отображается на странице MCP Integrations; данные не покидают Mac. Уровни определяют, что инструменты Oxcart делают для агента. Это не песочница: агент с доступом к shell всё ещё может самостоятельно запускать docker, поэтому сочетайте уровни с собственными разрешениями агента на команды.
Агенты с инструкциями по настройке
Claude Code, Claude Desktop, Codex, Cursor, VS Code с Copilot, Devin Desktop, Zed, Gemini CLI, GitHub Copilot CLI, OpenCode, Cline, Junie, JetBrains AI Assistant, Goose, Kiro, Amp, Warp и LM Studio, а также общая инструкция для любого другого MCP-клиента. Шаги берутся из установленной копии Oxcart (oxcart agent setup) с реальными путями вашего Mac, поэтому работают без интернета и соответствуют вашей версии.
Контейнеры для работы агентов за пределами MCP
- Dev Containers: запускайте агент внутри Dev Container, чтобы его shell, инструменты и сеть оставались в контейнере проекта. Oxcart работает с CLI Dev Containers; см. Dev Containers и Testcontainers на Mac.
- Быстрый цикл разработки: агенты постоянно запускают и удаляют контейнеры. Oxcart показал 42 ms для
docker run --rmи 77 ms для остановки и удаления 20 контейнеров — лучший результат из трёх протестированных сред (сравнения). - Стеки Compose: инструмент агента
composeзапускает и останавливает проекты на уровне Manage; см. Docker Compose на Apple silicon.
Вопросы
Есть ли MCP-сервер для Docker-контейнеров на Mac?
Да. Oxcart включает oxcart mcp — локальный MCP-сервер через stdio с 13 инструментами для состояния, диагностики, логов, портов, образов, выполнения команд, Compose, сборок, песочниц и очистки. Он не слушает сетевые порты и не требует токена.
Как подключить Claude Code к Docker-контейнерам?
Вставьте фразу настройки Oxcart в Claude Code или выполните claude mcp add -s user oxcart -- /Applications/Oxcart.app/Contents/Helpers/oxcart mcp --client claude-code. Claude Code покажет сервер oxcart и сможет вызывать его инструменты.
Работает ли это с Codex, Cursor и VS Code с Copilot?
Oxcart содержит инструкции для 18 клиентов, включая Codex, Cursor, VS Code с Copilot, Claude Desktop, Zed, Gemini CLI, GitHub Copilot CLI, Cline, Goose, Kiro, Amp, Warp и LM Studio, а также общую инструкцию для любого другого MCP-клиента. Полный цикл был проверен на Claude Code.
Может ли агент удалить мои контейнеры или тома?
По умолчанию нет. Каждый агент начинает с доступа только для чтения. Для каждого можно выбрать Manage, Full или Block. На уровне Full cleanup сначала возвращает предварительный список и токен, а затем удаляет только элементы из списка. Уровни регулируют инструменты Oxcart, а не создают песочницу: агент с доступом к shell может напрямую запускать CLI docker.
Почему бы просто не дать агенту выполнять команды docker?
Это работает, но агент читает много необработанного вывода. Ответ на вопрос «почему этот контейнер остановился?» потребовал 159 токенов через diagnose Oxcart против 2 014 для docker inspect вместе с docker logs --tail 300: в 13× меньше. В одном сеансе Claude Code на задачу (ориентировочный результат) поиск ошибки в логах занял 4.2 s вместо 31.0 s.
Отправляет ли MCP-сервер мои данные куда-либо?
Нет. Он обращается только к сокету локального движка и сам не устанавливает сетевых подключений. Все вызовы записываются в журнал активности на Mac. Образы по-прежнему скачиваются из реестров, когда инструмент запускает или собирает что-то, для чего они нужны, как и при docker run.
Может ли агент выполнять код в одноразовом контейнере?
Да, с инструментом sandbox: одноразовый контейнер без сети, если только агент на уровне Full не запросит её, с лимитом 2 GiB памяти и 1 024 процесса.
Источники и методика
- Размеры ответов: измерены 2026-10-10 на пяти тестовых контейнерах; оценка токенов — символы ÷ 4.
- Сеансы: Claude Code 2.1.296 с
claude-opus-5-5, Oxcart 0.1.0, один запуск на задачу и вариант. - Показатели скорости: Oxcart 0.1.2, 2026-10-10, Apple M5 Max, 8 CPU и 12 GiB; сравниваемые среды измерены ранее в тот же день на том же Mac и тем же набором тестов с клиентом docker 29.4.