Despliegue local (sandbox y contenedor)¶
Novedades en v1.6.0
- Una API key para el plugin en Odoo 14.0 a 19.0:
sandbox uphace que Odoo cree una API key para el usuarioadminy la guarda en el.envcomoODOO_API_KEY, sin imprimirla. Va en la opción Odoo API key del plugin, con Odoo password vacía. Ver Conectar el plugin al sandbox. - Corregido, un sandbox que nunca arrancaba: alrededor de un sandbox
nuevo de cada 64 recibía una contraseña de base de datos que empieza con
"-", que la imagen de Odoo 11.0 y posteriores leía como una opción. Las
contraseñas generadas ya no empiezan con "-". Solo un sandbox de Odoo 11.0
o posterior que nunca arrancó con una así te pide correr
sandbox destroy --yesy luegosandbox up, y no se pierde nada. Uno de la 10.0, o uno que ya funcionó, sigue igual. Ver Solución de problemas. - La imagen del modo contenedor es
ghcr.io/transgenia/odoo-mcp-tools:1.6.0.
Novedades en v1.5.1
- La imagen del modo contenedor es
ghcr.io/transgenia/odoo-mcp-tools:1.5.1. - El modo contenedor crea la marca
${CLAUDE_PLUGIN_DATA}/diagnostics/container-mode, así el hook de inicio de sesión del plugin no avisa mientras usas el servidor en contenedor.
Novedades en v1.5.0
- La imagen del modo contenedor es
ghcr.io/transgenia/odoo-mcp-tools:1.5.0. - El archivo
odoo.envdel modo contenedor puede fijar el perfil de permisos (ODOO_POLICY,standardpor defecto), un archivo de política (ODOO_POLICY_FILE) y la carpeta de auditoría (ODOO_AUDIT_DIR). Ver Política de permisos. - En el sandbox, el ejercicio de borrado y los cambios estilo Studio
necesitan otro perfil que
standard:fullpara borrar,builderpara campos, vistas y automatizaciones.
Novedades en v1.4.1
La imagen del modo contenedor es ghcr.io/transgenia/odoo-mcp-tools:1.4.1.
El modo contenedor es para Claude Code sin Python.
Novedades en v1.4.0
El sandbox cubre Odoo Community de la 10.0 a la 19.0 (antes 16.0 a 19.0), cada serie con una versión de PostgreSQL compatible.
Nuevo en v1.3.0
/odoo-tools:deploy-local levanta infraestructura local provista por
Transgenia. Solo corre cuando tú lo invocas y confirmas: ningún hook
ejecuta Docker por su cuenta.
Normalmente llegas aquí desde la ruta guiada /odoo-tools:odoo-setup-mcp
(fase 1, «no tengo un Odoo para practicar» o «no puedo instalar Python»). El
comando también funciona solo.
Requisitos¶
- Docker con Compose v2 (
docker compose; el binario antiguodocker-composeno es compatible): Docker Desktop (Windows/macOS) o Docker Engine + el plugin compose (Linux). Ver docs.docker.com/get-docker. - Para el sandbox:
python33.9+ (el mismo que ya pide el plugin) y ~2 GB de disco.
Modo A: sandbox local de Odoo¶
Solo Odoo Community (CE)
El sandbox es Odoo Community. Transgenia no puede proveer instancias de Odoo Enterprise (se licencia por suscripción con Odoo S.A.) ni de Odoo Online (el SaaS de Odoo S.A. en odoo.com). Para usarlas, conecta tu propia instancia Enterprise o tu base Online. En Online, el plan debe incluir acceso a la API externa: sin él la conexión falla aunque las credenciales sean correctas (ver Solución de problemas).
Levanta PostgreSQL + Odoo Community de la 10.0 a la 19.0 en tu equipo, con una base de datos lista (datos demo opcionales) para practicar sin tocar producción.
Odoo 10.0 a 16.0: solo para pruebas y migraciones
Odoo S.A. mantiene solo las tres últimas versiones (17.0, 18.0 y 19.0); de la
10.0 a la 16.0 ya no reciben parches de seguridad. Las imágenes oficiales
hasta la 15.0 son solo amd64: Docker Desktop (Apple Silicon, Windows ARM) las
emula, más lento; con Docker Engine en Linux ARM primero hay que registrar la
emulación amd64 (binfmt/QEMU, p. ej.
docker run --privileged --rm tonistiigi/binfmt --install amd64) o el
contenedor falla con "exec format error". Cada serie usa una versión de
PostgreSQL compatible:
| Odoo | PostgreSQL |
|---|---|
| 10.0, 11.0 | 10 |
| 12.0, 13.0 | 12 |
| 14.0, 15.0 | 13 |
| 16.0 a 19.0 | 16 |
Cada semana un workflow levanta las diez series y las verifica a través del servidor MCP del plugin, que inicia sesión como se indica abajo: con la API key en 14.0 a 19.0 (por JSON-2 en la 19.0) y con la contraseña en 10.0 a 13.0.
El comando te pregunta, una cosa a la vez: versión de Odoo (18.0 recomendada),
datos demo, idioma (p. ej. es_MX) y puerto (8069 por defecto). Después ejecuta:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/deploy_local.py" sandbox up --odoo 18.0 --lang es_MX --port 8069
Qué hace, en orden:
- Escribe
docker-compose.yml,odoo.confy.enven~/.odoo-tools/sandbox(carpeta0700,.env0600). Las contraseñas (PostgreSQL, master de Odoo y usuarioadmin) se generan localmente y nunca se imprimen; desde la v1.6.0 ninguna empieza con "-", que la imagen de Odoo 11.0 y posteriores leía como una opción. - Descarga las imágenes de
ghcr.io/transgenia/odooyghcr.io/transgenia/postgres: copias sin cambios de las imágenes oficiales, actualizadas cada semana por Transgenia. Si ese registro no responde, usa las imágenes oficiales de Docker Hub. - Arranca los contenedores con Odoo publicado solo en
127.0.0.1. - Crea la base de datos (por defecto
sandbox) y verifica el login. - En Odoo 14.0 y posteriores, hace que Odoo cree una API key para el
usuario
admin, conodoo shellen un contenedor de un solo uso del sandbox y el propiores.users.apikeysde Odoo. Comprueba que la key inicia sesión y la guarda en el mismo.envcomoODOO_API_KEY, sin imprimirla nunca. Odoo la lista como "odoo-tools sandbox" en Preferencias > Account Security. Las ejecuciones siguientes la reutilizan, o la reemplazan si se borró en Odoo. Odoo 10.0 a 13.0 no tienen API keys y se quedan con la contraseña; lo mismo un sandbox donde la key no se pudo crear: el script dice por qué, y el siguientesandbox uplo intenta de nuevo.
Al terminar muestra la URL, la base, el login y dónde están la contraseña
(ODOO_ADMIN_PASSWORD en ~/.odoo-tools/sandbox/.env) y, en 14.0 y
posteriores, la API key (ODOO_API_KEY en el mismo archivo); su campo
plugin_credential dice qué credencial va en las opciones del plugin. Abre el
archivo tú en tu editor: Claude no lo lee ni copia la contraseña ni la key.
Nunca pegues la key ni la contraseña en el chat.
Conectar el plugin al sandbox¶
/plugin → odoo-tools → Configure options:
| Opción | Valor |
|---|---|
| Odoo URL | http://localhost:8069 (o el puerto que elegiste) |
| Odoo database | sandbox |
| Odoo login | admin |
| Odoo API key | Odoo 14.0 a 19.0: el valor de ODOO_API_KEY del .env. Vacía en 10.0 a 13.0 |
| Odoo password (Odoo < 14 only) | Odoo 10.0 a 13.0: el valor de ODOO_ADMIN_PASSWORD. Vacía en 14.0 a 19.0 |
Si el resumen dice que el sandbox no tiene API key (api_key empieza con
none:), usa la contraseña como en 10.0 a 13.0: en el sandbox funciona también
en el campo Odoo password, aunque su título diga Odoo < 14 only. El motivo
está en ese mismo resumen, y el siguiente sandbox up vuelve a intentar crear la
key.
Reinicia Claude y verifica con odoo_version. Las opciones del plugin son una
sola conexión: para volver a producción, captura de nuevo los datos de producción.
En el sandbox puedes usar el Permission profile builder para practicar
campos, vistas y automatizaciones, o full para practicar borrados. El ejemplo
docs/policy-examples/sandbox-builder.json del plugin (perfil builder) abre
además los borrados y los usuarios de prueba. Al volver a producción, regresa el
perfil a standard (o readonly). Ver Ejemplos.
Administrar el sandbox¶
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/deploy_local.py" sandbox status
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/deploy_local.py" sandbox down # detener, conserva datos
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/deploy_local.py" sandbox up # volver a arrancar; en 14.0+ crea la API key si falta
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/deploy_local.py" sandbox logs
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/deploy_local.py" sandbox destroy --yes # borra base y archivos
También puedes pedirlo en lenguaje natural: /odoo-tools:deploy-local status.
Cambiar de versión de Odoo
Una base creada con Odoo 18 no la abre Odoo 17 (ni al revés). El script lo
detecta y se detiene: usa destroy --yes primero, u otra carpeta con --dir.
Modo B: servidor MCP en contenedor¶
Para equipos con Claude Code sin Python 3.9+. Es el mismo servidor MCP, empaquetado por Transgenia como imagen Docker (amd64 y arm64), conectado a tu Odoo existente:
-
El comando crea
~/.odoo-tools/mcp/odoo.env(solo tu usuario) con marcadores de posición; tú llenas URL, base, login y API key en tu editor. El archivo trae también, comentadas, las líneas de la política de permisos y de la auditoría:# ODOO_READONLY=1 # recomendado para los primeros pasos # ODOO_POLICY=standard # perfil: readonly, standard, builder o full # ODOO_POLICY_FILE=/policy/policy.json # opcional, montado en solo lectura # ODOO_AUDIT_DIR=/audit # sin ella, las líneas de auditoría van a docker logsEl perfil por defecto es
standard(sin borrados, sin cambios estilo Studio, sin secretos);fullconserva el comportamiento de la 1.4. Con un archivo de política o una carpeta de auditoría, agrega-v <ruta absoluta del archivo de política>:/policy/policy.json:roy-v <ruta absoluta de una carpeta de auditoría>:/auditantes del nombre de la imagen en el comando del paso 2.Después marca la carpeta de datos del plugin como modo contenedor. La marca le dice al hook de inicio de sesión del plugin que el servidor en uso es el del contenedor, así deja de reportar como nunca conectado al servidor propio del plugin, que queda sin usar:
-
Lo registra en Claude Code (te muestra el comando antes):
-
Reinicia Claude y verifica con
odoo_versiondel servidorodoo-tools-docker. Si el servidor propio del plugin también está configurado, las herramientas aparecen dos veces: conserva uno. Para deshacer este modo:claude mcp remove odoo-tools-dockeryrm "${CLAUDE_PLUGIN_DATA}/diagnostics/container-mode".
En Windows el archivo es %USERPROFILE%\.odoo-tools\mcp\odoo.env; créalo desde
tu editor.
Mientras exista la marca container-mode, el hook de inicio de sesión del
plugin no muestra ningún aviso: el servidor en uso es el del contenedor, así que
se espera que el servidor propio del plugin quede sin usar.
De sandbox a producción¶
El sandbox es para aprender y probar. Para llevar Odoo + IA a producción (hospedaje, seguridad, migraciones, integraciones, capacitación de tu equipo), Transgenia ofrece despliegue asistido y soporte por sus canales oficiales: dev@transgenia.org · WhatsApp +52 55 8034 0405. Ver Soporte.