
Odoo
STDIOMCP server for AI assistants to interact with Odoo ERP systems via natural language.
MCP server for AI assistants to interact with Odoo ERP systems via natural language.
An MCP server that enables AI assistants like Claude to interact with Odoo ERP systems. Access business data, search records, and work with Odoo through natural language.
Add this configuration to your MCP settings:
Add to ~/Library/Application Support/Claude/claude_desktop_config.json
:
{ "mcpServers": { "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" } } } }
Add to ~/.cursor/mcp_settings.json
:
{ "mcpServers": { "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" } } } }
Add to your VS Code settings (~/.vscode/mcp_settings.json
or workspace settings):
{ "github.copilot.chat.mcpServers": { "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" } } } }
Add to ~/.config/zed/settings.json
:
{ "context_servers": { "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" } } } }
# Install globally pip install mcp-server-odoo # Or use pipx for isolated environment pipx install mcp-server-odoo
Then use mcp-server-odoo
as the command in your MCP configuration.
git clone https://github.com/ivnvxd/mcp-server-odoo.git cd mcp-server-odoo pip install -e .
Then use the full path to the package in your MCP configuration.
The server requires the following environment variables:
Variable | Required | Description | Example |
---|---|---|---|
ODOO_URL | Yes | Your Odoo instance URL | https://mycompany.odoo.com |
ODOO_API_KEY | Yes* | API key for authentication | 0ef5b399e9ee9c11b053dfb6eeba8de473c29fcd |
ODOO_USER | Yes* | Username (if not using API key) | admin |
ODOO_PASSWORD | Yes* | Password (if not using API key) | admin |
ODOO_DB | No | Database name (auto-detected if not set) | mycompany |
*Either ODOO_API_KEY
or both ODOO_USER
and ODOO_PASSWORD
are required.
Install the MCP module:
Enable models for MCP access:
Generate an API key:
Once configured, you can ask Claude:
search_records
Search for records in any Odoo model with filters.
{ "model": "res.partner", "domain": [["is_company", "=", true], ["country_id.code", "=", "ES"]], "fields": ["name", "email", "phone"], "limit": 10 }
Field Selection Options:
fields
or set to null
: Returns smart selection of common fields["__all__"]
: Returns all fields (use with caution)get_record
Retrieve a specific record by ID.
{ "model": "res.partner", "record_id": 42, "fields": ["name", "email", "street", "city"] }
Field Selection Options:
fields
or set to null
: Returns smart selection of common fields with metadata["__all__"]
: Returns all fields without metadatalist_models
List all models enabled for MCP access.
{}
create_record
Create a new record in Odoo.
{ "model": "res.partner", "values": { "name": "New Customer", "email": "[email protected]", "is_company": true } }
update_record
Update an existing record.
{ "model": "res.partner", "record_id": 42, "values": { "phone": "+1234567890", "website": "https://example.com" } }
delete_record
Delete a record from Odoo.
{ "model": "res.partner", "record_id": 42 }
The server also provides direct access to Odoo data through resource URIs:
odoo://res.partner/record/1
- Get partner with ID 1odoo://product.product/search?domain=[["qty_available",">",0]]
- Search products in stockodoo://sale.order/browse?ids=1,2,3
- Browse multiple sales ordersodoo://res.partner/count?domain=[["customer_rank",">",0]]
- Count customersodoo://product.product/fields
- List available fields for productsIf you're getting connection errors:
https://your-odoo.com/mcp/health
If authentication fails:
If you can't access certain models:
Enable debug logging for more information:
{ "env": { "ODOO_URL": "https://your-odoo.com", "ODOO_API_KEY": "your-key", "ODOO_MCP_LOG_LEVEL": "DEBUG" } }
# Clone the repository git clone https://github.com/ivnvxd/mcp-server-odoo.git cd mcp-server-odoo # Install in development mode pip install -e ".[dev]" # Run tests pytest --cov # Run the server python -m mcp_server_odoo
# Using uvx npx @modelcontextprotocol/inspector uvx mcp-server-odoo # Using local installation npx @modelcontextprotocol/inspector python -m mcp_server_odoo
This project is licensed under the Mozilla Public License 2.0 (MPL-2.0) - see the LICENSE file for details.
Contributions are very welcome! Please see the CONTRIBUTING guide for details.
Thank you for using this project! If you find it helpful and would like to support my work, kindly consider buying me a coffee. Your support is greatly appreciated!
And do not forget to give the project a star if you like it! :star: