by ivnvxd
Enables AI assistants to securely interact with Odoo ERP systems, offering standardized resources for searching, creating, updating, and deleting business records.
Enables AI assistants to communicate with an Odoo ERP instance via a Model Context Protocol server. The server translates natural‑language requests into Odoo RPC calls, handling authentication, permissions, and formatting the responses for LLM consumption.
ODOO_URL
, ODOO_API_KEY
or ODOO_USER
/ODOO_PASSWORD
, optional ODOO_DB
).stdio
works for desktop AI apps; streamable‑http
can expose an HTTP endpoint (--host
, --port
).uvx mcp-server-odoo
or python -m mcp_server_odoo
).stdio
, streamable‑http
)Q: Which authentication method should I use? A: API keys are recommended for security and simplicity. Username/password works only if API keys are unavailable.
Q: Do I need to install anything on the Odoo server? A: Only the "mcp_server" module from the Odoo app store is required.
Q: Can I run the server remotely?
A: Yes, use the streamable‑http
transport and expose the server on a network‑accessible host/port.
Q: What if my Odoo instance restricts database listing?
A: Provide the ODOO_DB
environment variable; the server will use that database directly.
Q: How do I debug connection problems?
A: Enable debug logging with ODOO_MCP_LOG_LEVEL=DEBUG
and verify the URL, API key, and network access.
Q: Is SSL verification required?
A: HTTPS is mandatory in production. If Python cannot verify certificates, set SSL_CERT_FILE
to the path of your system's CA bundle.
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.
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 |
*Either ODOO_API_KEY
or both ODOO_USER
and ODOO_PASSWORD
are required.
Notes:
ODOO_DB
The 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:
Once configured, you can ask Claude:
Search & Retrieve:
Create & Manage:
search_records
Search 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_record
Retrieve 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_models
List all models enabled for MCP access.
{}
create_record
Create a new record in Odoo.
{
"model": "res.partner",
"values": {
"name": "New Customer",
"email": "customer@example.com",
"is_company": true
}
}
update_record
Update an existing record.
{
"model": "res.partner",
"record_id": 42,
"values": {
"phone": "+1234567890",
"website": "https://example.com"
}
}
delete_record
Delete 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/health
If 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:
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by zed-industries
A high‑performance, multiplayer code editor designed for speed and collaboration.
by modelcontextprotocol
Model Context Protocol Servers
by modelcontextprotocol
A Model Context Protocol server for Git repository interaction and automation.
by modelcontextprotocol
A Model Context Protocol server that provides time and timezone conversion capabilities.
by cline
An autonomous coding assistant that can create and edit files, execute terminal commands, and interact with a browser directly from your IDE, operating step‑by‑step with explicit user permission.
by continuedev
Enables faster shipping of code by integrating continuous AI agents across IDEs, terminals, and CI pipelines, offering chat, edit, autocomplete, and customizable agent workflows.
by upstash
Provides up-to-date, version‑specific library documentation and code examples directly inside LLM prompts, eliminating outdated information and hallucinated APIs.
by github
Connects AI tools directly to GitHub, enabling natural‑language interactions for repository browsing, issue and pull‑request management, CI/CD monitoring, code‑security analysis, and team collaboration.
by daytonaio
Provides a secure, elastic infrastructure that creates isolated sandboxes for running AI‑generated code with sub‑90 ms startup, unlimited persistence, and OCI/Docker compatibility.