Odoo MCP

How to get started with an Odoo MCP server

Getting started takes four steps: confirm your Odoo plan allows the external API, create a dedicated user and API key, run or subscribe to an Odoo MCP server, and add it to your AI client. Test with MCP Inspector before you give the connection to a team.

Updated: 10 min read

To start with an Odoo MCP server you need four things: an Odoo database whose plan allows external API access, a dedicated Odoo user with an API key, an MCP server that talks to Odoo, and an AI client that supports MCP, such as Claude, ChatGPT, Claude Code, Cursor or VS Code. This guide covers each step, with config snippets, and was checked against official documentation on 20 October 2026.

Step 1: check prerequisites

Requirement Detail
Odoo version 16 or later for most servers. Odoo 19 adds the JSON-2 API. Odoo 20 has its own MCP server.
External API access On Odoo Online, only on the Custom plan, per Odoo's external API docs. Community and on-premise installations have it.
A dedicated Odoo user Not an administrator. Only the groups the use case needs.
An MCP client Claude (web, desktop, Claude Code), ChatGPT, Cursor, VS Code, or another MCP-capable app
Network Remote connectors in Claude and ChatGPT need a public HTTPS endpoint

Step 2: create the Odoo user and API key

Create or pick a user

Settings, Users: create a user for the person who will use the assistant, or use their existing account. Remove groups they do not need for this use case.

Open the security settings

Log in as that user, open the avatar menu, then Preferences or My Preferences (the label varies by version), tab Account Security, and click New API Key. Odoo asks for the password again.

Name it and set a duration

Odoo 19 requires a description and a duration. Use a name such as "Claude - Anna - pilot". Normal users cannot create keys longer than three months by default.

Copy the key once

Odoo shows the key only once. Store it in a password manager, not in a shared document.

In Odoo 20 the dialog adds a scope selector, and Odoo's own MCP server accepts keys with the "MCP" scope.

Test the key before adding MCP

On Odoo 19, a single JSON-2 call confirms the key and the user's access:

curl -s https://mycompany.example.com/json/2/res.partner/search_read \
  -H "Authorization: bearer YOUR_API_KEY" \
  -H "X-Odoo-Database: mycompany" \
  -H "Content-Type: application/json" \
  -d '{"domain": [["is_company", "=", true]], "fields": ["name"], "limit": 3}'

On Odoo 16 to 18, use XML-RPC, where the API key replaces the password:

import xmlrpc.client
url, db, user, key = "https://mycompany.example.com", "mycompany", "anna@example.com", "YOUR_API_KEY"
uid = xmlrpc.client.ServerProxy(f"{url}/xmlrpc/2/common").authenticate(db, user, key, {})
models = xmlrpc.client.ServerProxy(f"{url}/xmlrpc/2/object")
print(models.execute_kw(db, uid, key, "res.partner", "search_read",
      [[["is_company", "=", True]]], {"fields": ["name"], "limit": 3}))

If either call returns partners, the key works. If it returns an access error, fix the user's groups first.

Step 3: choose an MCP server

Option When it fits
Odoo's own MCP server Odoo 20 or Odoo Online saas-19.4+, Enterprise with the AI app. Tools are server actions you expose. See the Odoo 20 docs.
Open-source server on your machine (stdio) A developer or a single user testing. See the comparison of open-source servers.
Open-source server you host (HTTP) A team, with your own IT running and securing it
Hosted Odoo MCP service A team that wants per-user keys, confirmed writes, undo and an audit log without running a server. We offer a pilot.

Step 4: connect your AI client

UI labels below are as documented on 20 October 2026. Vendors rename menus often, so follow the linked help pages if a label differs.

Claude (web and desktop): custom connector

Per Anthropic's help center, custom connectors are available on Free, Pro, Max, Team and Enterprise plans; Free is limited to one custom connector.

  1. Open Customize, then Connectors, click "+ Add", then "Add custom connector".
  2. Enter a name and the remote MCP server URL, for example https://mcp.example.com/mcp.
  3. Choose the sign-in mode and OAuth client option the server supports, then Add.
  4. On Team and Enterprise plans an Owner adds the connector under Organization settings, Connectors, and members click Connect.

Claude connects from Anthropic's cloud, so the URL must be publicly reachable over HTTPS.

Claude Desktop: local server over stdio

Edit claude_desktop_config.json: on macOS in ~/Library/Application Support/Claude/, on Windows in %APPDATA%\Claude\. This example uses the open-source mcp-server-odoo package as documented in its README; in its standard mode it expects its companion Odoo module.

{
  "mcpServers": {
    "odoo": {
      "command": "uvx",
      "args": ["mcp-server-odoo"],
      "env": {
        "ODOO_URL": "https://mycompany.example.com",
        "ODOO_API_KEY": "YOUR_API_KEY",
        "ODOO_DB": "mycompany"
      }
    }
  }
}

Restart Claude Desktop after saving. The key sits in plain text in this file, which is fine for one developer and a reason to prefer a remote server with sign-in for a team.

Claude Code

# remote server over Streamable HTTP
claude mcp add --transport http odoo https://mcp.example.com/mcp \
  --header "Authorization: Bearer YOUR_TOKEN"

# local server over stdio
claude mcp add --env ODOO_URL=https://mycompany.example.com \
  --env ODOO_API_KEY=YOUR_API_KEY --env ODOO_DB=mycompany \
  --transport stdio odoo -- uvx mcp-server-odoo

Syntax per the Claude Code MCP docs. Run /mcp inside Claude Code to check the connection or sign in.

ChatGPT

OpenAI's current documentation adds custom MCP servers from the ChatGPT Plugins page (earlier announcements called this developer mode and connectors):

  1. Open Plugins, select the plus button, then "Add custom MCP server".
  2. Enter a name, a description and the server URL including the /mcp path.
  3. Configure authentication and confirm.

The endpoint must be public HTTPS with Streamable HTTP. Publishing a plugin to a workspace requires a workspace admin. Which plans can use write actions has changed over time, so check OpenAI's help center for your plan.

OpenAI Responses API

For your own agent code, the remote MCP tool takes a server URL and an approval policy. Keep approval on for Odoo writes:

{
  "type": "mcp",
  "server_label": "odoo",
  "server_url": "https://mcp.example.com/mcp",
  "authorization": "YOUR_TOKEN",
  "require_approval": "always"
}

Cursor and VS Code

Cursor reads .cursor/mcp.json (top-level key mcpServers). VS Code reads .vscode/mcp.json with the top-level key servers:

{
  "servers": {
    "odoo": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

Step 5: test with MCP Inspector

MCP Inspector is the official debugging client. It needs Node 22.19 or newer.

npx @modelcontextprotocol/inspector

Open the URL it prints (the web UI runs on port 6274 and the printed link carries an auth token). Choose Streamable HTTP for a remote server or stdio for a local one, connect, then:

  1. list tools and check that write tools are the ones you expect, with sensible annotations;
  2. call a read tool, for example a partner search, and compare with Odoo;
  3. call a write tool on a test database only, and check that it asks for confirmation.

Common errors and fixes

Symptom Likely cause Fix
401 or "Invalid apikey" Key expired, revoked or copied with spaces Create a new key, check its duration
"Access Denied" on login Wrong database name or user login Set the database explicitly (X-Odoo-Database or ODOO_DB)
"Object res.xyz doesn't exist" The Odoo app is not installed Install the app or hide the tool
Access error on a model User lacks the group or a record rule blocks it Add the needed group, not admin rights
Fewer records than expected Record rules or allowed companies Check the user's companies and rules
404 on /json/2/... Odoo older than 19 Use XML-RPC or JSON-RPC
Connector cannot reach server URL is localhost or behind a VPN Expose public HTTPS, or use a local stdio setup
External API refused on Odoo Online Standard or One App Free plan Custom plan is required

Before you open the connection to more people, read the security model.

Want help connecting your Odoo?

Tell us your Odoo version, hosting and AI client. We reply by e-mail.

Frequently asked questions

Can I use an Odoo MCP server with Odoo Online?

Yes, if your subscription is on the Custom plan. Odoo's documentation states that external API access is only available on Custom plans, not on One App Free or Standard. Odoo Online on saas-19.4 and later also has Odoo's own MCP server as part of Odoo AI.

Why can Claude not reach my MCP server on localhost?

Custom connectors in Claude and ChatGPT connect from the provider's cloud, not from your computer. A remote server must be reachable over public HTTPS. For a server on your own machine, use a local stdio configuration in Claude Desktop, Claude Code or Cursor instead.

Which Odoo API does an MCP server use?

Servers for Odoo 16 to 18 use XML-RPC or JSON-RPC. Odoo 19 adds the JSON-2 API at /json/2/<model>/<method> with a bearer API key. Odoo documents that XML-RPC and JSON-RPC are scheduled for removal in Odoo 22, fall 2028, and Odoo Online 21.1.

How long should the Odoo API key last?

For a pilot, a few weeks to three months. Odoo 19 documentation says keys for normal users cannot exceed three months by default, so long-running connections need rotation. Name each key after the person and the MCP client, so you can revoke it later.

Do I need to install anything in Odoo?

It depends on the server. Many open-source servers and hosted services only need an API key. Some servers expect a companion Odoo module for permissions, and Odoo's own MCP server in Odoo 20 needs the AI app.