O que um agente de programação precisa do Docker
Um agente trabalhando em um projeto real faz sempre as mesmas perguntas: o que está rodando, qual app usa a porta 3000, por que este contêiner morreu, o que dizem os logs, posso executar os testes em um ambiente descartável. Com apenas um shell, ele responde executando docker ps, docker inspect e docker logs e lendo cada linha retornada. Isso funciona, mas é lento e caro: JSON bruto e centenas de linhas de log entram no contexto do modelo a cada turno.
Um servidor MCP transforma essas perguntas em ferramentas que retornam a própria resposta. As ferramentas do Oxcart seguem as perguntas, não os endpoints da API Docker, então uma chamada substitui uma sequência de comandos.
As 13 ferramentas
| Objetivo | Ferramentas | Menor nível que as disponibiliza |
|---|---|---|
| Ver | status, projects, ports, images, logs | Read only |
| Explicar | diagnose: códigos de saída, encerramentos por OOM, falhas de healthcheck, problemas de porta e as linhas de log relevantes | Read only |
| Agir | container (iniciar, parar, reiniciar), exec, compose (up, down), sandbox sem rede | Manage |
| Alterar e organizar | build, remove, cleanup (com prévia), sandbox com rede | Full |
status mostra cada projeto Compose com sua pasta, branch Git e URLs de localhost, então “o app na porta 3000” significa a mesma coisa para você e seu agente. Clientes que assinam recursos recebem avisos de falhas, encerramentos por OOM ou mudanças de saúde quando acontecem, sem polling.
Respostas menores, sessões mais baratas
O que um agente lê para responder cada pergunta pelo Oxcart, comparado à saída da CLI docker que leria de outra forma, medido no mesmo momento e nos mesmos contêineres:
| Pergunta | MCP do Oxcart | Equivalente na CLI docker | CLI docker | Redução |
|---|---|---|---|---|
| Por que este contêiner parou? | 159 | inspect + logs --tail 300 | 2,014 | 13× |
| Há erros nas últimas 500 linhas de log? | 39 | logs --tail 500 | 703 | 18× |
| O que está rodando? | 106 | ps -a + stats --no-stream + compose ls -a | 332 | 3,1× |
Cinco contêineres de teste (um que falha, um não saudável, um encerrado por OOM, um projeto Compose e uma porta publicada). diagnose e logs mantêm o mesmo tamanho independentemente do crescimento dos logs. A própria lista de ferramentas custa 510 tokens uma vez por sessão no nível somente leitura (6 ferramentas) e 1.463 com todas as 13.
Sessões completas mostram o mesmo padrão. O Claude Code com Claude Opus 5.5 respondeu duas perguntas cotidianas, uma vez só com a CLI docker e outra com o servidor MCP do Oxcart. Ambas as configurações acertaram as duas respostas.
| Tarefa | Tempo | Custo | Tokens | Turnos |
|---|---|---|---|---|
“O worker está gerando erros? Mostre o erro.” | 4.2 s contra 31.0 s | $0.022 contra $0.157 | 10,686 contra 52,266 | 2 contra 8 |
“Meu contêiner api fica morrendo. Por quê?” | 8.5 s contra 14.9 s | $0.036 contra $0.070 | 11,283 contra 19,510 | 2 contra 4 |
Uma sessão por tarefa com e sem Oxcart, em contêineres sintéticos de teste, Oxcart 0.1.0: apenas indicativo. O custo depende do cache de prompts, e a ordem de execução não foi alternada.
Configure o servidor MCP do Oxcart em qualquer agente de programação
- Instale o Oxcart. Baixe o Oxcart (Apple silicon, macOS 26 ou posterior) e abra-o. A configuração funciona offline e leva segundos.
- Copie a frase de configuração. Abra MCP Integrations na barra lateral do Oxcart e copie a frase: “Configure o servidor MCP do Oxcart para mim: execute
/Applications/Oxcart.app/Contents/Helpers/oxcart agent setupe siga as instruções.” - Cole no seu agente. Cole no Claude Code, Codex, Cursor ou em qualquer agente que execute comandos. O agente executa o comando, lê suas próprias instruções e registra um servidor chamado
oxcart. - Pergunte sobre seus contêineres. Pergunte “o que está rodando?” ou “por que
apiparou?”. O agente aparece na página MCP Integrations, em modo somente leitura, com todas as chamadas no seu registro de atividades. - Aumente o nível se quiser. Defina o agente como Manage para permitir iniciar, parar, executar comandos e usar Compose, ou Full para compilar, remover e limpar. Block recusa todas as chamadas.
Se seu agente não executa comandos (Claude Desktop, LM Studio e apps semelhantes), o Oxcart mostra um trecho JSON para adicionar às configurações MCP do app. Para o Claude Code, o comando direto é:
claude mcp add -s user oxcart -- /Applications/Oxcart.app/Contents/Helpers/oxcart mcp --client claude-code No Codex, codex mcp add oxcart -- /Applications/Oxcart.app/Contents/Helpers/oxcart mcp --client codex registra o servidor na CLI e na extensão de IDE do Codex.
Níveis de permissão definidos por agente
| Nível | O agente pode |
|---|---|
| Read only (padrão) | Ver contêineres, logs, portas, projetos e imagens; diagnosticar falhas |
| Manage | Também iniciar, parar e reiniciar, executar comandos, usar Compose up e down e executar sandboxes sem rede |
| Full | Também compilar, remover, limpar e dar acesso à rede para sandboxes |
| Block | Nada: nenhuma ferramenta listada, todas as chamadas recusadas e o agente recebe o motivo |
Ferramentas acima do nível do agente nem são listadas, o que também reduz seu contexto. Todas as chamadas são registradas no Mac e exibidas na página MCP Integrations; nada sai do Mac. Os níveis controlam o que as ferramentas do Oxcart fazem para um agente. Eles não são um sandbox: um agente que executa comandos de shell ainda pode executar docker diretamente, então combine-os com as permissões de comandos do próprio agente.
Agentes com instruções de configuração
Claude Code, Claude Desktop, Codex, Cursor, VS Code com Copilot, Devin Desktop, Zed, Gemini CLI, GitHub Copilot CLI, OpenCode, Cline, Junie, JetBrains AI Assistant, Goose, Kiro, Amp, Warp e LM Studio, além de uma instrução para qualquer outro cliente MCP. As instruções vêm da cópia instalada do Oxcart (oxcart agent setup), com os caminhos reais do seu Mac, então funcionam offline e correspondem à sua versão.
Contêineres para fluxos de agentes além do MCP
- Dev Containers: execute o agente dentro de um Dev Container para que seu shell, ferramentas e rede permaneçam no contêiner do projeto. O Oxcart executa a CLI Dev Containers; consulte Dev Containers e Testcontainers no Mac.
- Ciclo de desenvolvimento rápido: agentes criam e destroem contêineres constantemente. O Oxcart registrou 42 ms para
docker run --rme 77 ms para parar e remover 20 contêineres, o mais rápido dos três ambientes testados (comparações). - Stacks Compose: a ferramenta
composedo agente sobe e derruba projetos no nível Manage; consulte Docker Compose no Apple silicon.
Perguntas
Existe um servidor MCP para contêineres Docker no Mac?
Sim. O Oxcart inclui oxcart mcp, um servidor MCP local por stdio com 13 ferramentas para status, diagnóstico, logs, portas, imagens, execução de comandos, Compose, builds, sandboxes e limpeza. Não escuta em nenhuma porta de rede e não precisa de token.
Como conecto o Claude Code aos meus contêineres Docker?
Cole a frase de configuração do Oxcart no Claude Code ou execute claude mcp add -s user oxcart -- /Applications/Oxcart.app/Contents/Helpers/oxcart mcp --client claude-code. O Claude Code passa a listar o servidor oxcart e pode chamar suas ferramentas.
Funciona com Codex, Cursor e VS Code com Copilot?
O Oxcart oferece instruções de configuração para 18 clientes, incluindo Codex, Cursor, VS Code com Copilot, Claude Desktop, Zed, Gemini CLI, GitHub Copilot CLI, Cline, Goose, Kiro, Amp, Warp e LM Studio, além de uma instrução genérica para qualquer outro cliente MCP. O Claude Code foi o cliente executado de ponta a ponta.
O agente pode excluir meus contêineres ou volumes?
Não por padrão. Todo agente começa em somente leitura. Você pode mudar cada agente para Manage ou Full, ou bloqueá-lo com Block. Em Full, cleanup retorna primeiro uma prévia e um token, e só exclui o que estava nessa prévia. Os níveis controlam as ferramentas do Oxcart; não são um sandbox, então um agente com acesso ao shell ainda pode executar a CLI docker diretamente.
Por que não deixar o agente executar comandos docker?
Funciona, mas o agente lê muita saída bruta. Responder “por que este contêiner parou?” levou 159 tokens com a ferramenta diagnose do Oxcart, contra 2.014 com docker inspect e docker logs --tail 300: 13× menor. Em uma sessão do Claude Code por tarefa (indicativa), encontrar um erro nos logs levou 4.2 s em vez de 31.0 s.
O servidor MCP envia meus dados para algum lugar?
Não. Ele só se comunica com o socket do mecanismo local e não faz conexões de rede próprias. Todas as chamadas são gravadas em um registro de atividades no Mac. Imagens ainda são baixadas de registros quando uma ferramenta inicia ou compila algo que precisa delas, como faria docker run.
Meu agente pode executar código em um contêiner descartável?
Sim, com a ferramenta sandbox: um contêiner descartável sem rede, a menos que o agente esteja no nível Full e a solicite, limitado a 2 GiB de memória e 1.024 processos.
Fontes e método
- Tamanhos das respostas: medidos em 2026-10-10 com cinco contêineres de teste; tokens estimados como caracteres ÷ 4.
- Sessões: Claude Code 2.1.296 com
claude-opus-5-5, Oxcart 0.1.0, uma execução por tarefa e configuração. - Dados de velocidade: Oxcart 0.1.2, 2026-10-10, Apple M5 Max, 8 CPUs e 12 GiB; os ambientes comparados foram medidos mais cedo no mesmo dia, no mesmo Mac e com a mesma estrutura de testes, usando o cliente docker 29.4.