Running Odoo 18 Entirely Through AI
A live demonstration of managing a real Sales Order through conversational AI — not a single manual click in the Odoo UI.
What happens when you let an AI assistant drive your ERP directly? We wanted to find out — so we built odoo-claude-mcp, an open-source MCP (Model Context Protocol) server that exposes 30+ Odoo tools to Claude Code, and recorded a four-minute session that shows exactly what conversational ERP looks like in practice.
The full 4-minute demo — Claude Code reading, writing, deleting and refreshing an Odoo Sales Order through MCP tool calls.
The setup
On the left you see a standard Odoo 18 Sales Order form — quotation S00040 for a customer called Kondor Ltd, with two Solid Pulse 3D door variants totalling 3,468 BGN including 20% VAT. Nothing unusual so far. It's the right side of the screen that makes this interesting: a Claude Code terminal running Opus 4.6 with a one-million-token context window, connected to the live Odoo instance through our MCP bridge.
No plugins. No server-side code changes. The MCP server runs as a separate Docker container and talks to Odoo over XML-RPC / JSON-RPC using a regular API key. From Claude's perspective, every Odoo model is just a set of typed tools it can call with natural arguments.
The conversation
The demo opens with a plain-English (well, plain-Bulgarian in the original recording) question: "show me where you're logged in and what you're doing right now". Claude reacts like any careful engineer would:
- It calls
odoo_connectionsto enumerate configured instances. - Then
odoo_readon the opensale.orderto gather state, totals, currency and partner. - Finally it summarises what it found in plain language: "open document — a quotation for BL Consulting Ltd, 3 items, total 3,468 BGN."
The next request is deliberately casual: "switch this S00040 to a different company." Claude searches res.partner with an is_company filter, picks BATSD INVEST Ltd from Plovdiv, and writes the new partner_id onto the order. A follow-up call to odoo_refresh tells the user's browser to reload the view — no F5, no manual refresh. The header updates in place.
Editing the order
Next comes "make this 3D oak PULSE two pieces and remove the other line." Claude reads the lines, identifies both products, calls odoo_unlink on the dark chestnut variant, then odoo_write to set product_uom_qty = 2 on the surviving row. Odoo's own pricing engine does the rest — the new total of 867 BGN including VAT and discount shows up after the next refresh. No recompute code on our side. We're just driving the standard Odoo APIs.
Writing rich-text content
The final request asks Claude to add a marketing description of the Solid Pulse doors to the order's note field. Claude generates a block of styled HTML — paragraphs, emphasis, the whole lot — and writes it via odoo_write against the note field of the line. The first attempt hits an RPC fault in the Odoo controller. That would stop a naive script dead. Instead, Claude catches the error, corrects the format, and retries. It's a small moment, but it's the one that makes the whole thing feel real.
Why this matters
Four minutes. Zero manual clicks. Read, write, unlink, search, refresh — every operation an ERP consultant does day in and day out, expressed as a conversation in the language the client already speaks. The implications are obvious: testing new scenarios takes seconds instead of minutes, data migrations and bulk operations become dictatable, and — most importantly — the gap between "here's what I want" and "here's what the system does" collapses.
The odoo-rpc-mcp server exposes 30+ tools today: CRUD operations, fiscal position configuration, report generation, Gmail and Google Calendar integration, and a live view-refresh mechanism that needs just a tiny companion module inside Odoo itself. It works against any Odoo version from 17 onwards, automatically picking XML-RPC for older releases and JSON-RPC for newer ones. Authentication is via API key, so you never ship a password. Logs are sanitised. And the whole thing runs in Docker Compose, so a new client can be wired up in two minutes.
Try it yourself
The code is fully open source under LGPL-3 on GitHub: github.com/rosenvladimirov/odoo-claude-mcp. Clone the repository, copy .env.example to .env, fill in your Odoo URL, database and API key, and run docker compose up -d —build. You'll have a browser terminal with Claude Code pre-wired to your instance in under five minutes.
If you're curious, cautious, or already imagining the ERP workflow you want to automate first — drop us a line. We're using this in production today and would love to hear what you'd build with it.