Odoo

Odoo

Odoo ERP 19 and newer over the JSON-2 API: search, read, create and update any model, plus purpose-built tools for partners, sales orders, invoices and products. Odoo Online, Odoo.sh or self-hosted, bearer API key. For Odoo 14 to 18 use the Odoo 14-18 (JSON-RPC) connector.

自行部署或在 Odoo.sh 上运行 Odoo 17、18 或 19?安装Odoo Apps Store 中的 AnythingMCP 模块,即可在 Odoo 设置中打开 API 密钥对话框,并以已填好的 Odoo 地址和数据库开始配置。

7 天免费 · 无需信用卡 · EU 托管

问 Odoo 任何事

通过 AnythingMCP 对 Odoo 试一个真实提示 — Claude 调用工具并返回答案。在你的消息上按 Enter 即可在 Cloud 安装。

在 Cloud 上安装 Odoo
Odoo · 通过 MCP 实时
分享
Opus 4.7

Claude 是 AI,可能会出错。请核对回答。

2 分钟设置

  1. 1在 cloud.anythingmcp.com 开始免费试用。
  2. 2在连接器商店点击 Odoo。提示时粘贴凭据。
  3. 3生成 MCP API 密钥,将 AI 客户端指向生成的 MCP URL。
立即安装 Odoo

Odoo 指南

面向主流 AI 客户端的逐步设置。

配置 Odoo

直接来自连接器定义:在哪里获取凭据、需要哪些权限,以及该适配器调用的是哪个 API。 由连接器作者以英文提供。

Getting an API key

  1. In Odoo open your user menu → My Profile → Account Security and create a new API key. In the New API Key dialog set Duration to Persistent Key (offered to administrators), or to the longest duration offered (up to 3 Months for other users). Since Odoo 18 API keys expire, and the dialog preselects 1 Day: such a key stops working the next day with "Invalid apikey". Odoo shows the key once.
  2. Put it in ODOO_API_KEY, your instance URL in ODOO_URL (e.g. https://mycompany.odoo.com, no trailing slash) and the database name in ODOO_DB. On Odoo Online the database name is usually the subdomain.

This adapter uses the JSON-2 API, which Odoo introduced in 19 and which is the only Odoo HTTP surface a generic REST engine can speak: POST {url}/json/2/{model}/{method} with the key as a bearer token and the database in an X-Odoo-Database header. On Odoo 18 and older that route does not exist: use the Odoo 14-18 (JSON-RPC) connector, which talks to the classic /jsonrpc endpoint.

Domains are Odoo's query language. A domain is a list of triples: [["state","=","sale"],["amount_total",">",1000]], implicitly AND-ed. | and ! prefix operators express OR and NOT. odoo_search_read takes one verbatim, which is what makes this connector able to answer questions the purpose-built tools do not cover.

Always pass fields. Odoo models have hundreds of columns and omitting fields returns all of them, which will exhaust the agent's context on a handful of rows. Start with odoo_fields_get to see what exists.

Fields Odoo 19 dropped or renamed. Naming a field the model does not have, in fields, a domain or values, fails the whole call with Invalid field 'x' on 'model'. The usual ones: res.partner has no mobile any more (use phone) and no title; sale.order.line taxes are tax_ids, not tax_id. After such an error, check the model with odoo_fields_get and retry without the field rather than repeating it.

Totals and grouping: Odoo 19 has no public read_group (the JSON-2 API answers 404). Call formatted_read_group through odoo_call_method instead, with kwargs such as {"domain": [["state","=","posted"]], "groupby": ["company_id"], "aggregates": ["amount_total:sum", "__count"]}. Aggregates are field:function (sum, avg, min, max, count_distinct) plus __count.

Permissions follow the user. The API key inherits its owner's access rights and record rules. A restricted user sees fewer rows, not an error — so an agent reporting 'no open orders' may simply be looking through the wrong account.

Self-hosted, which is the thing to plan for.

  • On AnythingMCP Cloud the instance must be reachable from the public internet on a real hostname with a valid TLS certificate. A self-signed certificate will fail: the connector offers no trust-anything switch.
  • On an internal host (odoo.intern, 10.0.0.x), self-host AnythingMCP on the same network and add that host to SSRF_ALLOWED_HOSTS, or the outbound guard refuses the call before it is made.

Writes: odoo_create and odoo_write change the live database, and Odoo's automations (mail, stock moves, accounting entries) fire as if a person had done it.

你的 AI 距离 Odoo 仅两次点击。

安装连接器、粘贴凭据、向 AI 提问。7 天免费,无需信用卡。