Odoo MCP Server
An MCP server implementation that integrates with Odoo ERP systems, enabling AI assistants to interact with Odoo data and functionality through the 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
search_records
- Search for records in any Odoo model
- Inputs:
model(string): The model name (e.g., ‘res.partner’)domain(array): Search domain (e.g., [[‘is_company’, ‘=’, true]])fields(optional array): Optional fields to fetchlimit(optional number): Maximum number of records to return
- Returns: Matching records with requested fields
read_record
- Read details of a specific record
- Inputs:
model(string): The model name (e.g., ‘res.partner’)id(number): The record IDfields(optional array): Optional fields to fetch
- Returns: Record data with requested fields
create_record
- Create a new record in Odoo
- Inputs:
model(string): The model name (e.g., ‘res.partner’)values(object): Dictionary of field values
- Returns: Dictionary with the new record ID
update_record
- Update an existing record
- Inputs:
model(string): The model name (e.g., ‘res.partner’)id(number): The record IDvalues(object): Dictionary of field values to update
- Returns: Dictionary indicating success
delete_record
- Delete a record from Odoo
- Inputs:
model(string): The model name (e.g., ‘res.partner’)id(number): The record ID
- Returns: Dictionary indicating success
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
get_model_fields
- Get field definitions for a model
- Inputs:
model(string): The model name (e.g., ‘res.partner’)
- Returns: Dictionary with field definitions
search_employee
- Search for employees by name.
- Inputs:
name(string): The name (or part of the name) to search for.limit(optional number): The maximum number of results to return (default 20).
- Returns: List of matching employee names and IDs.
search_holidays
- Searches for holidays within a specified date range.
- Inputs:
start_date(string): Start date in YYYY-MM-DD format.end_date(string): End date in YYYY-MM-DD format.employee_id(optional number): Optional employee ID to filter holidays.
- Returns: List of holidays found.
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.partner - Returns: 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/1 - Returns: 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:
{
"url": "https://your-odoo-instance.com",
"db": "your-database-name",
"username": "your-username",
"password": "your-password-or-api-key"
}
- 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:
{
"mcpServers": {
"odoo": {
"command": "python",
"args": [
"-m",
"odoo_mcp"
],
"env": {
"ODOO_URL": "https://your-odoo-instance.com",
"ODOO_DB": "your-database-name",
"ODOO_USERNAME": "your-username",
"ODOO_PASSWORD": "your-password-or-api-key"
}
}
}
}
Docker
{
"mcpServers": {
"odoo": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ODOO_URL",
"-e",
"ODOO_DB",
"-e",
"ODOO_USERNAME",
"-e",
"ODOO_PASSWORD",
"mcp/odoo"
],
"env": {
"ODOO_URL": "https://your-odoo-instance.com",
"ODOO_DB": "your-database-name",
"ODOO_USERNAME": "your-username",
"ODOO_PASSWORD": "your-password-or-api-key"
}
}
}
}
Installation
Python Package
pip install odoo-mcp
Running the Server
# Using the installed package
odoo-mcp
# Using the MCP development tools
mcp dev odoo_mcp/server.py
# With additional dependencies
mcp dev odoo_mcp/server.py --with pandas --with numpy
# Mount local code for development
mcp dev odoo_mcp/server.py --with-editable .
Build
Docker build:
docker build -t mcp/odoo:latest -f Dockerfile .
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
- List 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"]]
- List format:
- The following domain formats are supported:
Fields Parameter:
- Should be an array of field names:
["name", "email", "phone"] - The server will try to parse string inputs as JSON
- Should be an array of field names:
License
This MCP server is licensed under the MIT License.
Odoo MCP Server
Project Details
- Willval117/mcp-to-odoo
- Last Updated: 4/11/2025
Recomended MCP Servers
LongPort OpenAPI SDK Base.
This read-only MCP Server allows you to connect to PostgreSQL data from Claude Desktop through CData JDBC Drivers....
A complete walkthrough on how to build an MCP server to serve a trained Random Forest model and...
基于 Model Context Protocol (MCP) 协议的全网热点趋势一站式聚合服务
MCP server to access Singapore's LTA data
MCP Server for transcribing videos via video links and summarizing video content
Pretty PowerShell that looks good and functions almost as good as Linux terminal
An mcp server to inject raw chain of thought tokens from a reasoning model.
MCP server that allows simple SAP GUI interaction for LLM models using simulated mouse clicks and keyboard input.





