Skip to content

Claude × Odoo (MCP)

The PLANA Odoo MCP server lets an AI assistant — Claude Code, Claude Desktop, Cursor, VS Code — read and analyze your PLANA Business Cloud (Odoo) ERP in plain language. Ask "how much did we invoice last month?" or "which products are below their reorder point?" and the assistant queries Odoo for you and writes the answer.

It speaks MCP (the Model Context Protocol) over a single hosted endpoint:

https://mcp.planapulse.com/mcp

Using a different tool?

The same server works from any MCP client. See the guides for OpenCode and Gemini CLI.

Read-only and permission-scoped

The server can only read — it can search, count, group, and read records, but it can never create, change, or delete anything in Odoo. It connects as you, using your own Odoo API key, so you only ever see the data your Odoo account is already allowed to see.

Before you start

You need four things:

  1. A PLANA Business Cloud (Odoo) account — your normal Odoo login.
  2. Access granted by your PLANA administrator. Access is by invitation: an admin adds your Google email to the allowlist, binds it to your Odoo instance, and authorizes your Google sign-in. If you haven't been added yet, ask us to enable your account ↗.
  3. An MCP-capable client — one of Claude Code, Claude Desktop, Cursor, or VS Code.
  4. The server endpoint: https://mcp.planapulse.com/mcp.

How it works

Connecting is three steps, done once:

  ┌──────────────┐   1. add server   ┌─────────────────────┐   2. Google sign-in   ┌──────────┐
  │  Your client │ ────────────────▶ │  mcp.planapulse.com │ ───── OAuth ─────────▶ │  Google  │
  │ (Claude, …)  │ ◀──────────────── │   (PLANA Odoo MCP)  │ ◀──── you are X ────── └──────────┘
  └──────────────┘    tools appear   └─────────────────────┘
                                              │ 3. your Odoo API key

                                       ┌──────────────┐
                                       │  Your Odoo   │  (read-only, as you)
                                       └──────────────┘
  1. Add the server to your client.
  2. Sign in with Google — this proves who you are.
  3. Connect your Odoo by giving the server an Odoo API key — once — so it can read on your behalf.

Step 1 · Add the server

Pick your client. Claude Code is the quickest.

Claude Code (CLI)

Add the server in one command:

bash
claude mcp add --transport http plana-odoo https://mcp.planapulse.com/mcp
  • plana-odoo is just the local name for the server — call it whatever you like.
  • Add --scope user to make it available in all your projects (the default is this project only).

Check it was added, or remove it later:

bash
claude mcp list                 # show configured servers + status
claude mcp remove plana-odoo    # remove it

Claude Desktop

Remote connectors require a paid Claude plan (Pro, Max, Team, or Enterprise).

  1. Settings → Connectors.
  2. Click Add custom connector.
  3. Name it PLANA Odoo and set the URL to https://mcp.planapulse.com/mcp.
  4. Click Add.

Cursor

Add the server to ~/.cursor/mcp.json (global) or .cursor/mcp.json (this project only):

json
{
  "mcpServers": {
    "plana-odoo": {
      "url": "https://mcp.planapulse.com/mcp"
    }
  }
}

Restart Cursor so it picks up the change.

VS Code

Run MCP: Open User Configuration from the Command Palette (Cmd/Ctrl + Shift + P) and add:

json
{
  "servers": {
    "plana-odoo": {
      "type": "http",
      "url": "https://mcp.planapulse.com/mcp"
    }
  }
}

Step 2 · Sign in with Google

The first time the client connects, it opens your browser to sign in with Google. This is how the server learns who you are.

  • Claude Code: run /mcp in a session, select plana-odoo, and choose Authenticate. Your browser opens; sign in with Google and approve.
  • Claude Desktop / Cursor / VS Code: sign-in is triggered automatically the first time you (or the assistant) use a tool. Follow the browser prompt.

Sign in with the same Google account your administrator added to the allowlist. Once it succeeds, the client shows the server as connected and the odoo_* tools become available.

Sign-in blocked or access denied?

  • "Access blocked / this app isn't verified" from Google → your Google account hasn't been authorized yet.
  • Signed in, but the server says access is denied → your email isn't on the allowlist (or was disabled).

Both are fixed by your administrator — contact us ↗. See Troubleshooting.

Step 3 · Connect your Odoo

Signing in proves who you are; the server still needs an Odoo API key to read data as you. You provide it once, and it's stored encrypted under your identity.

Ask the assistant to "get the Odoo setup instructions" (this calls the get_odoo_setup_instructions tool), or follow these steps in your Odoo:

  1. Open your Odoo instance in the browser and log in.
  2. Click your avatar (top-right) → My Profile (Preferences).
  3. Open the Account Security tab.
  4. Click New API Key. You may be asked to re-enter your password / 2FA.
  5. Name it (e.g. Plana MCP) and optionally set an expiry.
  6. Copy the key now — Odoo shows it only once.

Then give it to the assistant — say "set my Odoo credentials" and paste the key (this calls set_odoo_credentials). The key is validated against your Odoo and saved encrypted. Some clients will pop up a small form to paste the key directly.

Check your connection

Ask the assistant to "check the connection status" (get_connection_status) at any time to see which Odoo instance you're connected to and whether your key is set.

That's it — you're connected. From now on the assistant can read your ERP whenever you ask.

What you can do

The server exposes a small set of generic, read-only tools. You rarely call them by name — just ask in plain language and the assistant picks the right one:

ToolWhat it does
odoo_list_models · odoo_get_fieldsDiscover what data exists and which fields are available
odoo_search_read · odoo_readRead records matching a filter, or by id
odoo_search_countCount records (cheap)
odoo_read_groupAggregate — sums, averages, counts — for reports
odoo_name_searchLook up a customer / product / account by name

Because the tools are generic, the assistant can build almost any report — accounting, sales, inventory, CRM — without a pre-built template. Things you can ask:

  • "How many open customer invoices do we have, and what's the total outstanding?"
  • "Break down this year's sales by month."
  • "Who are our top 10 customers by revenue this year?"
  • "Which products are below their reorder point right now?"
  • "Summarize overdue receivables by customer."

Troubleshooting

SymptomCauseFix
Google: "Access blocked / app isn't verified"Your Google account isn't authorized for sign-in yetAsk your administrator to authorize it — contact us ↗
Signed in, but "access denied"Your email isn't on the allowlist, or was disabledContact your administrator
"No Odoo instance is configured for you"Your account isn't bound to an Odoo instance yetContact your administrator
"Invalid API key / login" when setting credentialsWrong or expired key, or the login doesn't matchCreate a fresh API key in Odoo and set it again
Tools don't appear / "not connected"Sign-in not completedRe-run /mcp (Claude Code) or reopen the connector and authenticate again
"This server is read-only" when asking to change dataBy design — the server cannot write to OdooMake changes directly in Odoo

FAQ

Can it change or delete anything in my Odoo?

No. The server is strictly read-only — it can search and read, but it cannot create, modify, or delete records.

What data can the assistant see?

Only what your Odoo user is permitted to see. It connects with your own API key, so your existing Odoo access rights apply unchanged.

Is my activity logged?

Yes. Each tool call is recorded in an audit log (who, which tool, which model, status, timing). The log stores metadata and short summaries only — never the contents of your ERP records.

Where is my API key stored?

Encrypted at rest, tied to your identity. You can replace it any time by creating a new key in Odoo and setting it again.

Which Odoo instance do I connect to?

The one your administrator assigned to your account. Each user is bound to a single Odoo instance — you don't choose it at connect time.

© PLANA Digital Ltd.