"Show me all unpaid invoices over 5,000 euros from Q4." You type it into Claude, and within seconds you have the answer. Straight from Odoo. No CSV exports, no switching tabs, no writing queries.
That's exactly what we built: odoo-mcp-pro, an open-source bridge between Claude AI and your Odoo environment. In this article, we explain how it works, what we learned, and how you can use it yourself.
The Problem: Querying Data Takes Too Many Steps
Everyone who works with Odoo knows it. You want to quickly look something up, but first you need to find the right menu, set the right filters, and then hope you see the right columns. For simple questions like "which orders from last month still have no delivery?" you easily lose a few minutes.
What if you could just ask that question, in plain English, and get the answer immediately?
The Solution: Claude Talks Directly to Odoo
With odoo-mcp-pro, you connect Claude AI directly to your Odoo instance. Claude can then:
- Search and filter: "Find all contacts in Amsterdam with an open quotation"
- Create records: "Create a lead for Acme Corp, expected revenue 50k"
- Update data: "Mark invoice INV-2024-0042 as paid"
- Explore your data model: "What fields does the sale.order model have?"
- Cross-reference: "Which sales orders from last month still have no delivery?"
All through a normal conversation. Claude determines which API calls are needed. You just ask your question.
Built on the New Odoo 19 JSON/2 API
Odoo 19 introduced a completely new API: JSON/2. This replaces the old XML-RPC interface that had been the standard for years. Key improvements:
- Modern REST-like endpoints:
POST /json/2/{model}/{method} - Bearer token authentication: API key in the header, no more password per call
- Real HTTP status codes: 401, 403, 404 instead of everything-is-200-with-an-error-message
- No custom module needed: Odoo handles access control server-side
Important for the future: XML-RPC will be removed in Odoo 20. Anyone still using XML-RPC for integrations should plan to switch. odoo-mcp-pro supports both: JSON/2 for Odoo 19+ and XML-RPC for Odoo 14-18.
How Does It Work Technically?
odoo-mcp-pro is an MCP server (Model Context Protocol), the open standard that allows AI assistants to call external tools. The server offers 6 tools to Claude:
| Tool | What it does |
|---|---|
search_records | Search with domain filters, sorting and pagination |
get_record | Retrieve a specific record by ID |
list_models | Discover available Odoo models |
create_record | Create a new record |
update_record | Update fields of an existing record |
delete_record | Delete a record |
When you ask "Find all unpaid invoices over 5,000 euros", Claude translates that to:
search_records(
model="account.move",
domain=[["payment_state", "=", "not_paid"], ["amount_total", ">", 5000]],
fields=["name", "partner_id", "amount_total", "invoice_date_due"]
)
A smart field selection algorithm ensures you always get the most relevant fields back. Not the hundreds of internal fields that Odoo models have by default.
Two Ways to Get Started
Local (5 Minutes)
For Claude Code or Claude Desktop. Install the project and connect it with a few commands:
git clone https://github.com/pantalytics/odoo-mcp-pro.git
cd odoo-mcp-pro
uv venv && source .venv/bin/activate
uv pip install -e .
claude mcp add -s user \
-e "ODOO_URL=https://your-odoo.com" \
-e "ODOO_DB=your_database" \
-e "ODOO_API_KEY=your_api_key" \
-e "ODOO_API_VERSION=json2" \
-e "ODOO_YOLO=true" \
-- odoo python -m mcp_server_odoo
Done. Ask Claude: "Show the 5 most recent sales orders" to test.
Cloud (For Teams)
For Claude.ai (web) or multi-user setups, deploy the MCP server on a VPS with OAuth 2.1 via Zitadel. Users click "Connect" in Claude.ai, log in once, and they're done. No API keys, no technical setup.
Claude.ai > OAuth 2.1 > Caddy (TLS) > MCP Server > Odoo
|
Zitadel (IdP)
The Odoo API key stays on the server. Users never see it. Each user gets their own OAuth token, and Odoo's own access control (ACLs and record rules) determines what they can see.
What We Learned
A few lessons useful for anyone wanting to connect AI to business data:
- Start read-only. Search and read first. Write operations are a separate chapter: validation, required fields, relational fields.
- Limit the number of fields. Don't send all 200 fields of sale.order to the AI. Choose the top 15-20 that matter. This dramatically improves answer quality.
- Include examples in your tool descriptions. AI models generate much better Odoo domain filters when they see examples like
[["state", "=", "sale"], ["partner_id.country_id.code", "=", "NL"]]. - Use the API key of a user with realistic permissions. Not the admin key in production. Odoo's ACLs are your safety net.
Open Source and Production-Ready
odoo-mcp-pro is fully open source under the MPL-2.0 license (the same as Odoo Community). The project includes:
- JSON/2 client for Odoo 19+ and XML-RPC for Odoo 14-18
- 6 tools and 4 MCP resources
- Smart field selection algorithm
- OAuth 2.1 for secure cloud deployments
- 480+ unit tests
Originally a fork of mcp-server-odoo by Andrey Ivanov, since expanded with the JSON/2 client, OAuth 2.1, multi-instance cloud deployment and a comprehensive test suite.
Need Help?
Want to connect Claude to your Odoo environment but don't know where to start? We're happy to help. From a local proof-of-concept to a full cloud deployment with OAuth for your entire team.