---
title: "Connect Claude Desktop over MCP"
canonical: https://agentlaire.com/docs/guides/claude-desktop-mcp
lastUpdated: 2026-11-03
---

# Connect Claude Desktop over MCP

## What does connecting Claude Desktop do?

AgentLaire AI Agents has an MCP endpoint at `/agentlaire/mcp`. Once Claude Desktop is connected, it can use the tools of your Odoo agents with your own access rights. Every change it proposes waits for approval in Odoo; Claude never writes directly. AgentLaire AI Agents is a paid module, $199 one-time per Odoo version. [See the product page](https://agentlaire.com/ai-agents).

AgentLaire tests Claude Code and Codex. Claude Desktop connects through `mcp-remote` as shown below, which follows Claude Desktop's documentation. ChatGPT and claude.ai custom connectors need OAuth and are not supported.

## How do I turn on the MCP endpoint?

AgentLaire AI Agents keeps the endpoint off after install. An AI Manager turns it on in **AI Control › Configuration › Settings**, under **MCP**, by clicking **Enable**. The endpoint address is shown there, for example `https://your-odoo.example/agentlaire/mcp`.

| Setting | Default | What it does |
| --- | --- | --- |
| MCP endpoint | Off | When off, the address answers 404. **Disable** stops clients at once. |
| Allowed origins | Empty | Web origins that may call the endpoint from a browser. Leave empty for Claude Desktop. |

Two more things must be true:

- The server reaches one database for its host name. With several databases, set `dbfilter` for the host, or have the client send the header `X-Odoo-Database`.
- Behind a reverse proxy, forward the client address (`proxy_mode = True`), so the IP allow-list and the audit log see the real address.

## Which agents can Claude use?

AgentLaire AI Agents offers only the tools of agents that serve MCP. Open **AI Control › Configuration › Agents › Agents**, open an agent, and on its **Access** tab tick **MCP** under "Where it is available". Claude sees the tools of those agents that you may use, with schemas that match your rights and the policies.

## How do I create a personal key?

AgentLaire AI Agents gives each AI User their own MCP keys. Open the user menu, click **My Preferences**, go to the **Security** tab and click **New MCP key** under MCP keys.

| Field | Default | What it does |
| --- | --- | --- |
| Name | none | What the key is for, for example "Claude Desktop on my laptop". |
| Agents | Empty | Limits the key to some agents. Empty means every agent that serves MCP and that you may use. |
| Expires | 90 days from now | When the key stops working. One year at most. |
| Rate limit | 60 per minute | Requests per minute. Over it, Odoo answers 429. |
| Allowed IP addresses | Empty | One address or network (`203.0.113.0/24`) per line. Empty means any address. |

Click **Create key**. Odoo asks for your password, then shows the key once. Copy it: Odoo keeps only a hash. Treat it like a password. Odoo's own API keys are not accepted here.

To revoke a key, click **Revoke** next to it in your preferences. AI Managers see and revoke every key under **AI Control › Configuration › Connections › MCP Keys**.

## What goes in Claude Desktop's config?

Claude Desktop reaches the endpoint through `mcp-remote`, which needs Node.js. Open Claude Desktop's settings, go to **Developer**, click **Edit Config**, and add the server to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "odoo": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://your-odoo.example/agentlaire/mcp",
        "--header",
        "Authorization:${ODOO_AUTH}"
      ],
      "env": { "ODOO_AUTH": "Bearer ovk_XXXXXXXX_..." }
    }
  }
}
```

Replace the address with your own and the value after `Bearer ` with the key you copied. Keeping the key in `env` avoids a space inside the argument, which some clients mishandle. Restart Claude Desktop, and the "odoo" server shows in its tools.

## What can Claude do through MCP?

AgentLaire AI Agents lets an MCP client list tools, read and propose changes. Which tools exist depends on the agents you ticked. With AgentLaire AI Sales & CRM, for example, they include `sales_find_leads`, `sales_orders_by`, `sales_pipeline_by` and `sales_propose_quotation`.

- Reads return the records you may read, and nothing more.
- A write tool returns `pending_approval` with a proposal ID, a summary and a link. It never changes data. An approver decides in the approval inbox, and the MCP call ends with the outcome.
- Every call is a run with trigger **MCP**. It counts as having read untrusted content, so a policy never applies its changes automatically.
- No model is called by Odoo for these runs. Claude Desktop uses its own model.

See [Approvals](https://agentlaire.com/docs/approvals) for how a proposal is reviewed.

## How do I see what Claude did?

AgentLaire AI Control logs every MCP request in the audit log as an MCP request, with the key name, the tool, the outcome and the IP address, never the key itself. The runs show in **AI Control › Runs** with trigger MCP. The kill switch stops MCP calls at once and clients get a 503.

## What do the errors mean?

| Reply | Meaning |
| --- | --- |
| 404 | The endpoint is off. |
| 401 Invalid key | The key is unknown, malformed, revoked or expired, or the user is inactive or no longer an AI User. |
| 403 | The IP address is outside the key's list, or a browser origin is not allowed. |
| 413 | The request body is over 1 MB. |
| 429 | More requests per minute than the key allows. Wait for `Retry-After`. |
| 503 | The kill switch is on. |
