odoo-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ODOO_DB | Yes | Name of the Odoo database (case-sensitive) | |
| ODOO_URL | Yes | URL of your Odoo instance, e.g. https://tuinstancia.odoo.com | |
| ODOO_API_KEY | No | API key generated in Odoo (recommended authentication method). If both ODOO_API_KEY and ODOO_PASSWORD are set, ODOO_API_KEY takes priority. | |
| ODOO_PASSWORD | No | Odoo password (alternative authentication method if API key not available) | |
| ODOO_USERNAME | Yes | Odoo username (usually email) | |
| ODOO_VERIFY_SSL | No | Set to "false" to disable SSL verification for self-signed certificates on local/dev instances. Do not disable in production. | true |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| odoo_pingA | Verifica conectividad con la instancia Odoo configurada y devuelve su versión. |
| odoo_crm_list_leadsA | Lista leads/oportunidades de CRM (crm.lead) en Odoo. Args: stage: filtra por nombre de etapa (ej. "New", "Won"). salesperson: filtra por nombre del vendedor asignado. only_opportunities: si True, solo trae oportunidades (type='opportunity'), excluyendo leads sin calificar. limit: máximo de registros a devolver (default 20). |
| odoo_crm_create_leadA | Crea un nuevo lead u oportunidad en el CRM de Odoo. Args: name: título/asunto del lead (requerido). partner_name: nombre de la empresa/contacto. email_from: email de contacto. phone: teléfono de contacto. expected_revenue: ingreso esperado, si aplica. type_: "lead" o "opportunity" (default "lead"). |
| odoo_crm_update_leadA | Actualiza campos de un lead/oportunidad existente. Args: lead_id: ID del registro crm.lead a modificar. values: diccionario de campo->valor a actualizar (ej. {"probability": 80, "expected_revenue": 5000}). |
| odoo_sales_list_ordersA | Lista cotizaciones y pedidos de venta (sale.order). Args: customer: filtra por nombre de cliente (partner). state: filtra por estado ('draft', 'sent', 'sale', 'done', 'cancel'). limit: máximo de registros a devolver (default 20). |
| odoo_sales_create_orderA | Crea una cotización/pedido de venta (sale.order) con sus líneas. Args: customer_id: ID del partner (res.partner) cliente. order_lines: lista de líneas, cada una como {"product_id": , "product_uom_qty": }. |
| odoo_project_list_projectsA | Lista proyectos (project.project) en Odoo. Args: name: filtra por nombre del proyecto (búsqueda parcial). limit: máximo de registros a devolver (default 20). |
| odoo_project_list_tasksA | Lista tareas (project.task) de Odoo, opcionalmente filtradas. Args: project_id: ID exacto del proyecto. project_name: nombre del proyecto (búsqueda parcial), alternativa a project_id. assignee: nombre del responsable asignado. stage: nombre de la etapa/columna kanban (ej. "In Progress", "Done"). limit: máximo de registros a devolver (default 30). |
| odoo_project_create_taskA | Crea una tarea (project.task) dentro de un proyecto Odoo. Útil para que una tarea programada de Cowork registre trabajo pendiente directamente en Odoo. Args: name: título de la tarea (requerido). project_id: ID del proyecto donde se crea. description: descripción/detalle de la tarea. assignee_id: ID del usuario (res.users) responsable. deadline: fecha límite en formato YYYY-MM-DD. priority: "0" (normal) o "1" (alta/estrella), default "0". |
| odoo_project_update_taskA | Actualiza campos de una tarea existente (ej. cambiar de etapa/estado). Args: task_id: ID de la tarea (project.task) a modificar. values: diccionario de campo->valor a actualizar (ej. {"stage_id": 3} para mover de columna kanban). |
| odoo_inventory_list_productsA | Lista productos y su disponibilidad en stock (product.product). Args: name: filtra por nombre o referencia interna (búsqueda parcial). only_low_stock: si True, solo trae productos con qty_available <= 0. limit: máximo de registros a devolver (default 20). |
| odoo_purchase_list_ordersA | Lista órdenes de compra (purchase.order). Args: supplier: filtra por nombre del proveedor. state: filtra por estado ('draft', 'sent', 'purchase', 'done', 'cancel'). limit: máximo de registros a devolver (default 20). |
| odoo_purchase_create_orderA | Crea una orden de compra (purchase.order) con sus líneas. Args: supplier_id: ID del partner (res.partner) proveedor. order_lines: lista de líneas, cada una como {"product_id": , "product_qty": , "price_unit": }. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Each tool targets a distinct domain-resource-action combination (e.g., CRM leads, sales orders, project tasks, purchase orders), so there is no meaningful overlap. Even similar list tools are clearly separated by domain prefixes like sales vs purchase.
Tool names follow a highly consistent pattern: odoo_<domain>_<verb>_<resource> (e.g., odoo_crm_create_lead, odoo_project_update_task). The only exception, odoo_ping, is a standard health-check exception and does not detract from the overall consistency.
With 13 tools covering CRM, sales, projects, inventory, and purchase, the surface is well-scoped for an Odoo integration. Each tool serves a clear purpose, and the count is neither bloated nor too thin.
Core read and create workflows are well represented across major modules, including lead management, task management, and order creation. However, there are notable gaps such as no update or delete for sales/purchase order and no project creation, which slightly limit full lifecycle coverage.