mcp-odoo
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-odoolist my tasks in progress"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Odoo - Model Context Protocol para Odoo
MCP server que permite interacturar con Odoo desde cualquier IDE compatible con MCP (OpenCode, Cursor, Claude Desktop, etc.)
Características
🔐 Login con credenciales propias - Cada usuario usa sus credenciales de Odoo
Gestión de tareas - Lista tus tareas, filtra por proyecto y estado
Contexto de tickets - Reúne descripción, chatter, evidencia, ramas, etapas y horas
Timesheets seguros - Valida tarea, proyecto, duplicados y propiedad de líneas
Ramas GitLab - Verifica referencias y divergencia antes de crear un MR
🔄 Genérico - Funciona con cualquier instancia de Odoo 17+
Related MCP server: odoo-mcp-server
Instalación
git clone https://github.com/Igabr13l/mcp-odoo.git
cd mcp-odoo
npm install
npm run buildEl servidor se compila en dist/src. Para desarrollo:
npm run typecheck
npm test
npm startConfiguración por IDE
OpenCode
Agregar en opencode.json de tu workspace:
{
"mcp": {
"odoo": {
"type": "local",
"command": ["node", "/ruta/absoluta/a/mcp-odoo/dist/src/index.js"],
"enabled": true
}
}
}Cursor / Claude Desktop
Agregar en cursor.json o claude_desktop_config.json:
{
"mcpServers": {
"odoo": {
"command": "node",
"args": ["/ruta/absoluta/a/mcp-odoo/dist/src/index.js"]
}
}
}VS Code (con extension MCP)
En settings.json:
{
"mcpServers": {
"odoo": {
"command": "node",
"args": ["C:\\ruta\\a\\mcp-odoo\\dist\\src\\index.js"]
}
}
}Windsurf
En ~/.windsurf/config.json o en el archivo de configuración del proyecto:
{
"mcp": {
"odoo": {
"type": "local",
"command": ["node", "/ruta/a/mcp-odoo/dist/src/index.js"]
}
}
}Uso
1. Login (obligatorio)
Primero, iniciá sesión con tus credenciales de Odoo:
odoo_login({
url: "https://odoo.tuempresa.com",
db: "nombre_db",
login: "tu@email.com",
password: "tu_password"
})2. Herramientas disponibles
Herramienta | Descripción |
| Muestra el usuario actual conectado |
| Lista todos los proyectos activos |
| Lista los proyectos donde tenés tickets asignados |
| Lista tus tareas (opcional: project_id, state) |
| Lista tickets con filtros (mine, project_id, state, search, limit), prioridad y etiquetas |
| Detalle de una tarea con asignados, etiquetas, prioridad, descripcion y metricas |
| Lee mensajes y notas internas del chatter; oculta secretos por defecto |
| Lista adjuntos, imágenes y videos con sus metadatos |
| Devuelve imágenes adjuntas como contenido visual MCP |
| Extrae fotogramas representativos de videos adjuntos |
| Devuelve contexto agregado del ticket en una llamada |
| Lista IDs y nombres exactos de todas las etapas del proyecto |
| Previsualiza o publica una nota interna redactada con confirmación |
| Tablero personal agrupado por etapas reales de Odoo |
| Verifica ramas y referencias de MR directamente en GitLab |
| Edita asignados, descripción y estado/etapa de una tarea |
| Ramas GitLab vinculadas a una tarea |
| Carga horas en una tarea |
| Lista tus horas cargadas con filtros por fecha/proyecto/tarea |
3. Ejemplos de uso
Ver mis tareas en progreso
odoo_get_my_tasks({ state: "in_progress" })Ver tareas de un proyecto específico
odoo_get_my_tasks({ project_id: 7, state: "in_progress" })Ver mis proyectos (donde tengo tickets)
odoo_get_my_projects({})Ver tickets con filtros
odoo_get_tickets({ mine: true, state: "to_do", search: "whatsapp", limit: 50 })Ver detalle de una tarea con ramas GitLab
odoo_get_task_detail({ task_id: 9646 })Leer mensajes, notas y adjuntos
odoo_get_ticket_messages({ task_id: 9646, include_system: false })
odoo_get_ticket_attachments({ task_id: 9646 })
odoo_get_ticket_images({ task_id: 9646, limit: 5 })
odoo_get_ticket_video_frames({ task_id: 9646, frames: 4 })Los videos se listan con nombre, tipo MIME, tamaño y URL cuando Odoo guarda una. MCP no define contenido de video nativo, por lo que el servidor no carga el binario del video en el contexto. API keys, tokens y passwords se enmascaran por defecto en descripciones y mensajes.
La extracción de fotogramas requiere ffmpeg y ffprobe instalados localmente.
Ver tablero y estado GitLab
odoo_get_my_board({ project_id: 7 })
odoo_get_gitlab_status({ task_id: 11244 })La creación de una fila GitLab, una rama o un merge request requiere
confirm: true. Las operaciones son idempotentes cuando Odoo ya tiene el
recurso registrado. Antes de crear un MR, el MCP obtiene la divergencia real y
compara los árboles resultantes; rechaza ramas sin commits propios o cuyo árbol
es idéntico al merge base. El MCP no fusiona MRs.
Editar una tarea (asignados, descripción y estado)
odoo_update_task({
task_id: 9646,
assignee_user_ids: [16],
description: "Actualizar validaciones de WhatsApp",
state: "in_progress"
})También podés usar stage_id o stage_name en vez de state.
Ver ramas GitLab de una tarea
odoo_get_task_gitlab_branches({ task_id: 9646 })Cargar horas
odoo_create_timesheet({
task_id: 9646,
project_id: 7,
date: "2026-03-01",
hours: 2,
description: "Implementación de feature X"
})Las altas y modificaciones de timesheets se serializan dentro de cada proceso MCP para que la verificación de duplicados y la escritura formen una única sección crítica. Esto no coordina procesos MCP distintos ni otros clientes de Odoo: la idempotencia entre procesos y a nivel servidor sigue siendo responsabilidad de Odoo.
Ver horas cargadas un día específico
odoo_get_my_timesheets({ date: "2026-02-27" })Ver horas cargadas en un rango de fechas
odoo_get_my_timesheets({ date_from: "2026-02-01", date_to: "2026-02-28" })Ver horas de un proyecto específico
odoo_get_my_timesheets({ project_id: 7, date_from: "2026-02-01", date_to: "2026-02-28" })Configuración de Variables de Entorno
Podés configurar valores por defecto:
export ODOO_URL="https://odoo.tuempresa.com"
export ODOO_DB="nombre_db"Pero seguís necesitando hacer login con tu usuario y password.
La sesión es única por proceso y se reutiliza durante toda la ejecución. El MCP
no reautentica periódicamente: Odoo valida las credenciales en cada operación
execute_kw. Si varias herramientas arrancan al mismo tiempo sin un uid
persistido, comparten un único intento de autenticación.
El timeout HTTP por defecto es de 15 segundos. Puede configurarse entre 1 y 120
segundos con ODOO_REQUEST_TIMEOUT_MS.
Las lecturas con errores transitorios de red o timeout se reintentan una sola
vez. Las escrituras nunca se reintentan automáticamente: si el transporte falla,
el resultado se marca como incierto y requiere verificar Odoo antes de repetir.
El backoff de lectura se configura con ODOO_RETRY_BACKOFF_MS.
La sesión persistida se guarda con permisos 0600 y contiene las credenciales
necesarias para JSON-RPC. Puede cambiarse su ubicación con ODOO_SESSION_FILE.
La verificación remota de GitLab permite gitlab.solunika.com por defecto. Para
otras instalaciones, configurá una lista separada por comas en
ODOO_GITLAB_ALLOWED_HOSTS.
Si ODOO_GITLAB_TOKEN está configurado, odoo_get_gitlab_status consulta la API
v4 de GitLab con PRIVATE-TOKEN para informar estado, conflictos, pipelines y
aprobaciones del merge request. Las redirecciones no se siguen para evitar enviar
el token a otro origen, y el token nunca se incluye en la respuesta. El timeout
de estas consultas es de 15 segundos y puede configurarse entre 1 y 120 segundos
mediante ODOO_GITLAB_API_TIMEOUT_MS.
La inspección Git informa divergencia, merge base, hashes de árbol y si el árbol
de la rama difiere del merge base. Una rama solo se considera activa si tiene
commits propios y un árbol resultante diferente. Cada comando usa un timeout de
15 segundos, configurable mediante ODOO_GIT_TIMEOUT_MS.
Licencia
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Manage CloudPepper servers, Odoo instances, backups, and deployments over MCP.
Official Akeda ERP connector for tasks, CRM, chats, documents, finance and operations.
- TimequipOAuthcom.timequip
Manage Timequip projects, tasks, comments, members, and dashboards through MCP.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables conversational interaction with Odoo to manage timesheets, expenses, contacts, and invoices through an MCP-compatible assistant. It provides comprehensive tools for searching records, managing HR tasks, and tracking project costs via the Odoo API.383MIT
- AlicenseNot gradedqualityCmaintenanceEnables interaction with Odoo ERP systems for product, customer, order, invoice, and payment management using MCP tools.6MIT
- FlicenseNot gradedqualityDmaintenanceEnables query and management of Zentao bugs, tasks, projects, and iterations directly from MCP-compatible IDEs like Cursor or Claude Desktop.-
- FlicenseNot gradedqualityDmaintenanceEnables managing multiple Odoo instances from a single panel and exposes MCP tools for interacting with them via a unified service.-