Claude Code + Odoo MCP — not on production first.
A coding agent with ERP write tools is how you get accidental unlinks in a refactor session. If Claude Code talks to Odoo, it talks to staging, as a bot user, read-only.

Why Code is a special case
Claude, Desktop and Cowork are chat surfaces. Claude Code is a loop that will retry, explore, and follow files. Pointing that loop at production Odoo with write tools is negligence dressed as productivity.
Use a staging database. Dedicated user. Read-only tools. Same MCP protocol — MCP — stricter ops. Security.
If you need ERP context in Code
Prefer read tools: search_read on products, read a ticket, fetch a failed job. Never unlink, never confirm, never post. Or don’t connect Odoo at all and paste a redacted snippet.
Do not confuse the connection with the instructions. An Odoo Claude Skill teaches version-specific development and workflow rules; MCP supplies live tools and records. Human-facing Claude: connect Odoo to Claude. Cursor is a different IDE with MCP too — Cursor + Odoo MCP.
A repo-level ban list
In the project that uses Claude Code, ban Odoo production URLs in MCP config. CI can grep for them. Staging hostname only. That is cheaper than a post-incident “we thought it was staging.”
If Code must read production for an incident, use a break-glass user, time-boxed, logged, read-only, revoked after. Same as SSH.
What Code is good at on ERP
Reading a traceback that includes an Odoo model name, fetching a record by id on staging, comparing two product templates. It is bad at “clean up these quotations.” Do not give it unlink to be helpful.
Official documentation
FAQ
Should Claude Code use the admin user?
No. Never.
Can it use production read-only?
If you must, still a dedicated user and a tiny tool list. Staging is better.
Is this the same as Claude connectors?
Same protocol, worse failure mode if writes exist.
Keep going
Start read-only. Ask a real question.
Sandbox on sample Odoo 19 data, or we put MCP on your instance.