The Odoo MCP server exposes configured tools to an external client. Authentication, Odoo permissions, exposed tools, client review behavior, and data handling all shape what the connection can do.
1. Confirm the server and a bounded first use case
Use an authorized Odoo 20 test database with the relevant AI server capability and a compatible external client. Do not assume a third-party connector, an older Odoo version, or every Community deployment exposes the same native endpoint.
The documented endpoint is the database’s HTTPS URL followed by /mcp. Pick a read-only first task, such as listing the signed-in salesperson’s open opportunities. Give the test user only the ordinary Odoo access that task needs.
Review plan implications before installation: the Odoo 20 AI overview says installing the AI app on Standard triggers an upsell to Custom. The external AI client can also have its own account, feature, or usage requirements. Connecting it can send business results to that client’s services, so agree on the data allowed in the workflow.
2. Approve the intended OAuth client
OAuth is the recommended authentication route in the reviewed Odoo 20 documentation and is available to internal users. Have an authorized administrator open Settings → Integrations → MCP OAuth and review approved client metadata URLs.
For a client supporting Client ID Metadata Documents, add its exact trusted metadata URL and save. Obtain that value from the client’s current configuration guidance; an application’s marketing homepage is not necessarily its metadata document.
The alternative Allow Dynamic Client Registration setting allows any MCP client to register and request access. Enable it only after the administrator understands that broader registration behavior. It is not equivalent to approving one named client.
3. Add the HTTPS endpoint and complete sign-in
Use your client’s remote-MCP configuration to add the test database endpoint and select OAuth where required. The following optional Claude Code example uses the documented HTTP transport. Replace the reserved example domain with the authorized test database URL before running it.
claude mcp add --transport http odoo-test https://your-company.example/mcp
claude mcp listComplete the Odoo sign-in and access-consent flow when the client requests authentication. If the connection shows that authentication is needed, open the client’s MCP connection controls and finish sign-in there. Review the requesting client and access duration before allowing it.
A saved endpoint is not proof of a successful connection. Confirm the connected status and inspect the available tools. Client screens and sign-in behavior can differ across releases; the example does not establish that a paid client account is already configured.
4. Inspect the actual exposed server actions
With developer mode enabled, an authorized administrator can open Settings → Technical → Server Actions. The documented default set includes context retrieval, model and field information, Search, and Read group. Installed apps and local configuration determine what is actually present.
To expose another supported server action, review its implementation and access requirements, then use Available in MCP on its Usage tab. Do not expose create, update, website-editing, or other modifying tools simply because the client asks for them.
Odoo documents that this flag tells the client a tool can be invoked without explicit approval. It does not hide the tool or make a writing implementation read-only. Verify the action itself, permissions, and client behavior.
Clients can cache the tool list for a session. After changing exposure or access, reconnect or refresh through the client’s supported process and inspect the tools again.
5. Verify reads and denied access before enabling writes
Ask a narrow read-only question, such as “List the names and stages of my open opportunities.” Compare the result with the same user’s Odoo view, including company and team filters. A fluent answer is not evidence that the client used the intended database or records.
- Test with a user who should see the records and one who should not.
- Check that another company’s or team’s records are not exposed unexpectedly.
- Verify that an unavailable or disallowed tool cannot be used.
- Inspect tool results and logs without copying credentials or unnecessary personal data into a shared report.
- Treat retrieved notes and documents as untrusted content; they should not grant new permissions.
Add write operations only for a defined business need after reviewing the exact target, proposed change, authorization, confirmation behavior, duplicate prevention, and audit trail. A successful read-only test does not validate a record-changing workflow.
6. Plan expiry, revocation, and the API-key alternative
Odoo documents both OAuth connections and API-key connections as entries in the user’s My Preferences → Security tab. Delete the corresponding key to revoke that connection, then confirm the client can no longer access the database. Removing a local client entry alone is not the same as revoking its server credential.
Where OAuth is not suitable, the documentation also describes an expiring API key with the MCP scope. Portal users use the API-key route rather than OAuth, with their existing access limits. Configure the client’s supported secure credential storage and avoid putting real keys into prompts, screenshots, or repository files.
Completion check: the correct client authenticates, exposes only intended tools, returns only permitted records, and fails after revocation. Keep an owner for app changes, tool exposure, client updates, and access reviews.
7. Frequently asked questions
Is a third-party MCP connector the same as Odoo 20’s native server?
No. This guide describes the native workflow in the reviewed Odoo 20 documentation. Other versions and third-party connectors can have different endpoints, tools, authentication, and permissions.
Does the Readonly Tool checkbox enforce read-only behavior?
No. It advises the client about whether approval is needed. Review the server action itself and enforce the appropriate Odoo permissions and client controls.
How do we revoke an OAuth MCP connection?
The documented workflow shows the connection as an API-key entry under My Preferences → Security. Delete the corresponding entry and verify that further client requests fail.
8. Related articles and next steps
Reviewed against Odoo 20 documentation. Menu labels, availability, and actions depend on your edition, hosting, installed apps, and permissions. Practise the workflow in a test database before changing production.
Tell us your version, apps, and the outcome you need. Discuss your setup with OdooMatrix.