Saltar a contenido

Referencia de herramientas

El servidor MCP expone 18 herramientas. Todas las operaciones sobre modelos pasan por la capa de compatibilidad: puedes usar nombres modernos de modelos y campos, y el servidor los resuelve a lo que exista en la versión destino. Los campos no disponibles se descartan con una advertencia dropped_fields en lugar de fallar toda la llamada.

Herramientas de escritura

Cinco herramientas modifican datos: odoo_create, odoo_write, odoo_unlink, odoo_execute y odoo_translate_set. Están marcadas abajo con :material-pencil: ESCRIBE. El núcleo público no aplica compuertas de aprobación (eso vive en una capa de gobernanza privada). Usa un usuario de mínimo privilegio y revisa cada escritura.

Resumen

Herramienta Tipo Qué hace
odoo_search lectura Busca y devuelve ids
odoo_search_count lectura Cuenta registros
odoo_read lectura Lee registros por id
odoo_search_read lectura Busca y lee en una llamada
odoo_export_records_json lectura Exporta a JSON
odoo_export_records_csv lectura Exporta a CSV
odoo_version lectura Versión/edición/despliegue/transporte
odoo_connections lectura Sesiones activas
odoo_list_models lectura Lista modelos
odoo_fields_get lectura Campos de un modelo (cacheado)
odoo_module_info lectura Estado de un módulo
odoo_translate_get lectura Lee una traducción
odoo_report lectura Renderiza un reporte QWeb a base64
odoo_create escribe Crea un registro
odoo_write escribe Actualiza registros
odoo_unlink escribe Elimina registros
odoo_execute escribe Llama a cualquier método del modelo
odoo_translate_set escribe Fija una traducción

Lectura y consulta

Busca un modelo y devuelve los ids que coinciden.

Parámetro Requerido Tipo Notas
model string nombre moderno o histórico
domain no array dominio de búsqueda de Odoo
limit / offset / order no paginación y orden
odoo_search { "model": "sale.order", "domain": [["state","=","sale"]], "limit": 5 }

odoo_search_count

Cuenta los registros que coinciden con un dominio (sin traer datos).

odoo_search_count { "model": "account.move", "domain": [["state","=","posted"]] }

odoo_read

Lee registros por id, opcionalmente limitando los campos.

Parámetro Requerido Tipo
model string
ids array de enteros
fields no array de strings
odoo_read { "model": "res.partner", "ids": [7, 9], "fields": ["name","email"] }

odoo_search_read

Busca y lee en una sola llamada — la herramienta de consulta principal.

Parámetro Requerido Tipo
model string
domain, fields, limit, offset, order no
odoo_search_read {
  "model": "account.move",
  "domain": [["state","=","posted"]],
  "fields": ["name","amount_total","invoice_date"],
  "limit": 10, "order": "invoice_date desc"
}

odoo_export_records_json

Exporta los registros que coinciden con un dominio como arreglo JSON (solo lectura). Mismos parámetros que odoo_search_read. Devuelve { model, count, records }.

odoo_export_records_json { "model": "product.template", "fields": ["name","list_price"], "limit": 500 }

odoo_export_records_csv

Igual que el anterior pero devuelve texto CSV. Los valores many2one se aplanan a su nombre visible. Devuelve { model, count, columns, csv }.

odoo_export_records_csv { "model": "res.partner", "domain": [["customer_rank",">",0]], "fields": ["name","email","city"] }

Metadatos e introspección

odoo_version

Sin parámetros. Devuelve version, raw_version, edition, deployment y el transport activo.

odoo_version {}

odoo_connections

Sin parámetros. Lista las instancias Odoo con sesión activa en el servidor.

odoo_connections {}

odoo_list_models

Lista modelos, opcionalmente filtrados por un fragmento de nombre.

Parámetro Requerido Tipo Notas
like no string fragmento (case-insensitive)
limit no integer default 200
odoo_list_models { "like": "sale", "limit": 50 }

odoo_fields_get

Devuelve las definiciones de campos de un modelo (cacheado). Acepta nombres históricos o modernos.

Parámetro Requerido Tipo
model string
attributes no array de strings
odoo_fields_get { "model": "account.move", "attributes": ["string","type","required"] }

odoo_module_info

Estado de instalación y metadatos de un módulo por su nombre técnico.

odoo_module_info { "name": "web_enterprise" }

odoo_translate_get

Lee el valor de un campo en un idioma específico para un registro.

Parámetro Requerido Tipo Notas
model string
id integer
field string
lang string p. ej. es_MX, en_US, zh_CN
odoo_translate_get { "model": "product.template", "id": 42, "field": "name", "lang": "en_US" }

odoo_report

Renderiza una acción de reporte (por report_name) para ciertos ids y devuelve el documento en base64.

Parámetro Requerido Tipo Notas
report_name string p. ej. account.report_invoice
ids array de enteros
odoo_report { "report_name": "account.report_invoice", "ids": [128] }

Escritura :material-pencil:

odoo_create :material-pencil: ESCRIBE

Crea un registro. Devuelve el nuevo id.

Parámetro Requerido Tipo
model string
values object
odoo_create { "model": "res.partner", "values": { "name": "ACME S.A.", "email": "hola@acme.mx" } }

odoo_write :material-pencil: ESCRIBE

Actualiza registros por id.

Parámetro Requerido Tipo
model string
ids array de enteros
values object
odoo_write { "model": "res.partner", "ids": [15], "values": { "phone": "+52 55 0000 0000" } }

Elimina registros por id.

odoo_unlink { "model": "res.partner", "ids": [999] }

odoo_execute :material-pencil: ESCRIBE

Llama a un método arbitrario del modelo (escape hatch). args/kwargs se pasan tal cual. No pasa por la resolución de edición, así que úsalo con criterio.

Parámetro Requerido Tipo
model string
method string
args no array
kwargs no object
odoo_execute { "model": "account.move", "method": "action_post", "args": [[128]] }

odoo_translate_set :material-pencil: ESCRIBE

Fija la traducción de un campo para un idioma. En Odoo 16+ usa la API nativa update_field_translations; en versiones anteriores escribe el campo bajo el contexto de idioma. La capa de compatibilidad elige el camino correcto.

Parámetro Requerido Tipo
model string
id integer
field string
lang string
value string
odoo_translate_set { "model": "product.template", "id": 42, "field": "name", "lang": "en_US", "value": "Wireless mouse" }

Para entender cómo se resuelven los nombres entre versiones, ver Compatibilidad entre versiones.