odoo-mcp-xyt
Provides tools for interacting with Odoo ERP, including executing custom methods on models, searching employees and holidays, and accessing resources such as model listings, field definitions, record data, and domain-based search via URI patterns.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@odoo-mcp-xytSearch for employees with name 'Smith'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
UVX 方式安装 odoo mcp 服务
{
"mcpServers": {
"odoo-mcp-xyt": {
"command": "uvx",
"args": [
"odoo-mcp-xyt==2.1.0.0"
],
"env": {
"ODOO_URL": "",
"ODOO_DB": "",
"ODOO_USERNAME": "",
"ODOO_PASSWORD": ""
}
}
}
}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.
Quick Start
Install Python 3.10+ and create a virtual environment
Clone and install the project:
git clone <repository-url> cd odoo-mcp-xyt pip install -e .Configure Odoo connection in
odoo_config.json:{ "url": "https://your-odoo-instance.com", "db": "your-database-name", "username": "your-username", "password": "your-password-or-api-key" }Run the server:
python -m odoo_mcpTest with MCP Inspector:
npx @modelcontextprotocol/inspector
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:
{
"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 and Setup
Prerequisites
Python 3.10+ (required for MCP compatibility)
Node.js (for MCP Inspector)
1. Environment Setup
Create a Python 3.10+ environment:
# Using conda
conda create -n odoo-mcp python=3.10 -y
conda activate odoo-mcp
# Or using venv
python3.10 -m venv odoo-mcp
source odoo-mcp/bin/activate # On Windows: odoo-mcp\Scripts\activate2. Install Dependencies
# Install the project in development mode
pip install -e .
# Install MCP CLI tools for debugging
pip install 'mcp[cli]'3. Configuration
Create odoo_config.json with your Odoo connection details:
{
"url": "https://your-odoo-instance.com",
"db": "your-database-name",
"username": "your-username",
"password": "your-password-or-api-key"
}Running and Debugging
Method 1: Direct Python Execution (Recommended)
# Using the installed package command
/path/to/your/python/bin/odoo-mcp-xyt
# Using Python module
/path/to/your/python/bin/python -m odoo_mcp
# Using the detailed logging script
/path/to/your/python/bin/python run_server.pyMethod 2: MCP Inspector for Development and Testing
Step 1: Start MCP Inspector
# Start the inspector
npx @modelcontextprotocol/inspectorThis will output something like:
⚙️ Proxy server listening on 127.0.0.1:6277
🔑 Session token: your-session-token-here
🔗 Open inspector with token pre-filled:
http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=your-session-token-here
🔍 MCP Inspector is up and running at http://127.0.0.1:6274 🚀Step 2: Configure Server in Inspector
Open the Inspector URL in your browser
Enter the session token if prompted
Click "Add Server" and use this configuration:
{
"name": "Odoo MCP Server",
"command": "/path/to/your/python/bin/python",
"args": ["/path/to/your/project/start_for_inspector.py"],
"env": {}
}Example with actual paths:
{
"name": "Odoo MCP Server",
"command": "/Users/username/miniconda3/envs/odoo-mcp/bin/python",
"args": ["/Users/username/code/odoo-mcp-xyt/start_for_inspector.py"],
"env": {}
}Method 3: Using MCP Development Tools (Alternative)
# Basic usage
mcp dev src/odoo_mcp/server.py
# With additional dependencies
mcp dev src/odoo_mcp/server.py --with pandas --with numpy
# Mount local code for development
mcp dev src/odoo_mcp/server.py --with-editable .Note: If you encounter uv related errors, use Method 1 or 2 instead.
Troubleshooting
Common Issues
Python Version Error: Ensure you're using Python 3.10+
python --version # Should show 3.10 or higherConnection Errors: Test your Odoo connection
python diagnose_connection.pyMCP Inspector JSON Errors: Use Method 2 (manual Inspector setup) instead of
mcp devImport Errors: Ensure all dependencies are installed
pip install -e . pip install 'mcp[cli]'
Debugging Tools
Connection Diagnostics:
python diagnose_connection.pyDetailed Logging:
python run_server.py(creates logs inlogs/directory)MCP Inspector: Use for interactive testing and debugging
Usage Examples
Once your server is running, you can test it using the MCP Inspector or integrate it with Claude Desktop. Here are some example operations:
Testing Tools in MCP Inspector
Search for employees:
{ "name": "search_employee", "arguments": { "name": "John", "limit": 10 } }Execute custom methods:
{ "name": "execute_method", "arguments": { "model": "res.partner", "method": "search_read", "args": [[["is_company", "=", true]], ["name", "email"]] } }Search holidays:
{ "name": "search_holidays", "arguments": { "start_date": "2024-01-01", "end_date": "2024-12-31", "employee_id": 1 } }
Testing Resources in MCP Inspector
List all models:
odoo://modelsGet partner model info:
odoo://model/res.partnerGet specific partner:
odoo://record/res.partner/1Search companies:
odoo://search/res.partner/[["is_company","=",true]]
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
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.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xyt-mcp/odoo-mcp-xyt'
If you have feedback or need assistance with the MCP directory API, please join our Discord server