Odoo MCP

A self-hosted MCP server for Odoo: read and gated writes of ERP data through an agent, any edition and version

MCP server

High risk

We rate an entry high when the tool writes to external systems, handles money, production databases or secrets, or runs arbitrary commands. The CLI installs it only with your consent.

Why this level

  • Connects to an Odoo database with credentials
  • Can write changes to ERP data
  • Works with production systems
All reasons and checks

erpipe-org/mcp-odoo

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add mcp/odoo-mcp

Detects the agents on your machine, checks the risk and pins the version.

Other ways to install

Assembled automatically, review before installing.

This entry is high risk, so there is no one-click install. Review the code and add the config by hand.

Run in a terminal

claude mcp add --transport stdio odoo-mcp -- uvx --setup

Or add to the file .mcp.json, in the project

{
  "mcpServers": {
    "odoo-mcp": {
      "command": "uvx",
      "args": [
        "--setup"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key.

Keys and settings

ODOO_MCP_ELICIT_WRITESoptional
Enable human-in-the-loop approval for writes
ODOO_MCP_AUDIT_LOGoptional
Path to JSONL audit log file
ODOO_MCP_RATE_LIMIT_MODEoptional
Rate limit mode: warn or block
ODOO_LOCALEoptional
Locale for Odoo calls
MCP_CHATTER_DIRECToptional
Enable direct chatter posting bypassing approval gate

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Add to the file ~/.cursor/mcp.json, for all projects

{
  "mcpServers": {
    "odoo-mcp": {
      "command": "uvx",
      "args": [
        "--setup"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key. For a single project, put the same block into .cursor/mcp.json.

Keys and settings

ODOO_MCP_ELICIT_WRITESoptional
Enable human-in-the-loop approval for writes
ODOO_MCP_AUDIT_LOGoptional
Path to JSONL audit log file
ODOO_MCP_RATE_LIMIT_MODEoptional
Rate limit mode: warn or block
ODOO_LOCALEoptional
Locale for Odoo calls
MCP_CHATTER_DIRECToptional
Enable direct chatter posting bypassing approval gate

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Run in a terminal

code --add-mcp '{"name":"odoo-mcp","type":"stdio","command":"uvx","args":["--setup"]}'

Or add to the file .vscode/mcp.json, in the project

{
  "servers": {
    "odoo-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--setup"
      ]
    }
  }
}

If the file already exists, add the server inside the servers key.

Keys and settings

ODOO_MCP_ELICIT_WRITESoptional
Enable human-in-the-loop approval for writes
ODOO_MCP_AUDIT_LOGoptional
Path to JSONL audit log file
ODOO_MCP_RATE_LIMIT_MODEoptional
Rate limit mode: warn or block
ODOO_LOCALEoptional
Locale for Odoo calls
MCP_CHATTER_DIRECToptional
Enable direct chatter posting bypassing approval gate

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Run in a terminal

codex mcp add odoo-mcp -- uvx --setup

Or add to the file ~/.codex/config.toml, for all projects

[mcp_servers.odoo-mcp]
command = "uvx"
args = ["--setup"]

If the file already exists, append the block to the end.

Keys and settings

ODOO_MCP_ELICIT_WRITESoptional
Enable human-in-the-loop approval for writes
ODOO_MCP_AUDIT_LOGoptional
Path to JSONL audit log file
ODOO_MCP_RATE_LIMIT_MODEoptional
Rate limit mode: warn or block
ODOO_LOCALEoptional
Locale for Odoo calls
MCP_CHATTER_DIRECToptional
Enable direct chatter posting bypassing approval gate

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Add to the file ~/.gemini/settings.json, for all projects

{
  "mcpServers": {
    "odoo-mcp": {
      "command": "uvx",
      "args": [
        "--setup"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key.

Keys and settings

ODOO_MCP_ELICIT_WRITESoptional
Enable human-in-the-loop approval for writes
ODOO_MCP_AUDIT_LOGoptional
Path to JSONL audit log file
ODOO_MCP_RATE_LIMIT_MODEoptional
Rate limit mode: warn or block
ODOO_LOCALEoptional
Locale for Odoo calls
MCP_CHATTER_DIRECToptional
Enable direct chatter posting bypassing approval gate

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Add to the file ~/.config/devin/mcp_config.json, for all projects

{
  "mcpServers": {
    "odoo-mcp": {
      "command": "uvx",
      "args": [
        "--setup"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key. Legacy Cascade keeps the MCP config in ~/.codeium/windsurf/mcp_config.json.

Keys and settings

ODOO_MCP_ELICIT_WRITESoptional
Enable human-in-the-loop approval for writes
ODOO_MCP_AUDIT_LOGoptional
Path to JSONL audit log file
ODOO_MCP_RATE_LIMIT_MODEoptional
Rate limit mode: warn or block
ODOO_LOCALEoptional
Locale for Odoo calls
MCP_CHATTER_DIRECToptional
Enable direct chatter posting bypassing approval gate

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Formerly Windsurf.

Add to the file cline_mcp_settings.json, for all projects

{
  "mcpServers": {
    "odoo-mcp": {
      "command": "uvx",
      "args": [
        "--setup"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key. Open the settings file in Cline: MCP Servers tab, Configure MCP Servers.

Keys and settings

ODOO_MCP_ELICIT_WRITESoptional
Enable human-in-the-loop approval for writes
ODOO_MCP_AUDIT_LOGoptional
Path to JSONL audit log file
ODOO_MCP_RATE_LIMIT_MODEoptional
Rate limit mode: warn or block
ODOO_LOCALEoptional
Locale for Odoo calls
MCP_CHATTER_DIRECToptional
Enable direct chatter posting bypassing approval gate

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Add to the file .roo/mcp.json, in the project

{
  "mcpServers": {
    "odoo-mcp": {
      "command": "uvx",
      "args": [
        "--setup"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key.

Keys and settings

ODOO_MCP_ELICIT_WRITESoptional
Enable human-in-the-loop approval for writes
ODOO_MCP_AUDIT_LOGoptional
Path to JSONL audit log file
ODOO_MCP_RATE_LIMIT_MODEoptional
Rate limit mode: warn or block
ODOO_LOCALEoptional
Locale for Odoo calls
MCP_CHATTER_DIRECToptional
Enable direct chatter posting bypassing approval gate

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

A fork of Roo Code, same .roo folders.

Add to the file opencode.json, in the project

{
  "mcp": {
    "odoo-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "--setup"
      ]
    }
  }
}

If the file already exists, add the server inside the mcp key.

Keys and settings

ODOO_MCP_ELICIT_WRITESoptional
Enable human-in-the-loop approval for writes
ODOO_MCP_AUDIT_LOGoptional
Path to JSONL audit log file
ODOO_MCP_RATE_LIMIT_MODEoptional
Rate limit mode: warn or block
ODOO_LOCALEoptional
Locale for Odoo calls
MCP_CHATTER_DIRECToptional
Enable direct chatter posting bypassing approval gate

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Add to the file ~/.config/zed/settings.json, for all projects

{
  "context_servers": {
    "odoo-mcp": {
      "command": "uvx",
      "args": [
        "--setup"
      ]
    }
  }
}

If the file already exists, add the server inside the context_servers key.

Keys and settings

ODOO_MCP_ELICIT_WRITESoptional
Enable human-in-the-loop approval for writes
ODOO_MCP_AUDIT_LOGoptional
Path to JSONL audit log file
ODOO_MCP_RATE_LIMIT_MODEoptional
Rate limit mode: warn or block
ODOO_LOCALEoptional
Locale for Odoo calls
MCP_CHATTER_DIRECToptional
Enable direct chatter posting bypassing approval gate

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Add to the file .codeassistant/mcp.json, in the project

{
  "mcpServers": {
    "odoo-mcp": {
      "command": "uvx",
      "args": [
        "--setup"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key.

Keys and settings

ODOO_MCP_ELICIT_WRITESoptional
Enable human-in-the-loop approval for writes
ODOO_MCP_AUDIT_LOGoptional
Path to JSONL audit log file
ODOO_MCP_RATE_LIMIT_MODEoptional
Rate limit mode: warn or block
ODOO_LOCALEoptional
Locale for Odoo calls
MCP_CHATTER_DIRECToptional
Enable direct chatter posting bypassing approval gate

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

You will need: uv

Checked against the repository on Sep 26, 2026, commit 76ec136.

Text for your agent

Install the MCP server: pip install odoo-mcp. In your MCP config run python -m odoo_mcp and set ODOO_URL, ODOO_DB, ODOO_USERNAME, ODOO_PASSWORD.

Other ways from the author
pip install odoo-mcp

Installs the MCP server from PyPI; run it with python -m odoo_mcp.

This is third-party code. Review the repository files before installing.

What it does

The server connects Odoo to an agent over MCP and exposes tools for ERP models: reading records, search, diagnostics and gated writes. Writes go through a safeguard so the agent does not change data unchecked. It supports multiple Odoo instances and the Community and Enterprise editions from version 16 on. It runs locally over stdio, installs from PyPI or via Docker and connects to your Odoo server over XML-RPC or JSON-RPC. The same author offers a separate hosted gateway product, but this repository stays the self-hosted local server.

Who it is for. For teams on Odoo who want an agent to read and carefully change ERP data.

Good fit when

  • You want to ask an agent for Odoo data: orders, products, contacts
  • You want gated writes to Odoo through an agent
  • You want to connect several Odoo instances to one agent

Not a fit when

  • You do not use Odoo but another ERP
  • You cannot give an agent access to a production database even with limits

Example request

Show unpaid invoices from Odoo for last month for this customer

Limitations

The server connects to your Odoo instance and needs a URL, database, user and a password or API key, so access must be granted deliberately. Even with write gating the agent works with ERP data, which is high risk for a production database. The hosted ERPipe gateway is a separate paid product outside this repository. Operation depends on Odoo version compatibility and the XML-RPC or JSON-RPC transport.

How to disable. Remove the odoo server from your client's MCP config and uninstall the package: pip uninstall odoo-mcp or stop the Docker container.

MCP

Transport
stdio
Authentication
API key
Environment variables
Environment variables
ODOO_URL
required
URL of your Odoo instance
ODOO_DB
required
Odoo database name
ODOO_USERNAME
required
Odoo user
ODOO_PASSWORD
required, secret
User password or API key
ODOO_TRANSPORT
Connection transport: xmlrpc or jsonrpc

Security check

  • Connects to an Odoo database with credentials
  • Can write changes to ERP data
  • Works with production systems

README in short

The README presents a free AI layer for Odoo: the server gives Community and Enterprise the capabilities that Odoo itself keeps to Enterprise. Setup takes a few minutes with pip install odoo-mcp, a uvx run, Docker and an mcpServers config snippet with connection variables. Writes are gated, and diagnostics and multiple instances are supported. The repository is the local Python server, while the hosted ERPipe gateway is a separate product. MIT licensed, published on PyPI.

FAQ

How does this repo differ from ERPipe?

This is a self-hosted local server over stdio with the full tool surface. ERPipe is a separate hosted gateway from the same author with a remote URL.

Which Odoo versions are supported?

Community and Enterprise from version 16 on, over XML-RPC or JSON-RPC.

Official

Salesforce's official DX MCP server: work with orgs, metadata, data, users and Apex tests from your agent

MCP serverHigh risk483Repository stars
Official

Yandex's official skill set: catalog, prices, stock, orders, storefront and a weekly checkup for a Yandex Kit store, through Claude Code or Codex

PluginHigh riskRussian stackNo VPN needed28Repository stars
Editors’ pick

Full 65-operation YouGile API coverage with configurable permissions, write confirmation and a shared company rate limit

MCP serverHigh riskRussian stackNo VPN needed

Bitrix24 portal MCP server

MCP-сервер портала Битрикс24

Official

Bitrix24's official per-portal MCP: an external agent uses OAuth or a token to read and change tasks, deals, meetings and mail

MCP serverHigh riskRussian stackNo VPN needed
Foxx AIOdoo MCP

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.