Si ya trabajas con un agente —Claude Code, Codex, Cursor— ese agente tiene modelo y credenciales. ddd-cli no necesita los suyos: se conecta por MCP y le presta siete herramientas deterministas.
Un comando
claude mcp add ddd -- npx -y @nestjslatam/ddd-cli mcp
Para cualquier otro cliente, en su mcp.json:
{
\"mcpServers\": {
\"ddd\": { \"command\": \"npx\", \"args\": [\"-y\", \"@nestjslatam/ddd-cli\", \"mcp\"] }
}
}
Las siete herramientas
| Herramienta | Qué hace |
|---|---|
ddd_list | Inventaría cada estereotipo que exporta la librería instalada |
ddd_describe | La declaración de tipos real de un estereotipo |
ddd_new | Genera desde una plantilla determinista |
ddd_extend | Anda una subclase con todos los miembros abstractos |
ddd_validate | Comprueba el código contra las cuatro reglas del idioma |
ddd_aggregate_schema | El JSON Schema que debe cumplir el modelo de un agregado |
ddd_render_aggregate | Convierte una especificación en ficheros |
Un prompt que funciona
Lee el
ddd-libque tengo instalado y modela un agregadoCargopara un dominio de transporte marítimo: un identificador de seguimiento, una especificación de ruta con origen y destino, un peso bruto y un viaje actual. Valida lo que escribas antes de enseñármelo.
El agente llamará a ddd_list, ddd_describe, ddd_aggregate_schema, ddd_render_aggregate y ddd_validate en el orden que necesite.
Por qué el reparto funciona
El agente decide la frontera del agregado, las invariantes y los nombres. Eso es criterio, y es lo que un modelo hace bien.
El CLI hace lo que un modelo hace mal: leer las declaraciones instaladas con exactitud, renderizar de forma determinista y auditar contra el idioma. ddd_describe devuelve hechos, no prosa a propósito — la explicación la escribe el agente.
Y hay un bucle de corrección que merece señalar: ddd_aggregate_schema publica el esquema que la especificación debe cumplir, y ddd_render_aggregate devuelve los problemas campo por campo cuando no lo cumple. Así el agente se corrige solo, sin que haya nadie mirando.
Nada toca el disco sin permiso
Ninguna llamada escribe salvo que pase write: true, y aun así jamás sobrescribe un fichero existente. Un agente trabajando sin supervisión no debe pisar código de dominio escrito a mano, y ésa es una decisión del servidor, no una recomendación al usuario.
Ojo con una distinción
Esto vale para el servidor MCP. Los comandos sueltos ddd generate:aggregate y ddd explain (sin --raw) sí necesitan un proveedor de modelo. Lo que no necesita clave es el camino MCP, porque ahí el modelo lo pone tu agente.
La referencia completa está en la documentación del servidor MCP, y la guía del CLI lo recorre con un dominio real.
