Odoo MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ODOO_DB | No | The Odoo database name. | |
| ODOO_URL | No | The URL of the Odoo instance (e.g. https://your-odoo-instance.com). | |
| ODOO_API_KEY | No | The API key for JSON-2 transport (Odoo 19+). | |
| ODOO_PASSWORD | No | The password or API key (used for XML-RPC transport). | |
| ODOO_USERNAME | No | The username for authentication. | |
| ODOO_TRANSPORT | No | Transport protocol: xmlrpc (default) or json2. | xmlrpc |
| ODOO_CONFIG_FILE | No | Path to a JSON config file with connection details (alternative to env vars). |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| data_quality_reportA | Run read-only data-quality checks on one Odoo model: duplicates, missing required values, orphaned references, format anomalies |
| diagnose_odoo_callB | Diagnose an Odoo model call without executing it |
| generate_json2_payloadA | Build a JSON-2 request preview without network access |
| inspect_model_relationshipsB | Inspect model relationships and required field metadata |
| diagnose_accessC | Diagnose ACL and record-rule visibility for an Odoo model |
| upgrade_risk_reportC | Report Odoo upgrade and JSON-2 migration risks |
| analyze_upgrade_logA | Classify Odoo install/update log errors into a migration worklist (no_action / needs_review / needs_script) with fix suggestions |
| lookup_model_historyA | Look up Odoo model rename/removal history by old or new model name (e.g. account.invoice -> account.move) |
| fit_gap_reportC | Classify Odoo requirements into fit/gap implementation buckets |
| scan_addons_sourceB | Scan local Odoo addon source without importing addon code |
| build_domainB | Build a validated Odoo domain from structured conditions |
| business_pack_reportB | Report expected modules, models, and safe discovery calls for a business pack |
| get_odoo_profileC | Read a bounded profile of the connected Odoo environment |
| schema_catalogB | Build and cache a bounded Odoo model schema catalog |
| health_checkA | Report this MCP server's non-secret runtime safety posture |
| list_instancesA | List configured Odoo instance names without credentials |
| list_modelsB | List Odoo models with optional name filtering |
| get_model_fieldsC | Get field metadata for a specific Odoo model |
| search_recordsA | Search Odoo records with read-only search_read; optional free-text |
| read_recordB | Read a single Odoo record by model and ID |
| read_attachmentA | Read an ir.attachment's metadata and size-capped base64 content |
| aggregate_recordsA | Aggregate Odoo records server-side using Postgres groupby/sum/count. Uses formatted_read_group on Odoo 19+ and read_group on earlier versions. |
| search_employeeB | Search for employees by name |
| search_holidaysC | Search for holidays within a date range |
| preview_writeA | Preview create, write, or unlink without executing it |
| validate_writeC | Validate a standard write payload against optional fields_get metadata |
| execute_approved_writeB | Execute a previously previewed and confirmed standard write |
| chatter_postA | Post a chatter message on a mail.thread record. Default mode requires an approval token returned from a preview call; set MCP_CHATTER_DIRECT=1 to bypass and post immediately. |
| execute_methodC | Execute a custom method on an Odoo model |
| index_knowledgeA | Fetch a bounded slice of records and build a local BM25 knowledge index |
| search_knowledgeA | Relevance-ranked local BM25 search over previously indexed records |
| knowledge_statsA | Report local knowledge index sizes and document budget |
| receivable_payable_agingC | Aged receivable/payable report bucketed by days overdue |
| accounting_health_summaryC | Open receivable/payable item counts and draft invoice backlog |
| search_across_instancesB | Read-only search fanned out across configured Odoo instances, merged and attributed |
| aggregate_across_instancesB | Read-only aggregate fanned out across instances with combined grand totals |
| accounting_health_across_instancesC | AR/AP aging fanned out across instances — the partner-network sweep |
| submit_async_taskB | Run an allowlisted long-running read operation in the background |
| get_async_taskA | Poll a background task's status and result |
| cancel_async_taskC | Cancel a pending or running background task |
| list_async_tasksA | List recent background tasks newest-first |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| diagnose_failed_odoo_call | Guide an assistant through diagnosing a failed Odoo model call. |
| fit_gap_workshop | Structure an Odoo fit/gap workshop from raw requirements. |
| json2_migration_plan | Plan migration from XML-RPC/JSON-RPC style calls to Odoo JSON-2. |
| safe_write_review | Review a proposed create/write/unlink before execution. |
| custom_module_audit | Guide a local source audit for custom Odoo addons. |
| invoice_approval_chain | Find, validate, and gated-post draft customer invoices with human checkpoints. |
| po_to_receipt | Three-way match a purchase order against its receipt and vendor bill; flag discrepancies. |
| customer_onboarding | Dedup-check then create a customer with contacts and payment terms via the write gate. |
| expense_claim_review | Review pending expense claims against policy and gated-approve or refuse them. |
| accounting_close_checklist | Read-only month-end close checklist: aging, unreconciled items, draft backlog, lock-date guidance. |
| pre_migration_data_quality | Data-quality gate before an Odoo version upgrade or big import |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_models | List all available models in the Odoo system (default Odoo instance) |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/MarioMillet2b/mcp-odoo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server