Odoo

io.github.Helios-One-Oy由 GitHub 帳號 Helios-One-Oy 發布v0.1.0更新於 Oct 29, 2026

Odoo orders, late lines, supplier promise dates, manufacturing and stock. Read-only by default.

已驗證STDIO僅桌面資料與分析商業與電商

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理讀取 Odoo 的銷售、採購、製造與庫存資料,並可選擇性修改採購單列的承諾日期。

可以做什麼
  • 列出未完成的銷售單與採購單,可包含報價單與詢價單
  • 檢視單一訂單的明細、數量與調撥,並找出逾期未交貨的銷售列或採購列及逾期天數
  • 檢視供應商承諾到貨日期、製造單、工序單與收發貨
  • 依名稱、電子郵件、編號或統一編號查詢客戶與供應商
  • 查詢產品的現有、預測、進貨與出貨數量
  • 啟用寫入後,可更新某一筆採購單列的預計到貨日期
適用情境
適合讓助理回答 Odoo 中的營運問題,例如哪些採購列逾期、某張銷售單進度如何、某產品還剩多少庫存,同時不必給予完整的 ERP 權限。
執行需求
透過 npx 以 stdio 在本機執行,需要 Node.js 20 或更新版本。需要 Odoo 基礎網址(ODOO_URL)、資料庫名稱(ODOO_DB)與登入名稱(ODOO_USERNAME),以及 Odoo API 金鑰(ODOO_API_KEY)或使用者密碼(ODOO_PASSWORD)其中之一。該 Odoo 使用者須被允許使用外部 API,伺服器也需能透過網路連線到該 Odoo 執行個體。
安裝前請注意
Odoo 憑證會存放在用戶端設定中,建議使用 ODOO_API_KEY 而非 ODOO_PASSWORD。伺服器以所設定使用者的 Odoo 權限運作,應使用權限最小的專用使用者。除非 ODOO_MCP_ENABLE_WRITES 設為 true,否則寫入功能關閉;寫入工具每次呼叫還需精確的確認文字,會變更採購單列的預計日期。僅在自架 Odoo Community 17 至 19 測試過,未測試 Odoo Online、Odoo.sh 或企業版。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Odoo,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Odoo MCP server

An MCP server that lets an AI assistant (Claude Desktop, Claude Code, or any MCP client) read your Odoo sales, purchasing, manufacturing and stock data, and, only if you turn it on, update a purchase order line's promise date.

  • 12 read tools and 1 write tool (listed below).
  • Read-only by default. The write tool needs ODOO_MCP_ENABLE_WRITES=true on the server and an exact confirmation text on every call.
  • Talks to Odoo's external JSON-RPC API (/jsonrpc) as the user you configure. Odoo's access rights apply.
  • Runs locally over stdio. No telemetry; it connects only to your Odoo.

Built by Helios One. MIT license.

Quickstart (2 minutes)

You need Node.js 20 or newer and an Odoo user that can log in to the external API.

1. Get an API key in Odoo (recommended over a password): click your avatar, then My Profile / Preferences, open Account Security, click New API Key. Copy the key.

2. Add the server to your MCP client.

Claude Code:

sh
claude mcp add odoo \  -e ODOO_URL=https://odoo.example.com \  -e ODOO_DB=mydb \  -e [email protected] \  -e ODOO_API_KEY=your-api-key \  -- npx -y @heliosone/odoo-mcp

Claude Desktop: open Settings > Developer > Edit Config and add this to claude_desktop_config.json, then restart Claude Desktop:

json
{  "mcpServers": {    "odoo": {      "command": "npx",      "args": ["-y", "@heliosone/odoo-mcp"],      "env": {        "ODOO_URL": "https://odoo.example.com",        "ODOO_DB": "mydb",        "ODOO_USERNAME": "[email protected]",        "ODOO_API_KEY": "your-api-key"      }    }  }}

3. Ask, for example: "Which purchase order lines are late, and by how many days?" or "What is the status of S00042?"

Settings

VariableRequiredMeaning
ODOO_URLyesBase URL of your Odoo, e.g. https://odoo.example.com
ODOO_DByesDatabase name
ODOO_USERNAMEyesThe user's login
ODOO_API_KEYone of these twoAPI key of that user (used in place of the password)
ODOO_PASSWORDThe user's password
ODOO_MCP_ENABLE_WRITESnotrue allows the write tool. Anything else keeps the server read-only.
ODOO_TIMEOUT_MSnoRequest timeout, default 30000

The server starts even when settings are missing, so your client can list the tools. Each call then returns CONFIGURATION_ERROR with the names of the missing settings.

Tools

ToolWhat it returns
list_open_sales_ordersConfirmed sales orders not fully delivered (includeQuotations adds quotations)
list_open_purchase_ordersConfirmed purchase orders not fully received (includeRfqs adds RFQs)
get_order_statusOne sales or purchase order with lines (ordered / delivered or received / invoiced) and its transfers. By id, number or customer/vendor reference.
list_supplier_promise_datesOpen lines on confirmed POs with the vendor's expected arrival date, soonest first
list_late_purchase_linesPO lines past their expected arrival and not fully received, with days_late
list_late_sales_linesSales lines past their promised date and not fully delivered, with days_late. Promised date = the order's commitment date, else order date + the line's lead time.
list_manufacturing_ordersManufacturing orders with state, quantity, planned dates, component availability
list_work_ordersWork orders: operation, work center, state, expected and actual duration
list_shipmentsReceipts, deliveries or internal transfers; lateOnly for those past their scheduled date
lookup_customerContacts by name, email, reference or VAT, customers first
lookup_supplierContacts by name, email, reference or VAT, suppliers first
get_inventory_on_handProduct quantities: on hand, forecast, incoming, outgoing
update_po_line_promise_dateWrite. Sets one PO line's expected arrival date. See below.

List tools take limit (default 50, max 500) and offset. Results are Odoo's own field values, plus a few computed fields (qty_open, days_late, promised_date). Fields that do not exist in your Odoo version are left out.

The write tool

update_po_line_promise_date changes date_planned on one purchase order line (for example after a vendor confirms a new date). It runs only when both are true:

  1. the server was started with ODOO_MCP_ENABLE_WRITES=true, and
  2. the call includes "confirmation": "CONFIRM update_po_line_promise_date".

Otherwise it returns WRITES_DISABLED or CONFIRMATION_REQUIRED and does not call Odoo. A date without a time is stored as 12:00 UTC so it shows as the same day in most time zones. The result shows the value before and after.

What has been tested

Tested on 24 October 2026, with the packed npm tarball installed into an empty project and its odoo-mcp command driven over stdio by the official MCP TypeScript SDK client, against fresh self-hosted Odoo Community 17.0, 18.0 and 19.0 (built from the official odoo/odoo branches; Sales, Purchase, Inventory and Manufacturing installed; fictional records). In each version:

  • all 13 tools were listed and all 12 read tools returned the seeded records (21 tool calls and 25 checks per version, all passed);
  • the write tool was refused with writes off (WRITES_DISABLED), refused without the confirmation text (CONFIRMATION_REQUIRED), then succeeded, and a direct Odoo read confirmed the new date;
  • the server logged in with an Odoo API key; one session used the plain password instead, and a wrong password returned AUTH_FAILED;
  • one call also went through the MCP Inspector CLI.

Logs: proof/. Unit tests (npm test, against an in-memory fake Odoo) pass on Node.js 20 and 25.

Not tested: Odoo Online (odoo.com hosting) and Odoo.sh, Odoo Enterprise, Odoo versions before 17, multi-company setups, and large databases. Odoo Online offers the external API only on some plans. Odoo 19 deprecated /jsonrpc (removal planned for Odoo 22, fall 2028, and Odoo Online 21.1, winter 2027) in favour of its JSON-2 API; this server does not use JSON-2 yet. Odoo 19 logs a deprecation warning for each /jsonrpc call.

Development

sh
npm cinpm test

proof/run-live.sh 18.0 repeats the live test in a disposable Linux machine (it installs PostgreSQL and Odoo; do not run it on your workstation).

Security

See SECURITY.md. Use a dedicated Odoo user with only the rights the assistant needs.

License

MIT, see LICENSE.

來源:README.md,提交 f12961c

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.0最新Oct 29, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分