In these docs

Execution Layer for Odoo

Connecting an AI client.

The Execution Layer is an MCP server at /mcp on your Odoo. Any MCP client connects: Claude, ChatGPT, Cursor, or your own stack. This is the endpoint, the per-client steps, the reachability rules, and how authentication works.

Feature-complete · Odoo 19 Updated 17 August 2026

The Execution Layer exposes a standard MCP endpoint. Any MCP client points at it, authenticates as a real Odoo user, and gets exactly the tools that user’s bundle allows.

The endpoint

POST https://<your-odoo>/mcp

It is MCP Streamable HTTP, stateless, with JSON responses. GET and DELETE on the endpoint return 405. On a local install the endpoint is http://localhost:8069/mcp (or your configured port).

Reachability

Where the client runs decides whether your Odoo needs to be reachable from the public internet.

ClientWhere it runsNeeds public HTTPS
Claude CodeYour machineNo, LAN or VPN is fine
Claude DesktopYour machineNo, LAN or VPN is fine
CursorYour machineNo, LAN or VPN is fine
ChatGPTOpenAI’s cloudYes, internet-reachable HTTPS
Claude web appAnthropic’s cloudYes, internet-reachable HTTPS

Verification status

Today the release test matrix covers Claude Code (the OAuth flow) and the official mcp Python SDK (the full adversarial suite). Claude Desktop, ChatGPT, and Cursor are supported, with connection steps documented from their published connector flows; a final hands-on pass for each lands before launch.

Claude Code

Add the server
claude mcp add --transport http odoo https://<your-odoo>/mcp

Then in Claude Code run /mcp, choose odoo, and Authenticate. A browser opens the Odoo login, you sign in as yourself and click Allow, and Claude Code is connected under your Odoo identity. For local development the URL is http://localhost:8069/mcp.

Claude Desktop

Settings, then Connectors, then Add custom connector. Set the URL to https://<your-odoo>/mcp and Connect. The client registers itself (dynamic client registration), the Odoo login opens, and you click Allow.

ChatGPT

Settings, then Connectors (developer mode), then Create. Set the MCP server URL to https://<your-odoo>/mcp, choose OAuth for authentication, and Connect. ChatGPT runs in the cloud, so your Odoo must be reachable over the public internet on HTTPS.

Cursor

Add the server to ~/.cursor/mcp.json:

~/.cursor/mcp.json
{
"mcpServers": {
"odoo": { "url": "https://<your-odoo>/mcp" }
}
}

Then open Settings, then MCP, select odoo, and Login.

Any client, and unattended jobs

The server is a standard OAuth 2.1 resource. Clients discover it and register automatically:

/.well-known/oauth-protected-resource resource discovery
/.well-known/oauth-authorization-server authorization server metadata
/oauth/register dynamic client registration (RFC 7591)

Authentication is OAuth with PKCE (S256). For a script or an unattended job, use a scoped API key instead:

Call with an API key
curl -X POST https://<your-odoo>/mcp \
-H "Authorization: Bearer nmk_your_scoped_key" \
-H "Content-Type: application/json" \
-d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }'

API keys are scoped per operation (read, create, update, delete, execute, export), can carry an expiry, an IP allowlist, and a per-key rate limit, and can be revoked at any time.

Multiple databases

If a host serves more than one database, send the database name in a header: X-Odoo-Database: <db>. The supported deployment is one database per host, so most installs do not need this.

Once connected, every call the client makes runs the full pipeline. Next: what a verified write looks like.