
MCP Server for Odoo
Search, create, update and aggregate Odoo ERP records from AI assistants via XML-RPC.
Add to your client
Copy the config for your MCP client and paste it into its config file.
uvx mcp-server-odooPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"mcp-server-for-odoo": {
"command": "uvx",
"args": [
"mcp-server-odoo"
],
"env": {
"ODOO_URL": "https://your-odoo-instance.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_DB": "your-database-name"
}
}
}
}Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.
Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- Python 3.10 or higher
- UV installed on the local machine (or use the pip/Docker install methods)
- Access to an Odoo instance — production: Odoo 16.0+ with the mcp_server module installed; YOLO/testing: any Odoo with XML-RPC enabled
- An Odoo API key (recommended) or username/password credentials
- ODOO_DB set if the Odoo server restricts database listing
About MCP Server for Odoo
mcp-server-odoo bridges MCP clients (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code Copilot, Zed) to an Odoo ERP instance. It translates MCP tool calls into Odoo XML-RPC requests, handling authentication, access control, field selection, pagination, data formatting and error handling. The server runs locally (via uvx, pip/pipx, or Docker) where the AI client lives, not on the Odoo server. Standard production mode requires the Odoo mcp_server module (Odoo 16.0+) which gates which models are exposed and enforces read/write/create/delete permissions per model; an opt-in YOLO mode lets it talk directly to any XML-RPC-enabled Odoo for development and demos.
Tools & capabilities (10)
search_recordsSearch for records in any Odoo model using a domain filter, with optional field selection, pagination and a smart-default field set.
get_recordRetrieve a specific record by ID, with smart-default fields and metadata or an explicit field list.
list_modelsList all models enabled for MCP access.
list_resource_templatesList the available resource URI templates and their patterns.
create_recordCreate a new record in a given model from a values dict, with field validation and permission checks.
update_recordUpdate an existing record by ID with new field values.
delete_recordDelete a record by ID, respecting model-level permissions.
post_messagePost a message to a record's chatter (mail.thread) as an internal note or a follower-notifying comment; supports HTML body, partner mentions and attachments.
aggregate_recordsServer-side aggregation: group, sum and count records in PostgreSQL (via formatted_read_group / read_group) instead of pulling raw rows; defaults to a count per group.
call_model_methodEscape hatch that invokes any public method on any model via XML-RPC execute_kw for workflow actions (e.g. action_post, action_confirm). Registered only when ODOO_YOLO=true and ODOO_MCP_ENABLE_METHOD_CALLS=true; can call destructive methods, so use only in trusted environments.
What this server can do
MCP Server for Odoo provides tools for these capabilities — tap one to see every MCP server that does the same:
When to use it
- Query business data in natural language — e.g. customers from a country, products with low stock, unpaid invoices from last month
- Create and update Odoo records such as contacts, products and calendar events from a chat assistant
- Produce totals and groupings (sales by month, partners by country) with server-side aggregation
- Inspect model field definitions to understand an Odoo data model
- Drive Odoo workflow actions (post invoice, confirm sales order, validate picking) via the opt-in method-call tool in trusted setups
Security notes
API key auth is recommended; each key is tied to a specific Odoo user and respects Odoo's built-in access rights and record rules. The optional Odoo mcp_server module adds per-model MCP access controls. The streamable-http transport has NO built-in client authentication — anyone who can reach the port gets full Odoo access with the server's credentials, so keep the default localhost bind or front it with an authenticating reverse proxy. YOLO mode bypasses all MCP security controls and must never be used in production. The call_model_method tool can invoke any public method (including destructive ones like unlink) and is only registered when ODOO_YOLO=true and ODOO_MCP_ENABLE_METHOD_CALLS=true.
MCP Server for Odoo FAQ
Do I need to install anything inside Odoo?
For production use, yes — install the Odoo mcp_server module (Odoo 16.0+), enable the models you want to expose, set per-model permissions, and generate an API key. For quick testing/demos you can use YOLO mode against any XML-RPC-enabled Odoo without the module, but YOLO mode bypasses all MCP security and must never be used in production.
How does authentication work?
Set ODOO_API_KEY (recommended) or both ODOO_USER and ODOO_PASSWORD. An API key is linked to a specific Odoo user and the server respects that user's access rights and record rules. Specify ODOO_DB if your server restricts database listing.
Where does the server run?
On your local computer where the MCP client (e.g. Claude Desktop) is installed — not on the Odoo server. It connects out to Odoo over XML-RPC. It can be run via uvx, pip/pipx, or Docker.
Is the HTTP transport safe to expose?
No. The streamable-http transport has no built-in client authentication, so anyone who can reach the port gets full Odoo access with the server's credentials. Keep the default localhost bind or place an authenticating reverse proxy in front of it.
Alternatives to MCP Server for Odoo
Compare all alternatives →AI-powered task-management system for AI-driven development that drops into Cursor, Windsurf, Claude Code, and more.
Background computer-use MCP server that drives native macOS, Windows, and Linux desktop apps without stealing focus.
Self-hosted MCP server for Jira and Confluence Cloud and Server/Data Center.
Compare MCP Server for Odoo with: