Skip to main content
Glama
rpl9717

odoo-mcp-server

by rpl9717

odoo-mcp-server

A minimal, security-first MCP server that lets AI assistants (Claude Code, Claude Desktop, or any MCP client) read and — optionally, behind explicit allowlists — write to an Odoo 17 instance over XML-RPC.

Built and used in production-adjacent work: MRP cost analysis, simulated purchase→manufacture→sale flows, and inventory cleanup driven entirely through an AI assistant, with the blast radius controlled server-side.

Design goals

  • Tiny, auditable surface: one file (server.py, ~450 lines), stdlib + the official mcp SDK only. No third-party business logic, no telemetry. The only network destination is your ODOO_URL.

  • Read-only by default: write tools are not registered unless ODOO_ENABLE_WRITES=1 is set. There is no delete tool, ever.

  • Allowlists all the way down:

    • models readable → ODOO_ALLOWED_MODELS (supports prefix.* wildcards)

    • models writable → ODOO_WRITE_MODELS (subset of the above)

    • fields writable per model → ODOO_WRITE_FIELDS

    • workflow methods callable → ODOO_ALLOWED_METHODS (exact model:method pairs)

  • Defense in depth: these checks sit on top of the Odoo user's own access rights, which remain the primary boundary. See SECURITY.md for the full model.

Related MCP server: odoo-mcp

Tools

Tool

Registered

Purpose

odoo_search_read

always

Search + read records (domain, fields, limit, order)

odoo_read

always

Read records by id

odoo_search_count

always

Count records matching a domain

odoo_fields_get

always

Introspect a model's fields

odoo_create

writes enabled

Create a record (model + field allowlists enforced)

odoo_write

writes enabled

Update records (model + field allowlists enforced)

odoo_call_method

writes enabled + method list non-empty

Run an allowlisted workflow method (confirm a PO, validate a picking, apply an inventory count, …)

Responses are hygienic by default: capped record counts, long/base64 values truncated, Odoo faults sanitized (no server tracebacks).

Installation

Requires Python 3.12+ and an Odoo 16/17 instance reachable over XML-RPC.

git clone https://github.com/rpl9717/odoo-mcp-server.git
cd odoo-mcp-server
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

cp .env.example .env
chmod 600 .env
# edit .env: ODOO_URL, ODOO_DB, ODOO_USER, ODOO_API_KEY, allowlists

In Odoo, create a dedicated user with a restricted access-rights group and an API key (Settings → Users → My profile → Account security). Don't run this with an admin key outside of a supervised test.

Sanity-check the configuration and connection:

.venv/bin/python server.py --check   # auth + permission matrix
.venv/bin/python verify_mcp.py       # end-to-end suite over real stdio

Hooking it up to Claude Code

.mcp.json in your project (no secrets here — credentials live in .env next to server.py):

{
  "mcpServers": {
    "odoo": {
      "command": "/path/to/odoo-mcp-server/.venv/bin/python",
      "args": ["/path/to/odoo-mcp-server/server.py"]
    }
  }
}

One checkout can serve several databases: point ODOO_ENV_FILE at an alternate env file per server entry.

Configuration reference

See .env.example — every variable is documented inline, including the reasoning behind the field-level allowlist entries.

Security

See SECURITY.md: the layered security model, why a custom server instead of the community options, engineering notes (XML-RPC thread safety, None-marshaling quirk, driving TransientModel wizards over RPC), and the verification checklist.

License

MIT

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to interact with Odoo data using natural language to search, read, create, and update records. It acts as a secure bridge between MCP clients and Odoo instances version 17.0 through 19.0.
    11
    Apache 2.0
  • A
    license
    -
    quality
    C
    maintenance
    An MCP server that connects AI assistants to Odoo ERP instances via the built-in XML-RPC API without requiring any additional addons. It enables users to search, create, update, and manage Odoo records and models through natural language.
    238
    MIT
  • A
    license
    -
    quality
    A
    maintenance
    An MCP server that enables AI assistants to interact with Odoo ERP systems, allowing natural language access to business data, CRUD operations, and instance management without requiring Odoo module installation.
    1
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    A read-only MCP server that enables AI assistants to query Odoo instances via XML-RPC, supporting search, read, count, and field inspection without requiring custom modules.
    1
    Mozilla Public 2.0

View all related MCP servers

Related MCP Connectors

  • Odoo ERP for AI agents: hosted OAuth endpoint, gated writes, one endpoint for every instance.

  • Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

View all MCP Connectors

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/rpl9717/odoo-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server