Open Source · Infraestructura · Odoo

Publicamos MCP-Odoo-Tools: plugin open source (MIT) para conectar Odoo con agentes de IA desde la versión 10 hasta la 19

Llevas semanas escuchando que "la IA puede hablar con tu ERP". Lo que nadie explica es que Odoo renombró decenas de modelos entre la versión 12 y la 19, y que un servidor MCP que no resuelva eso en tiempo de ejecución le miente al agente. Aquí está lo que construimos para resolverlo, por qué lo publicamos con licencia MIT y qué no incluimos a propósito.

Respuesta breve. MCP-Odoo-Tools es un servidor MCP open source (MIT) que conecta Claude, Gemini, Mistral o cualquier agente que implemente el protocolo MCP con Odoo Community, Enterprise y online (SaaS), desde la versión 10 hasta la 19. Expone 28 herramientas al agente en la versión 1.4.0 (consultar facturas, órdenes de venta, inventario, contactos, importaciones y más) con una capa de compatibilidad que traduce automáticamente los nombres de modelos y campos que cambiaron entre versiones (como account.invoice → account.move en v13). Se distribuye como plugin de Claude Code, corre con python3 sin dependencias externas y el código está publicado en GitHub bajo licencia MIT.
Diagrama 1. Mapa del artículo: el problema de los modelos renombrados, qué es el servidor MCP, sus 28 herramientas, la instalación, lo que queda fuera de la capa pública, por qué MIT y cómo empezar.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px'}}}%%
mindmap
  root(("MCP-Odoo-Tools, Odoo 10 a 19 con agentes de IA"))
    El problema
      modelos renombrados entre versiones
      fallo silencioso del agente
    Qué es
      servidor MCP en Python
      capa de compatibilidad
      tres transportes
      caché y observabilidad opcionales
    28 herramientas
      lectura y exportación
      escritura y ejecución
      metadatos e importación
    Instalación
      plugin de Claude Code
      python3 sin dependencias
    Fuera de la capa pública
      CFDI y SAT
      VoBo
      backup S3 y visión
    Por qué MIT
      sin dependencia de proveedor
      ecosistema
    Cómo empezar
      diagnóstico
      piloto de solo lectura
      gobernanza antes de escribir
Diagrama 1. Mapa del artículo. Cada rama corresponde a una sección; la lectura completa toma unos ocho minutos.

El problema real: los modelos de Odoo cambian entre versiones

Odoo es el ERP más adoptado por PyMEs en Latinoamérica, pero viene con una particularidad que los consultores raramente mencionan antes de firmar: cada versión mayor reorganiza o renombra modelos y campos. El ejemplo más conocido es account.invoice, que pasó a ser account.move en Odoo 13. Hay decenas de cambios similares entre las versiones 10 y 19.

Para un humano que conoce el historial, esto es una curva de aprendizaje. Para un agente de IA, es un punto de falla silencioso: el agente llama al modelo antiguo con confianza, el ERP devuelve un error que parece de permisos o de red, y el agente no puede distinguir si es un problema de credenciales o de nomenclatura.

Podríamos haber construido un servidor MCP que asumiera Odoo 19 y listo. Pero eso excluye a miles de empresas que corren versiones 14, 16 o 17 perfectamente funcionales y no tienen razón para migrar solo porque llegó la IA.

Diagrama 2. Línea de tiempo con tres renombres de modelos de Odoo: product.uom a uom.uom en la versión 12, account.invoice a account.move en la 13 y mail.channel a discuss.channel en la 17.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'titleColor': '#FBA225', 'cScale0': '#1a2640', 'cScale1': '#24304d', 'cScale2': '#2e3c5e', 'cScaleLabel0': '#FFFFFF', 'cScaleLabel1': '#FFFFFF', 'cScaleLabel2': '#FFFFFF'}}}%%
timeline
    title Renombres de modelos en Odoo que un agente debe conocer
    Odoo 12 : product.uom pasa a uom.uom
    Odoo 13 : account.invoice pasa a account.move
            : account.invoice.line pasa a account.move.line
    Odoo 17 : mail.channel pasa a discuss.channel
Diagrama 2. Tres renombres documentados en las notas de versión de Odoo. Son ejemplos, no la lista completa: el mapa declarativo del plugin cubre decenas de cambios de modelo y de campo entre la 10 y la 19.
Diagrama 3. Secuencia que compara un servidor MCP sin capa de compatibilidad, que devuelve un error genérico al pedir account.invoice en Odoo 16, con MCP-Odoo-Tools, que detecta la versión y consulta account.move.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'actorTextColor': '#FFFFFF', 'actorBkg': '#1a2640', 'actorBorder': '#FBA225', 'signalColor': '#FBA225', 'signalTextColor': '#FFFFFF', 'labelBoxBkgColor': '#101828', 'labelBoxBorderColor': '#FBA225', 'labelTextColor': '#FBA225', 'noteBkgColor': '#101828', 'noteTextColor': '#FBA225', 'noteBorderColor': '#FBA225'}}}%%
sequenceDiagram
    participant A as Agente de IA
    participant S as Servidor MCP sin compatibilidad
    participant C as MCP-Odoo-Tools
    participant O as Odoo 16
    A->>S: buscar facturas en account.invoice
    S->>O: search_read account.invoice
    O-->>S: error, el modelo no existe
    S-->>A: error genérico
    Note over A: ¿credenciales, red o nomenclatura?
El agente no puede distinguirlo A->>C: buscar facturas C->>O: odoo_version O-->>C: 16.0, Community C->>O: search_read account.move O-->>C: registros C-->>A: facturas correctas
Diagrama 3. El mismo pedido por dos caminos. Sin capa de compatibilidad, el error de Odoo llega al agente sin contexto; con ella, la detección de versión resuelve el nombre correcto antes de consultar.

Qué es MCP-Odoo-Tools

MCP-Odoo-Tools es un servidor Python que implementa el Protocolo de Contexto de Modelo (MCP, publicado por Anthropic como estándar abierto) sobre Odoo. El código está publicado en GitHub bajo licencia MIT. Es una reescritura limpia (no deriva de ningún fork AGPL) y viene empaquetado como plugin de Claude Code.

Lo que lo distingue de una integración Odoo básica:

Capa de compatibilidad entre versiones. Un mapa declarativo cubre las diferencias de nombres de modelos y campos entre Odoo 10 y 19. Cuando el agente pide información sobre facturas, la capa determina en tiempo de ejecución si la instancia conectada usa account.invoice o account.move, sin que el agente (ni el operador) tengan que saber la versión de antemano.

Detección automática de versión y edición. El servidor identifica la versión exacta de Odoo (CE, EE u online), la edición y el modo de despliegue al conectarse. Esa información alimenta la capa de compatibilidad y el selector de transporte.

Tres transportes con selección automática. El servidor elige el transporte según la versión detectada y la credencial: JSON-2 (la API nueva de Odoo, disponible en saas~18.4 y 19.0+) cuando hay API Key, y JSON-RPC con respaldo XML-RPC en el resto. JSON-RPC y XML-RPC aceptan contraseña o API Key (las API Keys existen desde Odoo 14); JSON-2 solo acepta API Key. La preferencia se puede fijar con ODOO_TRANSPORT_PREF.

Caché de esquema opcional. Las llamadas repetidas a odoo_fields_get se sirven desde memoria (TTLCache con expiración configurable), lo que reduce la latencia en sesiones de trabajo intensivo.

Observabilidad integrada (opcional). Cada llamada RPC genera un span OpenTelemetry con atributos odoo.model, odoo.method y odoo.alias. Si no se configura un endpoint OTLP, el servidor arranca sin emitir trazas: degradación elegante, cero errores.

Diagrama 4. Arquitectura: el agente de IA habla con el cliente MCP, que por stdio llega a MCP-Odoo-Tools; dentro, la detección de versión alimenta la capa de compatibilidad y el selector de transporte, que conecta con Odoo.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'edgeLabelBackground': '#0E1220', 'clusterBkg': '#101828', 'clusterBorder': '#FBA225'}}}%%
flowchart LR
    A["Agente de IA
Claude, Gemini, Mistral u otro cliente MCP"] --> M["Cliente MCP
Claude Code u otro cliente MCP"] M -->|stdio| S["MCP-Odoo-Tools
servidor Python, licencia MIT"] S --> D["Detección de versión,
edición y despliegue"] D --> K["Capa de compatibilidad
Odoo 10 a 19"] K --> T["Selector de transporte
JSON-2, JSON-RPC, XML-RPC"] T --> O["Odoo
Community, Enterprise u online"]
Diagrama 4. Arquitectura del servidor. Todo corre en la máquina del operador; el único tramo hacia fuera es la conexión RPC con la instancia de Odoo.
Diagrama 5. Flujo de la capa de compatibilidad: según la versión detectada, el pedido de facturas se traduce a account.invoice en Odoo 10 a 12 o a account.move en 13 a 19, y la respuesta llega al agente sin que conozca la versión.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'edgeLabelBackground': '#0E1220', 'clusterBkg': '#101828', 'clusterBorder': '#FBA225'}}}%%
flowchart TD
    Q["El agente pide facturas"] --> V{"Versión detectada
por odoo_version"} V -->|"10, 11 o 12"| I["account.invoice"] V -->|"13 a 19"| M["account.move"] I --> R["search_read con el nombre correcto"] M --> R R --> A["Respuesta al agente,
que nunca conoció la versión"]
Diagrama 5. Resolución en tiempo de ejecución. El mapa es declarativo: agregar un renombre nuevo es editar la tabla, no el código del servidor.
Diagrama 6. Árbol de decisión del transporte: con API Key en saas~18.4 o 19.0 en adelante se usa JSON-2; en el resto, JSON-RPC con respaldo XML-RPC; la contraseña solo sirve en JSON-RPC y XML-RPC; ODOO_TRANSPORT_PREF fija la preferencia.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'edgeLabelBackground': '#0E1220', 'clusterBkg': '#101828', 'clusterBorder': '#FBA225'}}}%%
flowchart TD
    S["Conexión a Odoo"] --> C{"¿Credencial?"}
    C -->|"API Key
desde Odoo 14"| V{"¿saas~18.4 o 19.0 en adelante?"} C -->|"Contraseña"| J["JSON-RPC"] V -->|"Sí"| J2["JSON-2
la API nueva de Odoo"] V -->|"No"| J J -->|"si falla"| X["XML-RPC
respaldo"] P["ODOO_TRANSPORT_PREF
fija la preferencia"] -.-> C
Diagrama 6. Selección automática de transporte. JSON-2 solo acepta API Key; JSON-RPC y XML-RPC aceptan contraseña o API Key.
Diagrama 7. Secuencia de odoo_fields_get: la primera llamada consulta Odoo y guarda en la caché TTL, las repetidas se sirven desde memoria, y cada llamada RPC emite un span OpenTelemetry si hay endpoint OTLP configurado.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'actorTextColor': '#FFFFFF', 'actorBkg': '#1a2640', 'actorBorder': '#FBA225', 'signalColor': '#FBA225', 'signalTextColor': '#FFFFFF', 'labelBoxBkgColor': '#101828', 'labelBoxBorderColor': '#FBA225', 'labelTextColor': '#FBA225', 'noteBkgColor': '#101828', 'noteTextColor': '#FBA225', 'noteBorderColor': '#FBA225'}}}%%
sequenceDiagram
    participant A as Agente
    participant S as MCP-Odoo-Tools
    participant C as Caché TTL
    participant O as Odoo
    participant T as Endpoint OTLP opcional
    A->>S: odoo_fields_get res.partner
    S->>C: ¿está en caché?
    alt primera llamada
        C-->>S: no
        S->>O: fields_get
        O-->>S: campos
        S->>C: guardar con expiración
    else llamada repetida
        C-->>S: campos desde memoria
    end
    S-->>A: campos del modelo
    S--)T: span con odoo.model, odoo.method y odoo.alias
    Note over T: sin endpoint configurado
no se emiten trazas y no hay error
Diagrama 7. Caché de esquema y observabilidad, ambas opcionales. La caché reduce latencia en sesiones intensivas; las trazas degradan con elegancia cuando no hay a dónde enviarlas.

Las herramientas disponibles

El servidor expone 28 herramientas (versión 1.4.0) organizadas por dominio de operación:

CategoríaHerramientaQué hace
Lecturaodoo_search_readBusca y devuelve registros con filtros ORM
Lecturaodoo_fields_getDescribe los campos de un modelo (con caché opcional)
Lecturaodoo_search_countCuenta registros sin traer datos
Exportaciónodoo_export_records_jsonExporta registros vía ORM respetando permisos
Exportaciónodoo_export_records_csvLo mismo en formato CSV
Escrituraodoo_create / odoo_writeCrea o actualiza registros
Escrituraodoo_unlinkElimina registros
Escrituraodoo_executeLlama a cualquier método del modelo
Lecturaodoo_read_groupAgrupa y agrega registros por campo
Metadatosodoo_versionDevuelve la versión y edición de la instancia
Metadatosodoo_list_modelsLista los modelos instalados
Odoo Onlineodoo_online_profileSerie, despliegue, transporte, claves y límites del plan en una sola lectura
Importaciónodoo_import_preview / odoo_importSimula y ejecuta importaciones atómicas con el importador de Odoo

La previsualización no guarda las filas importadas, pero puede consumir números de secuencia y disparar webhooks de acciones automatizadas. Pruébala en una copia aislada antes de usarla en producción.

Las 28 herramientas de la versión 1.4.0 cubren conexión, lectura, exportación, escritura, cambios de esquema al estilo Studio e importaciones. Con el modo de solo lectura activado, el servidor rechaza toda herramienta de escritura antes de tocar Odoo. La tabla muestra las más utilizadas; el catálogo completo está en el README del repositorio.

Diagrama 8. Mapa de las herramientas por categoría: lectura, exportación, escritura, metadatos, Odoo Online, importación y cambios de esquema estilo Studio.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px'}}}%%
mindmap
  root(("28 herramientas en la versión 1.4.0"))
    Lectura
      odoo_search_read
      odoo_fields_get
      odoo_search_count
      odoo_read_group
    Exportación
      odoo_export_records_json
      odoo_export_records_csv
    Escritura
      odoo_create y odoo_write
      odoo_unlink
      odoo_execute
    Metadatos
      odoo_version
      odoo_list_models
    Odoo Online
      odoo_online_profile
    Importación
      odoo_import_preview
      odoo_import
    Esquema estilo Studio
      campos y vistas sin Python
Diagrama 8. Las herramientas más usadas agrupadas por dominio. El catálogo completo de 28 está en el README del repositorio.
Diagrama 9. Flujo de importación: el archivo pasa por odoo_import_preview; si hay errores se corrige y se repite; si no, odoo_import ejecuta la importación atómica. La previsualización puede consumir secuencias y disparar webhooks, por eso se prueba en una copia aislada.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'edgeLabelBackground': '#0E1220', 'clusterBkg': '#101828', 'clusterBorder': '#FBA225'}}}%%
flowchart LR
    F["Archivo CSV o filas"] --> P["odoo_import_preview
simulación con el importador de Odoo"] P --> R{"¿Errores?"} R -->|"Sí"| C["Corregir el archivo"] --> P R -->|"No"| I["odoo_import
importación atómica"] I --> O["Registros en Odoo"] P -.->|"efectos posibles"| W["Consume números de secuencia
Dispara webhooks de acciones automatizadas"] W -.-> S["Probar primero en una copia aislada"]
Diagrama 9. Previsualizar antes de importar. La simulación no guarda filas, pero no es inocua: puede consumir números de secuencia y disparar webhooks de acciones automatizadas.
Diagrama 10. Compuerta del modo de solo lectura: con odoo_readonly activo, toda herramienta de escritura se rechaza antes de llegar a Odoo; las de lectura siguen ejecutándose.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'edgeLabelBackground': '#0E1220', 'clusterBkg': '#101828', 'clusterBorder': '#FBA225'}}}%%
flowchart TD
    T["Llamada a una herramienta"] --> K{"¿odoo_readonly activo?"}
    K -->|"No"| E["Se ejecuta en Odoo"]
    K -->|"Sí"| W{"¿Es de escritura?
create, write, unlink,
execute, import"} W -->|"No"| E W -->|"Sí"| R["Rechazada antes
de tocar Odoo"]
Diagrama 10. El modo de solo lectura es la base del piloto recomendado: el rechazo ocurre en el servidor MCP, antes de cualquier llamada RPC.

Instalación como plugin de Claude Code

El plugin se instala desde el marketplace del repositorio (/plugin marketplace add Transgenia/MCP-Odoo-Tools-CE-EE-and-online y /plugin install odoo-tools). El servidor arranca con python3 (3.9 o superior) sobre el código fuente incluido, sin descargar ni instalar dependencias. El skill odoo-setup-mcp guía la configuración inicial: URL de la instancia, credenciales y detección automática de versión. Las herramientas de Odoo corren como servidor MCP local (stdio) en Claude Code, que pide los valores de configuración (o defínelos con /plugin configure). No corren en Cowork ni en el chat de Claude: Cowork, en la nube o en tu equipo, omite este servidor porque sus opciones obligatorias no tienen valor por defecto y no pide valores, y el chat ignora el servidor MCP local de un plugin. Ambos cargan skills y comandos, pero no este servidor MCP local. Para Cowork y el chat, la ruta práctica es un conector remoto: una URL https hacia un servidor MCP en tu Odoo, con inicio de sesión en Odoo. Verificado el 21-oct-2026 contra la matriz oficial de Anthropic.

El plugin incluye también:

Nota sobre el marketplace: La versión 1.4.0 figura en el directorio de plugins de Claude y también se instala desde el repositorio de Transgenia; estar en el directorio no significa que Anthropic lo certifique o audite.

Diagrama 11. Instalación en cinco pasos, del marketplace del repositorio a la detección automática de versión, y dónde corre: Claude Code ejecuta el servidor MCP por stdio; Cowork (en la nube o en tu equipo) y el chat de Claude cargan skills y comandos, pero no este servidor MCP local, y para las herramientas de Odoo la ruta práctica es un conector remoto hacia un servidor MCP en tu Odoo, con inicio de sesión en Odoo.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'edgeLabelBackground': '#0E1220', 'clusterBkg': '#101828', 'clusterBorder': '#FBA225'}}}%%
flowchart TD
    A["/plugin marketplace add
Transgenia/MCP-Odoo-Tools-CE-EE-and-online"] --> B["/plugin install odoo-tools"] B --> C["python3 3.9 o superior
sin descargar dependencias"] C --> D["Skill odoo-setup-mcp
URL de la instancia y credenciales"] D --> E["Detección automática
de versión y edición"] E --> F{"¿Dónde corre el cliente?"} F -->|"Claude Code"| G["Servidor MCP local
por stdio"] F -->|"Chat de Claude
Cowork (en la nube o en tu equipo)"| H["Carga skills y comandos,
no este servidor MCP local"] H -.->|"ruta práctica para
las herramientas de Odoo"| R["Conector remoto: URL https
a un servidor MCP en tu Odoo,
con inicio de sesión en Odoo"]
Diagrama 11. Instalación y alcance de ejecución. El servidor es local por diseño; Cowork y el chat de Claude no cargan este servidor MCP local, y para ellos la ruta práctica es un conector remoto.

Lo que deliberadamente no está en la capa pública

La versión pública contiene el núcleo genérico. Lo que dejamos fuera a propósito:

Estas capas tienen sentido solo en el contexto de una implementación supervisada. El núcleo público es genuinamente útil por sí solo; no son funciones "recortadas para vender más" sino capas que requieren un proceso de onboarding con el equipo.

Si en el pipeline de conexión entre tu Odoo y Claude quieres más contexto sobre la capa básica de API Key antes del plugin, en Conecta Odoo a Claude con una API Key y crea vistas sin Python explicamos las opciones base y sus limitaciones reales.

Diagrama 12. Dos bloques: el núcleo público bajo MIT con las 28 herramientas, la capa de compatibilidad, los transportes, skills, agentes y CLI; y las capas de implementación supervisada con la capa fiscal CFDI y SAT, el middleware VoBo, backup a S3 y visión de facturas.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'edgeLabelBackground': '#0E1220', 'clusterBkg': '#101828', 'clusterBorder': '#FBA225'}}}%%
flowchart LR
    subgraph P["Núcleo público, licencia MIT"]
        P1["28 herramientas"]
        P2["Capa de compatibilidad 10 a 19"]
        P3["Tres transportes"]
        P4["Skills, agentes y CLI de respaldo"]
    end
    subgraph S["Implementación supervisada"]
        S1["Capa fiscal MX, CFDI y SAT"]
        S2["Middleware VoBo"]
        S3["Backup a S3"]
        S4["Visión y parsing de facturas"]
    end
    P -->|"requiere onboarding con el equipo"| S
Diagrama 12. Lo público y lo supervisado. El núcleo es útil por sí solo; las capas de la derecha dependen de un proceso de onboarding, no de un candado comercial.

Por qué código abierto y por qué MIT

Hay un argumento pragmático: un servidor MCP cerrado crea dependencia de proveedor. Si cambia el precio, el modelo de negocio o desaparece la empresa, el agente de IA deja de funcionar. Con código abierto (MIT), la empresa tiene el código, puede hostearlo internamente y puede contratar a cualquier proveedor para mantenerlo. El plugin sigue siendo funcional aunque Transgenia no exista mañana.

Hay también un argumento de ecosistema: cuantas más empresas contribuyen a un servidor MCP de Odoo, más robusto se vuelve para todos. La capa de compatibilidad cubre Odoo 10-19 hoy; la comunidad puede extenderla a versiones futuras sin esperar que ningún proveedor específico lo haga.

Elegimos MIT en lugar de AGPL para que las empresas puedan integrar el plugin en sus stacks propietarios sin restricciones de copyleft. El copyleft tiene su lugar; aquí priorizamos la adopción.

Diagrama 13. Comparación: un servidor MCP cerrado deja de funcionar si cambia el precio, el modelo de negocio o desaparece el proveedor; con MIT la empresa tiene el código, puede hostearlo, cualquier proveedor lo mantiene y se integra sin copyleft.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'edgeLabelBackground': '#0E1220', 'clusterBkg': '#101828', 'clusterBorder': '#FBA225'}}}%%
flowchart TD
    C["Servidor MCP cerrado"] --> C1["Cambia el precio"] --> X["El agente deja de funcionar"]
    C --> C2["Cambia el modelo de negocio"] --> X
    C --> C3["Desaparece el proveedor"] --> X
    M["MCP-Odoo-Tools, licencia MIT"] --> M1["La empresa tiene el código"]
    M --> M2["Puede hostearlo internamente"]
    M --> M3["Cualquier proveedor puede mantenerlo"]
    M --> M4["Se integra en stacks propietarios
sin copyleft"] M1 & M2 & M3 & M4 --> Y["Sigue funcionando
aunque Transgenia no exista mañana"]
Diagrama 13. El argumento pragmático de la licencia. MIT en lugar de AGPL: aquí se priorizó la adopción sobre el copyleft.

Calidad técnica verificada

El plugin llega con CI completo:

Diagrama 14. Pipeline de CI en cinco etapas: 27 pruebas unitarias, ruff en Python 3.11 y 3.12, compilación del CLI de TypeScript, handshake MCP real que lista 28 herramientas y matriz de Odoo Community 10.0 a 19.0 con diez versiones en verde.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'edgeLabelBackground': '#0E1220', 'clusterBkg': '#101828', 'clusterBorder': '#FBA225'}}}%%
flowchart LR
    A["27 pruebas unitarias
compatibilidad, transporte, caché"] --> B["ruff
Python 3.11 y 3.12"] B --> C["CLI de TypeScript
compila sin errores"] C --> D["Handshake MCP real por stdio
lista las 28 herramientas"] D --> E["Matriz Odoo Community 10.0 a 19.0
diez versiones en verde, 5-oct-2026"] E --> F(["Versión 1.4.0 publicada"])
Diagrama 14. Lo que corre antes de cada versión. La matriz de versiones reales es la etapa que respalda la promesa de compatibilidad 10 a 19.

Cómo empezar

Si tienes Odoo y quieres explorar la integración con agentes de IA, el camino recomendado tiene tres pasos:

  1. Diagnóstico de tu instancia: versión, edición, módulos instalados y flujos candidatos a automatización con IA.
  2. Piloto de solo lectura: activar el modo de solo lectura del plugin (opción odoo_readonly), con el que el servidor rechaza toda escritura, y validar que las respuestas son correctas antes de tocar datos de producción.
  3. Gobernanza antes de escritura: la revisión humana de cada escritura (VoBo) no forma parte del núcleo público; es una capa de la implementación acompañada que se configura con el equipo de Transgenia antes de habilitar escrituras en producción.

Si quieres ver el stack en operación real antes de decidir, nuestra demo por sector muestra agentes trabajando sobre datos de clínicas y comercializadoras con el mismo protocolo MCP.

→ Ver la demo →

Diagrama 15. Ruta de adopción en tres pasos: diagnóstico de la instancia, piloto de solo lectura con odoo_readonly y gobernanza VoBo antes de habilitar escrituras en producción; si el piloto da respuestas incorrectas se vuelve al diagnóstico.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'edgeLabelBackground': '#0E1220', 'clusterBkg': '#101828', 'clusterBorder': '#FBA225'}}}%%
flowchart LR
    A["1. Diagnóstico
versión, edición, módulos y flujos"] --> B["2. Piloto de solo lectura
odoo_readonly activo"] B --> C["3. Gobernanza VoBo
revisión humana de cada escritura"] C --> D["Escrituras en producción"] B -.->|"si las respuestas no son correctas"| A
Diagrama 15. El camino recomendado. VoBo no forma parte del núcleo público: se configura con el equipo de Transgenia antes de la primera escritura en producción.

Preguntas frecuentes

¿El plugin MCP-Odoo-Tools es gratuito?

Sí, la capa pública está bajo licencia MIT y no tiene costo. La instalación y configuración básica las puedes hacer tú mismo a partir del repositorio de GitHub. La capa fiscal MX (CFDI/SAT), el middleware de gobernanza de escrituras (VoBo) y otros componentes avanzados están disponibles en los paquetes de implementación supervisada de Transgenia.

¿Con qué versiones de Odoo es compatible?

Con Odoo Community, Enterprise y online (SaaS) desde la versión 10 hasta la 19. La capa de compatibilidad resuelve automáticamente las diferencias de nombres de modelos y campos entre versiones, incluyendo cambios de nombre de modelo como account.invoice → account.move en v13 y otros cambios de campo en versiones posteriores.

¿Funciona solo con Claude o con otros agentes de IA?

Con cualquier agente que implemente el Protocolo de Contexto de Modelo (MCP), el estándar publicado por Anthropic como especificación abierta. Claude Code es el entorno de referencia para el que está empaquetado el plugin, pero el servidor expone una interfaz estándar compatible con otros clientes MCP (Gemini con Antigravity, Mistral con Vibe, y otros).

¿El plugin envía datos de mi empresa a servidores de Transgenia?

No. El servidor MCP corre en tu máquina (o en la infraestructura que tú elijas) y se comunica directamente con tu instancia Odoo. Transgenia no recibe, intermedia ni retiene datos del plugin: ni credenciales, ni registros, ni prompts. Los resultados que devuelve Odoo sí viajan a tu cliente MCP y de ahí al proveedor del modelo que uses (por ejemplo Anthropic con Claude), como con cualquier herramienta; ese tramo se rige por los términos de tu Odoo y de tu proveedor de IA, no por Transgenia.

¿Está aprobado por Anthropic como plugin oficial?

No todavía. El plugin es open source y se distribuye desde el repositorio propio de Transgenia. La versión 1.4.0 figura en el directorio de plugins de Claude y también se instala desde el repositorio de Transgenia; estar en el directorio no significa que Anthropic lo certifique o audite. Transgenia es partner registrado en el Claude Partner Network de Anthropic, lo que significa que Anthropic nos reconoce como partner, no que el plugin esté certificado o auditado por ellos. La distinción importa: el código es abierto y auditable por cualquiera.

Diagrama 16. Flujo de datos: dentro de tu infraestructura el cliente MCP habla por stdio con MCP-Odoo-Tools y este por RPC con tu Odoo; el cliente intercambia prompts y resultados con el proveedor del modelo; Transgenia queda fuera del flujo.
Ver diagrama Mermaid
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1a2035', 'primaryTextColor': '#FFFFFF', 'primaryBorderColor': '#FBA225', 'lineColor': '#FBA225', 'background': '#0B0D17', 'mainBkg': '#0E1220', 'fontFamily': 'Inter, Arial, sans-serif', 'fontSize': '14px', 'edgeLabelBackground': '#0E1220', 'clusterBkg': '#101828', 'clusterBorder': '#FBA225'}}}%%
flowchart LR
    subgraph T["Tu infraestructura"]
        M["Cliente MCP"] <-->|stdio| S["MCP-Odoo-Tools"]
        S <-->|"JSON-2, JSON-RPC o XML-RPC"| O["Tu instancia de Odoo"]
    end
    M <-->|"prompts y resultados"| P["Proveedor del modelo
por ejemplo Anthropic con Claude"] X["Transgenia
fuera del flujo de datos:
no recibe credenciales, registros ni prompts"]
Diagrama 16. Respuesta visual a la pregunta sobre privacidad. El tramo hacia el proveedor del modelo existe como con cualquier herramienta y se rige por sus términos, no por Transgenia.

Sobre el autor y Transgenia

Efraín Carreón Ortiz es Director General de Centrum Transgenia, una boutique tecnológica mexicana. Está acreditado con la insignia oficial Claude Code (Claude Partner Badge) emitida por Anthropic, verificable en Credly.

Transgenia es OpenAI Select Partner dentro del OpenAI Partner Network y partner registrado en el Claude Partner Network de Anthropic. Operamos doce agentes de IA gobernados en producción propia y acompañamos implementaciones verificables en los sectores salud y B2B.

Hablemos: LinkedIn, agenda de 15 minutos o la página de contacto.

Sigue leyendo

← Volver al Blog
Transgenia, Verified IT agency on Vai.me