Odoo
STDIOAI助手通过自然语言操作Odoo系统的MCP服务器
AI助手通过自然语言操作Odoo系统的MCP服务器
An MCP server that enables AI assistants like Claude to interact with Odoo ERP systems. Access business data, search records, create new entries, update existing data, and manage your Odoo instance through natural language.
Works with any Odoo instance! Use YOLO mode for quick testing and demos with any standard Odoo installation. For enterprise security, access controls, and production use, install the Odoo MCP module.
The MCP server runs on your local computer (where Claude Desktop is installed), not on your Odoo server. You need to install UV on your local machine:
curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
After installation, restart your terminal to ensure UV is in your PATH.
Add this configuration to your MCP settings:
{ "mcpServers": { "odoo": { "command": "uvx", "args": ["mcp-server-odoo"], "env": { "ODOO_URL": "https://your-odoo-instance.com", "ODOO_API_KEY": "your-api-key-here" } } } }
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 | 
ODOO_YOLO | No | YOLO mode - bypasses MCP security (⚠️ DEV ONLY) | off, read, true | 
*Either ODOO_API_KEY or both ODOO_USER and ODOO_PASSWORD are required.
Notes:
ODOO_DBThe server supports multiple transport protocols for different use cases:
Standard input/output transport - used by desktop AI applications like Claude Desktop.
# Default transport - no additional configuration needed uvx mcp-server-odoo
Standard HTTP transport for REST API-style access and remote connectivity.
# Run with HTTP transport uvx mcp-server-odoo --transport streamable-http --host 0.0.0.0 --port 8000 # Or use environment variables export ODOO_MCP_TRANSPORT=streamable-http export ODOO_MCP_HOST=0.0.0.0 export ODOO_MCP_PORT=8000 uvx mcp-server-odoo
The HTTP endpoint will be available at: http://localhost:8000/mcp/
Note: SSE (Server-Sent Events) transport has been deprecated in MCP protocol version 2025-03-26. Use streamable-http transport instead for HTTP-based communication. Requires MCP library v1.9.4 or higher for proper session management.
| Variable/Flag | Description | Default | 
|---|---|---|
ODOO_MCP_TRANSPORT / --transport | Transport type: stdio, streamable-http | stdio | 
ODOO_MCP_HOST / --host | Host to bind for HTTP transports | localhost | 
ODOO_MCP_PORT / --port | Port to bind for HTTP transports | 8000 | 
{ "mcpServers": { "odoo-remote": { "command": "uvx", "args": ["mcp-server-odoo", "--transport", "streamable-http", "--port", "8080"], "env": { "ODOO_URL": "https://your-odoo-instance.com", "ODOO_API_KEY": "your-api-key-here", "ODOO_DB": "your-database-name" } } } }
Install the MCP module:
Enable models for MCP access:
Generate an API key:
YOLO mode allows the MCP server to connect directly to any standard Odoo instance without requiring the MCP module. This mode bypasses all MCP security controls and is intended ONLY for development, testing, and demos.
🚨 WARNING: Never use YOLO mode in production environments!
Read-Only Mode (ODOO_YOLO=read):
Full Access Mode (ODOO_YOLO=true):
{ "mcpServers": { "odoo-demo": { "command": "uvx", "args": ["mcp-server-odoo"], "env": { "ODOO_URL": "http://localhost:8069", "ODOO_USER": "admin", "ODOO_PASSWORD": "admin", "ODOO_DB": "demo", "ODOO_YOLO": "read" } } } }
{ "mcpServers": { "odoo-test": { "command": "uvx", "args": ["mcp-server-odoo"], "env": { "ODOO_URL": "http://localhost:8069", "ODOO_USER": "admin", "ODOO_PASSWORD": "admin", "ODOO_DB": "test", "ODOO_YOLO": "true" } } } }
✅ Appropriate Uses:
❌ Never Use For:
Once configured, you can ask Claude:
Search & Retrieve:
Create & Manage:
search_recordsSearch 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_recordRetrieve 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_modelsList all models enabled for MCP access.
{}
create_recordCreate a new record in Odoo.
{ "model": "res.partner", "values": { "name": "New Customer", "email": "[email protected]", "is_company": true } }
update_recordUpdate an existing record.
{ "model": "res.partner", "record_id": 42, "values": { "phone": "+1234567890", "website": "https://example.com" } }
delete_recordDelete 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/healthIf authentication fails:
If you can't access certain models:
This error means UV is not installed or not in your PATH:
Solution 1: Install UV (see Installation section above)
Solution 2: macOS PATH Issue Claude Desktop on macOS doesn't inherit your shell's PATH. Try:
open -a "Claude"
Solution 3: Use Full Path Find UV location and use full path:
which uvx # Example output: /Users/yourname/.local/bin/uvx
Then update your config:
{ "command": "/Users/yourname/.local/bin/uvx", "args": ["mcp-server-odoo"] }
If you see "Access Denied" when listing databases:
ODOO_DB in your configurationExample configuration:
{ "env": { "ODOO_URL": "https://your-odoo.com", "ODOO_API_KEY": "your-key", "ODOO_DB": "your-database-name" } }
Note: ODOO_DB is required if database listing is restricted on your server.
This error occurs when Python cannot verify SSL certificates, often on macOS or corporate networks.
Solution: Add SSL certificate path to your environment configuration:
{ "env": { "ODOO_URL": "https://your-odoo.com", "ODOO_API_KEY": "your-key", "SSL_CERT_FILE": "/etc/ssl/cert.pem" } }
This tells Python where to find the system's SSL certificate bundle for HTTPS connections. The path /etc/ssl/cert.pem is the standard location on most systems.
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
You can test both stdio and streamable-http transports to ensure they're working correctly:
# Run comprehensive transport tests python tests/run_transport_tests.py
This will test:
For complete testing including unit and integration tests:
# Run all tests uv run pytest --cov # Run specific test categories uv run pytest tests/test_tools.py -v uv run pytest tests/test_server_foundation.py -v
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: