ivnvxd/mcp-server-odoo

Model Context Protocol (MCP) server that enables AI assistants to securely interact with Odoo ERP systems through standardized resources and tools for data retrieval and manipulation.

359 ★169 forksPythonUpdated 5d ago

What you need to know

Python MCP server that gives AI assistants (Claude, Copilot, etc.) natural-language access to Odoo ERP over XML-RPC — search, retrieve, create, update, delete records, server-side aggregation, and opt-in workflow method calls.

Install

uvx mcp-server-odoo   (with ODOO_URL and ODOO_API_KEY or ODOO_USER/ODOO_PASSWORD env vars)
pip install mcp-server-odoo
Docker: ivnvxd/mcp-server-odoo (or ghcr.io/ivnvxd/mcp-server-odoo); HTTP: docker run --rm -p 8000:8000 ... --transport streamable-http

Usage

  • Configure the client with env vars ODOO_URL, ODOO_API_KEY (or username/password), plus optional ODOO_DB and ODOO_LOCALE
  • Ask e.g. "Show me all customers from Spain", "Create a new customer contact for Acme", "Find products with stock below 10 units"
  • For production, install the Odoo MCP module (apps.odoo.com) and enable models per model with read/write/create/delete permissions

Key features

  • CRUD tools: search_records, get_record, create_record, update_record, delete_record, count, list_models, post_message
  • aggregate_records: server-side group/sum/count pushed down to PostgreSQL (formatted_read_group on Odoo 19+)
  • call_model_method escape hatch for workflow actions (post invoice, confirm SO) — only when ODOO_YOLO=true and ODOO_MCP_ENABLE_METHOD_CALLS=true
  • Smart field selection (scoring-based, 15-field default), LLM-optimized hierarchical text output, multi-language responses
  • Resource URIs (odoo://{model}/record/{id}, /search, /count, /fields); YOLO mode for testing against any vanilla Odoo without the module

Caveats

  • Production mode requires Odoo 16.0+ with the Odoo MCP module (paid, from apps.odoo.com)
  • YOLO mode bypasses all MCP security controls — never use in production; read-only level (ODOO_YOLO=read) is the safe demo option
  • streamable-HTTP transport has no built-in client authentication (keep localhost bind or front with an authenticating reverse proxy)
  • SSE transport deprecated; call_model_method can invoke destructive methods (unlink, button_draft)
Platforms: macOS · Linux · WindowsClients: Claude Desktop · Claude Code · Cursor · VS Code (GitHub Copilot) · Windsurf · Zed
Documentation ↗

Reviewed 2026-08-07

Topics

aierpllmmcpmcp-servermcp-serversmodel-context-protocolodooodoo-mcp
View on GitHub ↗
Stars
359★
Forks
169
Language
Python
License
MPL-2.0
Created
2025-03-22
Last push
2026-08-02