Odoo MCP
Self-hosted Python MCP server for Odoo 16-19 with schema tools, diagnostics and gated writes
Hosted gateway that connects AI clients to one or more Odoo databases, with owner-approved writes
By erpipe-org TypeScript Remote (hosted) · Streamable HTTP CRM and salesFinance and paymentsDatabases
Opens the app, which asks before it adds the server.
https://mcp.erpipe.com/mcpclaude mcp add --transport http --scope user erpipe https://mcp.erpipe.com/mcpcodex mcp add erpipe --url https://mcp.erpipe.com/mcp --oauth-resource https://mcp.erpipe.com/mcpgemini mcp add --transport http --scope user erpipe https://mcp.erpipe.com/mcp{ "mcpServers": { "erpipe": { "serverUrl": "https://mcp.erpipe.com/mcp" } } }grok mcp add --transport http --scope user erpipe https://mcp.erpipe.com/mcpERPipe is a remote MCP endpoint for the Odoo ERP. You create a workspace at erpipe.com, register one or more HTTPS Odoo instances there, and point a client at https://mcp.erpipe.com/mcp. The Odoo credentials stay stored on the workspace connection; the client signs in to ERPipe with OAuth and never receives an Odoo password or token. Every Odoo-bound tool takes an explicit instance key, which list_instances returns, so one connection can serve several databases.
Most of the surface reads: record search, field metadata, aggregates, HR employee and leave lookups, access and failed-call diagnosis, attachments, and report-style outputs such as upgrade risk and fit/gap summaries. Changes go through a gate: preview_write produces an approval token, execute_approved_write uses it, and the workspace owner may have to approve in a dashboard inbox first. Writes stay off until the owner turns them on for a connection, and the client must have been granted write scope. Hosted extras include fan-out search and aggregates across instances, instance lifecycle tools, a pull queue for signed Odoo webhook events and a small agent memory.
The hosted catalog page counts 46 tools as of 2026-09-18; 28 of those exist in the open-source self-host Worker in this repository and the other 18 are hosted-only. The open-source repository (MIT) holds the TypeScript tool logic, published as @erpipe/core, plus a single-tenant Cloudflare Worker example that is not published to npm. The same maintainer keeps the separate Python self-hosted server mcp-odoo.
An ERPipe workspace (the hosted service is a free beta) and at least one Odoo instance reachable over HTTPS; there is no shared sandbox. Odoo 16-20 Community is tested; Enterprise, Odoo.sh, Odoo Online and custom modules are not qualified. A client that signs in with OAuth: Claude Code needs `claude mcp login erpipe`, Codex CLI `codex mcp login erpipe`, Gemini CLI `/mcp auth erpipe`, ChatGPT needs Developer Mode. Self-hosting the Worker example needs Node.js 20+, a clone and build, and a Cloudflare account to deploy.
search_records returns 10 records by default, at most 50; an empty query and domain is refused. Cross-instance search reaches at most 10 instances and is read-only; there are no cross-instance writes. execute_method refuses search/read and create/write/unlink, and named verbs forbid server actions. PDF output from render_report needs the matching ERPipe Bridge addon on the Odoo side. The self-host Worker has 28 of the 46 tools and no multi-instance routing, memory or approval inbox. Odoo 20 support is a locally verified release candidate.
Suits teams that run Odoo over HTTPS and want ChatGPT, Claude Code, Codex or Gemini CLI to query it, possibly across several databases, without handing Odoo credentials to each client, and that want writes behind an owner approval step. It is a hosted beta from a third party, not Odoo S.A., so data passes through ERPipe's servers. Anyone who wants a local stdio process kept inside their own network should look at the maintainer's Python mcp-odoo server instead, which we also list.
pingremember_episoderecall_memoryforget_memorycreate_instanceupdate_instancerotate_instance_credentialsupdate_instance_cloudflare_accessdelete_instancelist_instancessearch_across_instancesaggregate_across_instancesaccounting_health_across_instancessearch_recordsmodel_factsread_recordbuild_domainlist_modelsget_model_fieldshealth_checkaggregate_recordssearch_employeesearch_holidaysget_odoo_profileget_current_contextschema_catalogdiagnose_odoo_calldiagnose_accessinspect_model_relationshipsread_attachmentpreview_writevalidate_writeexecute_approved_writechatter_postexecute_methodpreflight_odoo_capabilityexecute_approved_odoo_capabilityexecute_named_verbget_write_approval_statusgenerate_json2_payloadupgrade_risk_reportfit_gap_reportbusiness_pack_reportrender_reportlist_odoo_eventsack_odoo_event