About odoo-mcp-connector
odoo-mcp-connector connects Odoo ERP to Claude and other MCP clients for natural-language data queries and reporting. It works with any Odoo model, is read-only by default, and enables writes only when explicitly configured.
Key features
- 01Search, read, and count records in any model
- 02Inspect model lists and field information
- 03Query overdue invoices, sales, and stock
- 04Rank customers by invoiced revenue
- 05Optionally enable record creation, updates, and deletion
Use cases
- 01Query records in a specific Odoo model
- 02Create a sales summary for a date range
- 03Find overdue invoices or low-stock products
- 04Modify ERP records after enabling writes
MCP support
The MCP server exposes Odoo model search, read, count, and business reporting tools to clients; creating, updating, and deleting records are also available when writes are enabled.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y odoo-mcp-connectorODOO_URLOdoo base URL, e.g. https://your-company.odoo.comODOO_DBOdoo database nameODOO_USERNAMEOdoo login (email)ODOO_API_KEYSecretOdoo API key (or password)ODOO_ENABLE_WRITESSet to 'true' to allow create/update/delete. Default false (read-only).ODOO_TIMEOUT_MSPer-request timeout in milliseconds (default 30000).Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
9Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | No | Max records (default 50). |
| model | string | Yes | Model technical name, e.g. 'res.partner', 'sale.order', 'account.move'. |
| order | string | No | Sort spec, e.g. 'create_date desc'. |
| domain | array | No | Odoo search domain, e.g. [["is_company","=",true]]. Omit for all records. |
| fields | array | No | Field names to return. Omit for all fields. |
| offset | integer | No | Records to skip (default 0). |
Details
From the project READMEOdoo MCP Server
A Model Context Protocol server for Odoo. Connect Claude (or any MCP client) to your own Odoo ERP and query, report on, and optionally modify your data in natural language.
Works with any Odoo model. Safe by default: read only unless you explicitly enable writes. Your credentials stay on your machine. Nothing is stored or sent anywhere except your own Odoo instance.
Features
- Generic access to any model: search, read, count, introspect fields, list models
- Ready made business tools: overdue invoices, sales summary, low stock products, top customers
- Read only by default: create, update and delete only when you opt in (
ODOO_ENABLE_WRITES=true) - Your data, your machine: configured entirely through environment variables
Install
Add this to your MCP client config (e.g. Claude Desktop or Claude Code):
{
"mcpServers": {
"odoo": {
"command": "npx",
"args": ["-y", "odoo-mcp-connector"],
"env": {
"ODOO_URL": "https://your-company.odoo.com",
"ODOO_DB": "your-database",
"ODOO_USERNAME": "[email protected]",
"ODOO_API_KEY": "your-odoo-api-key"
}
}
}
}
Getting an Odoo API key
In Odoo: Settings, Users, your user, Account Security, New API Key. Paste the generated key into ODOO_API_KEY. (A password also works, but an API key is safer and revocable.)
Enabling writes
Read only is the default. To let the model create, update, or delete records, add:
"ODOO_ENABLE_WRITES": "true"
Odoo holds real business data. Enable writes only when you accept that the model can create, modify or delete records, always within your Odoo user's own permissions.
Tools
Always available (read only)
| Tool | Purpose |
|---|---|
odoo_search_read | Search + read records from any model |
odoo_read | Read records by ID |
odoo_count | Count records matching a domain |
odoo_fields | Introspect a model's fields (name, type, label) |
odoo_list_models | List available models |
odoo_overdue_invoices | Unpaid customer invoices past their due date |
odoo_sales_summary | Revenue + order count over a date range |
odoo_low_stock | Products at/below a quantity threshold |
odoo_top_customers | Top customers by invoiced revenue |
Only when ODOO_ENABLE_WRITES=true
| Tool | Purpose |
|---|---|
odoo_create | Create a record |
odoo_write | Update records by ID |
odoo_unlink | Delete records by ID (irreversible) |
odoo_call | Call an arbitrary model method |
Configuration reference
| Variable | Required | Default | Description |
|---|---|---|---|
ODOO_URL | yes | Your Odoo base URL | |
ODOO_DB | yes | Database name | |
ODOO_USERNAME | yes | Login (email) | |
ODOO_API_KEY | yes | API key (or password) | |
ODOO_ENABLE_WRITES | no | false | Set "true" to allow writes |
ODOO_TIMEOUT_MS | no | 30000 | Per-request timeout (ms) |
Development
npm install
npm test # vitest, fully mocked, no live Odoo needed
npm run build
License
MIT, Falak Sarhan Saade
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.