Provides comprehensive integration with Odoo ERP systems, enabling AI assistants to search employees, manage holidays, execute custom methods on Odoo models, access records and data structures, and interact with all Odoo functionality through XML-RPC communication.
Odoo MCP Server Advanced
An advanced MCP (Model Context Protocol) server implementation for Odoo ERP systems, enabling AI assistants to interact with Odoo data and functionality through the standardized Model Context Protocol.
Forked from - Thanks to Lê Anh Tuấn for the excellent foundation.
This advanced version includes enhanced features, improved performance, and follows the latest MCP 2025-06-18 specification.
Features
Comprehensive Odoo Integration: Full access to Odoo models, records, and methods
XML-RPC Communication: Secure connection to Odoo instances via XML-RPC (JSON-RPC support planned)
Flexible Configuration: Support for config files and environment variables
Resource Pattern System: URI-based access to Odoo data structures
Enhanced Error Handling: Clear error messages with detailed logging
Stateless Operations: Clean request/response cycle for reliable integration
MCP 2025 Compliant: Implements latest Model Context Protocol specification (2025-06-18)
Advanced Domain Normalization: Supports multiple domain input formats for flexible querying
Custom Transport: HTTP proxy support, SSL verification control, automatic redirects
Production Ready: Enhanced logging, timeout configuration, and error recovery
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.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
:
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 Methods
1. From Source (Recommended for Development)
2. Docker Build and Run
3. Running the Server
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
Roadmap
See our planned improvements in the dev branch:
JSON-RPC support (30-40% faster than XML-RPC)
MCP resource annotations (audience, priority, lastModified)
Resource templates for dynamic queries
Batch operations tool
Output schemas for better type safety
Comprehensive test suite
Caching layer for performance
Rate limiting and security enhancements
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature
)Commit your changes (
git commit -m 'Add amazing feature'
)Push to the branch (
git push origin feature/amazing-feature
)Open a Pull Request
Development
For detailed development instructions, see CLAUDE.md.
License
This MCP server is licensed under the MIT License.
Acknowledgments
Original project by Lê Anh Tuấn
Built with FastMCP
Follows Model Context Protocol specification
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Enables AI assistants to interact with Odoo ERP systems through the Model Context Protocol. Provides comprehensive access to Odoo models, records, and methods with enhanced features like employee search, holiday management, and flexible domain querying.