工具参考¶
MCP 服务器暴露 18 个工具。所有对模型的操作都会经过兼容层:你可以使用模型和
字段的 现代 名称,服务器会将它们解析为目标版本中实际存在的内容。不可用的
字段会连同一条 dropped_fields 警告被丢弃,而不会让整个调用失败。
写入工具
有五个工具会 修改数据:odoo_create、odoo_write、
odoo_unlink、odoo_execute 和 odoo_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 |
写入 | 设置一条翻译 |
读取与查询¶
odoo_search¶
搜索一个模型并返回匹配的 id。
| 参数 | 是否必需 | 类型 | 说明 |
|---|---|---|---|
model |
是 | string | 现代名称或历史名称 |
domain |
否 | array | Odoo 搜索域 |
limit / offset / order |
否 | — | 分页与排序 |
odoo_search_count¶
统计与某个域匹配的记录数(不获取数据)。
odoo_read¶
按 id 读取记录,可选择限定字段。
| 参数 | 是否必需 | 类型 |
|---|---|---|
model |
是 | string |
ids |
是 | 整数数组 |
fields |
否 | 字符串数组 |
odoo_search_read¶
一次调用完成搜索与读取 —— 主要的查询工具。
| 参数 | 是否必需 | 类型 |
|---|---|---|
model |
是 | string |
domain、fields、limit、offset、order |
否 | — |
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¶
无参数。返回 version、raw_version、edition、deployment 以及当前生效的
transport。
odoo_connections¶
无参数。列出服务器上有活动会话的 Odoo 实例。
odoo_list_models¶
列出模型,可选择按名称片段过滤。
| 参数 | 是否必需 | 类型 | 说明 |
|---|---|---|---|
like |
否 | string | 片段(不区分大小写) |
limit |
否 | integer | 默认 200 |
odoo_fields_get¶
返回一个模型的字段定义(带缓存)。它接受历史名称或现代名称。
| 参数 | 是否必需 | 类型 |
|---|---|---|
model |
是 | string |
attributes |
否 | 字符串数组 |
odoo_module_info¶
按技术名称获取一个模块的安装状态和元数据。
odoo_translate_get¶
读取某条记录某个字段在特定语言下的值。
| 参数 | 是否必需 | 类型 | 说明 |
|---|---|---|---|
model |
是 | string | |
id |
是 | integer | |
field |
是 | string | |
lang |
是 | string | 例如 es_MX、en_US、zh_CN |
odoo_report¶
为某些 id 渲染一个报表动作(按 report_name),并以 base64 返回文档。
| 参数 | 是否必需 | 类型 | 说明 |
|---|---|---|---|
report_name |
是 | string | 例如 account.report_invoice |
ids |
是 | 整数数组 |
写入 :material-pencil:¶
odoo_create :material-pencil: 写入¶
创建一条记录。返回新的 id。
| 参数 | 是否必需 | 类型 |
|---|---|---|
model |
是 | string |
values |
是 | object |
odoo_write :material-pencil: 写入¶
按 id 更新记录。
| 参数 | 是否必需 | 类型 |
|---|---|---|
model |
是 | string |
ids |
是 | 整数数组 |
values |
是 | object |
odoo_unlink :material-pencil: 写入¶
按 id 删除记录。
odoo_execute :material-pencil: 写入¶
调用模型的任意方法(escape hatch)。args/kwargs 会原样传递。它不经过
版本类型解析,因此请谨慎使用。
| 参数 | 是否必需 | 类型 |
|---|---|---|
model |
是 | string |
method |
是 | string |
args |
否 | array |
kwargs |
否 | object |
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" }
若要理解名称如何在不同版本之间解析,请参见 版本间兼容性。