Enables comprehensive interaction with Odoo ERP systems via XML-RPC, providing tools for executing methods on Odoo models, searching employees and holidays, and accessing Odoo resources including models, records, and domain-based searches.
Odoo-MCP
A modern bridge system for interacting with Odoo ERP systems through MCP (Model Context Protocol).
Features
Comprehensive Odoo Integration: Full access to Odoo models, records, and methods
XML-RPC Communication: Secure connection to Odoo instances via XML-RPC
Flexible Configuration: Support for config files and environment variables
Resource Pattern System: URI-based access to Odoo data structures
Error Handling: Clear error messages for common Odoo API issues
Stateless Operations: Clean request/response cycle for reliable integration
Tools
execute_method
Execute a custom method on an Odoo model
Inputs:
model(string): The model name (e.g., 'res.partner')method(string): Method name to executeargs(optional array): Positional argumentskwargs(optional object): Keyword arguments
Returns: Dictionary with the method result and success indicator
search_employee
Search for employees by name
Inputs:
name(string): The name (or part of the name) to search forlimit(optional number): The maximum number of results to return (default 20)
Returns: Object containing success indicator, list of matching employee names and IDs, and any error message
search_holidays
Searches for holidays within a specified date range
Inputs:
start_date(string): Start date in YYYY-MM-DD formatend_date(string): End date in YYYY-MM-DD formatemployee_id(optional number): Optional employee ID to filter holidays
Returns: Object containing success indicator, list of holidays found, and any error message
Resources
odoo://models
Lists all available models in the Odoo system
Returns: JSON array of model information
odoo://model/{model_name}
Get information about a specific model including fields
Example:
odoo://model/res.partnerReturns: JSON object with model metadata and field definitions
odoo://record/{model_name}/{record_id}
Get a specific record by ID
Example:
odoo://record/res.partner/1Returns: JSON object with record data
odoo://search/{model_name}/{domain}
Search for records that match a domain
Example:
odoo://search/res.partner/[["is_company","=",true]]Returns: JSON array of matching records (limited to 10 by default)
Configuration
Odoo Connection Setup
Create a configuration file named
odoo_config.json:
Alternatively, use environment variables:
ODOO_URL: Your Odoo server URLODOO_DB: Database nameODOO_USERNAME: Login usernameODOO_PASSWORD: Password or API keyODOO_TIMEOUT: Connection timeout in seconds (default: 30)ODOO_VERIFY_SSL: Whether to verify SSL certificates (default: true)HTTP_PROXY: Force the ODOO connection to use an HTTP proxy
Usage with Claude Desktop
Add this to your claude_desktop_config.json:
Docker
Installation
Python Package
Running the Server
Build
Docker build:
Parameter Formatting Guidelines
When using the MCP tools for Odoo, pay attention to these parameter formatting guidelines:
Domain Parameter:
The following domain formats are supported:
List format:
[["field", "operator", value], ...]Object format:
{"conditions": [{"field": "...", "operator": "...", "value": "..."}]}JSON string of either format
Examples:
List format:
[["is_company", "=", true]]Object format:
{"conditions": [{"field": "date_order", "operator": ">=", "value": "2025-03-01"}]}Multiple conditions:
[["date_order", ">=", "2025-03-01"], ["date_order", "<=", "2025-03-31"]]
Fields Parameter:
Should be an array of field names:
["name", "email", "phone"]The server will try to parse string inputs as JSON
License
This MCP server is licensed under the MIT License.