跳转至

工具参考

MCP 服务器暴露 18 个工具。所有对模型的操作都会经过兼容层:你可以使用模型和 字段的 现代 名称,服务器会将它们解析为目标版本中实际存在的内容。不可用的 字段会连同一条 dropped_fields 警告被丢弃,而不会让整个调用失败。

写入工具

有五个工具会 修改数据odoo_createodoo_writeodoo_unlinkodoo_executeodoo_translate_set。它们在下方标注为 :material-pencil: 写入。公开核心 施加审批门槛(那属于一个私有的 治理层)。请使用最小权限用户,并审查每一次写入。

概览

工具 类型 作用
odoo_search 读取 搜索并返回 id
odoo_search_count 读取 统计记录数
odoo_read 读取 按 id 读取记录
odoo_search_read 读取 一次调用完成搜索与读取
odoo_export_records_json 读取 导出为 JSON
odoo_export_records_csv 读取 导出为 CSV
odoo_version 读取 版本/版本类型/部署方式/传输方式
odoo_connections 读取 活动会话
odoo_list_models 读取 列出模型
odoo_fields_get 读取 一个模型的字段(带缓存)
odoo_module_info 读取 一个模块的状态
odoo_translate_get 读取 读取一条翻译
odoo_report 读取 将 QWeb 报表渲染为 base64
odoo_create 写入 创建一条记录
odoo_write 写入 更新记录
odoo_unlink 写入 删除记录
odoo_execute 写入 调用模型的任意方法
odoo_translate_set 写入 设置一条翻译

读取与查询

搜索一个模型并返回匹配的 id。

参数 是否必需 类型 说明
model string 现代名称或历史名称
domain array Odoo 搜索域
limit / offset / order 分页与排序
odoo_search { "model": "sale.order", "domain": [["state","=","sale"]], "limit": 5 }

odoo_search_count

统计与某个域匹配的记录数(不获取数据)。

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

odoo_read

按 id 读取记录,可选择限定字段。

参数 是否必需 类型
model string
ids 整数数组
fields 字符串数组
odoo_read { "model": "res.partner", "ids": [7, 9], "fields": ["name","email"] }

odoo_search_read

一次调用完成搜索与读取 —— 主要的查询工具。

参数 是否必需 类型
model string
domainfieldslimitoffsetorder
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

将与某个域匹配的记录导出为 JSON 数组(只读)。 参数与 odoo_search_read 相同。返回 { model, count, records }

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

odoo_export_records_csv

与上一个相同,但返回 CSV 文本。many2one 值会被扁平化为其可见名称。 返回 { model, count, columns, csv }

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

元数据与内省

odoo_version

无参数。返回 versionraw_versioneditiondeployment 以及当前生效的 transport

odoo_version {}

odoo_connections

无参数。列出服务器上有活动会话的 Odoo 实例。

odoo_connections {}

odoo_list_models

列出模型,可选择按名称片段过滤。

参数 是否必需 类型 说明
like string 片段(不区分大小写)
limit integer 默认 200
odoo_list_models { "like": "sale", "limit": 50 }

odoo_fields_get

返回一个模型的字段定义(带缓存)。它接受历史名称或现代名称。

参数 是否必需 类型
model string
attributes 字符串数组
odoo_fields_get { "model": "account.move", "attributes": ["string","type","required"] }

odoo_module_info

按技术名称获取一个模块的安装状态和元数据。

odoo_module_info { "name": "web_enterprise" }

odoo_translate_get

读取某条记录某个字段在特定语言下的值。

参数 是否必需 类型 说明
model string
id integer
field string
lang string 例如 es_MXen_USzh_CN
odoo_translate_get { "model": "product.template", "id": 42, "field": "name", "lang": "en_US" }

odoo_report

为某些 id 渲染一个报表动作(按 report_name),并以 base64 返回文档。

参数 是否必需 类型 说明
report_name string 例如 account.report_invoice
ids 整数数组
odoo_report { "report_name": "account.report_invoice", "ids": [128] }

写入 :material-pencil:

odoo_create :material-pencil: 写入

创建一条记录。返回新的 id。

参数 是否必需 类型
model string
values object
odoo_create { "model": "res.partner", "values": { "name": "ACME S.A.", "email": "hola@acme.mx" } }

odoo_write :material-pencil: 写入

按 id 更新记录。

参数 是否必需 类型
model string
ids 整数数组
values object
odoo_write { "model": "res.partner", "ids": [15], "values": { "phone": "+52 55 0000 0000" } }

按 id 删除记录。

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

odoo_execute :material-pencil: 写入

调用模型的任意方法(escape hatch)。args/kwargs 会原样传递。它不经过 版本类型解析,因此请谨慎使用。

参数 是否必需 类型
model string
method string
args array
kwargs object
odoo_execute { "model": "account.move", "method": "action_post", "args": [[128]] }

odoo_translate_set :material-pencil: 写入

为某个语言设置一个字段的翻译。在 Odoo 16+ 中使用原生 API update_field_translations;在更早的版本中,则在语言上下文下写入该字段。 兼容层会选择正确的路径。

参数 是否必需 类型
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" }

若要理解名称如何在不同版本之间解析,请参见 版本间兼容性