Qué necesita de Docker un agente de programación
Un agente que trabaja en un proyecto real repite unas pocas preguntas: qué está en ejecución, qué app usa el puerto 3000, por qué se ha detenido este contenedor, qué dicen los registros, si puede ejecutar las pruebas en un entorno desechable. Con solo una shell, las responde ejecutando docker ps, docker inspect y docker logs, y leyendo cada línea que devuelven. Funciona, pero es lento y caro: en cada turno entran JSON sin procesar y cientos de líneas de registros en el contexto del modelo.
Un servidor MCP convierte esas preguntas en herramientas que devuelven directamente la respuesta. Las herramientas de Oxcart se organizan según las preguntas, en lugar de los endpoints de la API de Docker, de modo que una llamada sustituye una cadena de comandos.
Las 13 herramientas
| Intención | Herramientas | Nivel mínimo que las muestra |
|---|---|---|
| Ver | status, projects, ports, images, logs | Read only |
| Explicar | diagnose: códigos de salida, terminaciones por falta de memoria, comprobaciones de salud fallidas, problemas de puertos y las líneas relevantes de los registros | Read only |
| Actuar | container (iniciar, detener, reiniciar), exec, compose (up, down), sandbox sin red | Manage |
| Modificar y limpiar | build, remove, cleanup (primero una vista previa), sandbox con red | Full |
status muestra cada proyecto Compose con su carpeta, rama Git y URL de localhost, de modo que «la app del puerto 3000» significa lo mismo para ti y tu agente. Los clientes suscritos a recursos reciben avisos de fallos, terminaciones por falta de memoria o cambios de salud en cuanto ocurren, sin consultas periódicas.
Respuestas más pequeñas, sesiones más baratas
Lo que lee un agente para responder cada pregunta: Oxcart frente a la salida de la CLI docker que leería de otro modo, medido en el mismo instante y con los mismos contenedores:
| Pregunta | MCP de Oxcart | Equivalente con la CLI docker | CLI docker | Factor de reducción |
|---|---|---|---|---|
| ¿Por qué se detuvo este contenedor? | 159 | inspect + logs --tail 300 | 2,014 | 13× |
| ¿Hay errores en las últimas 500 líneas de registros? | 39 | logs --tail 500 | 703 | 18× |
| ¿Qué está en ejecución? | 106 | ps -a + stats --no-stream + compose ls -a | 332 | 3,1× |
Cinco contenedores de prueba (uno que falla, uno con una comprobación de salud fallida, uno terminado por falta de memoria, un proyecto Compose y un puerto publicado). Las respuestas de diagnose y logs mantienen su tamaño por mucho que crezcan los registros. La lista de herramientas cuesta 510 tokens una vez por sesión en el nivel de solo lectura (6 herramientas), y 1,463 con las 13.
Las sesiones completas muestran lo mismo. Claude Code con Claude Opus 5.5 respondió dos preguntas cotidianas, una vez solo con la CLI docker y otra con el servidor MCP de Oxcart. Ambas variantes respondieron correctamente las dos preguntas.
| Tarea | Tiempo | Coste | Tokens | Turnos |
|---|---|---|---|---|
«¿worker está dando errores? Muéstrame el error.» | 4.2 s frente a 31.0 s | $0.022 frente a $0.157 | 10,686 frente a 52,266 | 2 frente a 8 |
«Mi contenedor api se detiene constantemente. ¿Por qué?» | 8.5 s frente a 14.9 s | $0.036 frente a $0.070 | 11,283 frente a 19,510 | 2 frente a 4 |
Una sesión por tarea con y sin Oxcart, sobre contenedores de prueba sintéticos, Oxcart 0.1.0: solo orientativo. El coste depende de la caché de prompts y no se alternó el orden de ejecución.
Configura el servidor MCP de Oxcart en cualquier agente de programación
- Instala Oxcart. Descarga Oxcart (chip de Apple, macOS 26 o posterior) y ábrelo. La configuración se realiza sin conexión y tarda segundos.
- Copia la frase de configuración. Abre MCP Integrations en la barra lateral de Oxcart y copia la frase: «Configura el servidor MCP de Oxcart: ejecuta
/Applications/Oxcart.app/Contents/Helpers/oxcart agent setupy sigue sus instrucciones.» - Pégala en tu agente. Pégala en Claude Code, Codex, Cursor o cualquier agente que pueda ejecutar comandos. El agente ejecuta el comando, lee los pasos que le corresponden y registra un servidor llamado
oxcart. - Pregunta por tus contenedores. Pregunta «¿qué está en ejecución?» o «¿por qué se detuvo
api?». El agente aparece en la página MCP Integrations, en modo de solo lectura, con cada llamada en su registro de actividad. - Aumenta el nivel si quieres. Establece el agente en Manage para que pueda iniciar, detener, usar exec y ejecutar Compose, o en Full para que pueda compilar, eliminar y limpiar. Block rechaza todas las llamadas.
Si tu agente no puede ejecutar comandos (Claude Desktop, LM Studio y apps similares), Oxcart muestra un fragmento JSON para añadir a la configuración MCP de la app. Para Claude Code, el comando directo es:
claude mcp add -s user oxcart -- /Applications/Oxcart.app/Contents/Helpers/oxcart mcp --client claude-code Para Codex, codex mcp add oxcart -- /Applications/Oxcart.app/Contents/Helpers/oxcart mcp --client codex registra el servidor para la CLI de Codex y la extensión del IDE.
Niveles de permisos que ajustas por agente
| Nivel | El agente puede |
|---|---|
| Read only (predeterminado) | Ver contenedores, registros, puertos, proyectos e imágenes; diagnosticar fallos |
| Manage | Además, iniciar, detener y reiniciar, ejecutar comandos, Compose up y down, y entornos aislados sin red |
| Full | Además, compilar, eliminar y limpiar, y dar acceso a la red a los entornos aislados |
| Block | Nada: no se muestra ninguna herramienta, se rechazan todas las llamadas y se explica el motivo al agente |
Las herramientas por encima del nivel del agente ni siquiera aparecen, lo que también reduce su contexto. Cada llamada queda registrada en tu Mac y se muestra en la página MCP Integrations; nada sale del Mac. Los niveles regulan lo que las herramientas de Oxcart hacen para un agente. No son un entorno aislado: un agente que pueda ejecutar comandos de shell puede seguir ejecutando docker por su cuenta, así que combínalos con los permisos de comandos del propio agente.
Agentes con instrucciones de configuración
Claude Code, Claude Desktop, Codex, Cursor, VS Code con Copilot, Devin Desktop, Zed, Gemini CLI, GitHub Copilot CLI, OpenCode, Cline, Junie, JetBrains AI Assistant, Goose, Kiro, Amp, Warp y LM Studio, además de un paso para cualquier otro cliente MCP. Las instrucciones proceden de tu copia instalada de Oxcart (oxcart agent setup), con las rutas reales de tu Mac, por lo que funcionan sin conexión y corresponden a tu versión.
Contenedores para flujos de trabajo con agentes más allá de MCP
- Dev Containers: ejecuta el agente dentro de un Dev Container para que su shell, herramientas y red permanezcan en el contenedor del proyecto. Oxcart ejecuta la CLI de Dev Containers; consulta Dev Containers y Testcontainers en Mac.
- Ciclos de desarrollo rápidos: los agentes ejecutan y eliminan contenedores constantemente. Oxcart registró 42 ms para
docker run --rmy 77 ms para detener y eliminar 20 contenedores, los mejores resultados de los tres entornos que probamos (comparativas). - Servicios Compose: la herramienta
composedel agente levanta y detiene proyectos en el nivel Manage; consulta Docker Compose en equipos con chip de Apple.
Preguntas
¿Existe un servidor MCP para contenedores Docker en Mac?
Sí. Oxcart incluye oxcart mcp, un servidor MCP stdio local con 13 herramientas para estado, diagnóstico, registros, puertos, imágenes, exec, Compose, compilaciones, entornos aislados y limpieza. No escucha en ningún puerto de red ni necesita un token de autenticación.
¿Cómo conecto Claude Code con mis contenedores Docker?
Pega la frase de configuración de Oxcart en Claude Code o ejecuta claude mcp add -s user oxcart -- /Applications/Oxcart.app/Contents/Helpers/oxcart mcp --client claude-code. Claude Code mostrará el servidor oxcart y podrá llamar a sus herramientas.
¿Funciona con Codex, Cursor y VS Code con Copilot?
Oxcart tiene instrucciones de configuración para 18 clientes identificados por nombre, incluidos Codex, Cursor, VS Code con Copilot, Claude Desktop, Zed, Gemini CLI, GitHub Copilot CLI, Cline, Goose, Kiro, Amp, Warp y LM Studio, y un paso genérico para cualquier otro cliente MCP. Claude Code es el cliente que se probó de principio a fin.
¿El agente puede eliminar mis contenedores o volúmenes?
De forma predeterminada, no. Todos los agentes empiezan en modo de solo lectura. Puedes establecer cada agente en Manage o Full, o bloquearlo con Block. En Full, cleanup devuelve primero una vista previa y un token de confirmación, y solo elimina lo que aparecía en esa vista previa. Los niveles regulan las herramientas de Oxcart; no son un entorno aislado, así que un agente con acceso a la shell puede seguir ejecutando la CLI docker directamente.
¿Por qué no dejar que el agente ejecute comandos docker sin más?
Funciona, pero el agente lee mucha salida sin procesar. Responder «¿por qué se detuvo este contenedor?» requirió 159 tokens con la herramienta diagnose de Oxcart frente a 2,014 con docker inspect y docker logs --tail 300: 13× menos. En una sesión de Claude Code por tarea (orientativa), encontrar un error en los registros llevó 4.2 s en lugar de 31.0 s.
¿El servidor MCP envía mis datos a algún sitio?
No. Solo se comunica con el socket local del motor y no establece conexiones de red por su cuenta. Cada llamada se escribe en un registro de actividad en tu Mac. Las imágenes se siguen descargando de los registros cuando una herramienta inicia o compila algo que las necesita, igual que haría docker run.
¿Mi agente puede ejecutar código en un contenedor desechable?
Sí, con la herramienta sandbox: un contenedor desechable sin red, salvo que el agente esté en el nivel Full y la solicite, limitado a 2 GiB de memoria y 1,024 procesos.
Fuentes y método
- Tamaño de las respuestas: medido el 2026-10-10 con cinco contenedores de prueba; tokens estimados como caracteres ÷ 4.
- Sesiones: Claude Code 2.1.296 con
claude-opus-5-5, Oxcart 0.1.0, una ejecución por tarea y variante. - Cifras de velocidad: Oxcart 0.1.2, 2026-10-10, Apple M5 Max, 8 CPU y 12 GiB; los entornos comparados se midieron antes ese mismo día en el mismo Mac, con el mismo sistema de medición y el cliente docker 29.4.