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
- Stars
- 359★
- Forks
- 169
- Language
- Python
- License
- MPL-2.0
- Created
- 2025-03-22
- Last push
- 2026-08-02