← Terug naar blog

Claude AI koppelen aan Odoo 19 via de JSON/2 API

Stel je voor: je vraagt in gewoon Nederlands welke facturen openstaan, en je AI-assistent zoekt het direct op in Odoo. Geen exports, geen tabbladen wisselen. Wij bouwden de open-source brug tussen Claude en Odoo.

"Laat me alle onbetaalde facturen boven de 5.000 euro zien van Q4." Je typt het in Claude, en binnen een paar seconden heb je het antwoord. Rechtstreeks uit Odoo. Geen CSV-exports, geen tabbladen wisselen, geen queries schrijven.

Dat is precies wat we gebouwd hebben: odoo-mcp-pro, een open-source brug tussen Claude AI en je Odoo-omgeving. In dit artikel leggen we uit hoe het werkt, wat we geleerd hebben, en hoe je het zelf kunt gebruiken.

Het probleem: data opvragen kost te veel stappen

Iedereen die met Odoo werkt kent het. Je wilt even snel iets opzoeken, maar je moet eerst het juiste menu vinden, de juiste filters instellen, en dan hopen dat je de goede kolommen ziet. Voor eenvoudige vragen als "welke orders van vorige maand hebben nog geen levering?" ben je zo een paar minuten kwijt.

Wat als je die vraag gewoon kon stellen, in gewoon Nederlands, en direct het antwoord kreeg?

De oplossing: Claude praat rechtstreeks met Odoo

Met odoo-mcp-pro verbind je Claude AI direct met je Odoo-instantie. Claude kan dan:

  • Zoeken en filteren: "Vind alle contacten in Amsterdam met een openstaande offerte"
  • Records aanmaken: "Maak een lead aan voor Acme Corp, verwachte omzet 50k"
  • Data bijwerken: "Markeer factuur INV-2024-0042 als betaald"
  • Je datamodel verkennen: "Welke velden heeft het sale.order model?"
  • Cross-referenties leggen: "Welke verkooporders van vorige maand hebben nog geen levering?"

Alles via een normaal gesprek. Claude bepaalt zelf welke API-calls nodig zijn. Jij stelt gewoon je vraag.

Gebouwd op de nieuwe Odoo 19 JSON/2 API

Odoo 19 introduceerde een compleet nieuwe API: JSON/2. Dit vervangt de oude XML-RPC interface die al jarenlang de standaard was. Belangrijke verbeteringen:

  • Moderne REST-achtige endpoints: POST /json/2/{model}/{method}
  • Bearer token authenticatie: API key in de header, geen wachtwoord meer per call
  • Echte HTTP statuscodes: 401, 403, 404 in plaats van alles-is-200-met-een-foutmelding
  • Geen custom module nodig: Odoo regelt de toegangscontrole server-side

Belangrijk voor de toekomst: XML-RPC wordt verwijderd in Odoo 20. Wie nu nog XML-RPC gebruikt voor integraties, doet er goed aan om over te stappen. odoo-mcp-pro ondersteunt beide. JSON/2 voor Odoo 19+ en XML-RPC voor Odoo 14-18.

Hoe werkt het technisch?

odoo-mcp-pro is een MCP-server (Model Context Protocol), de open standaard waarmee AI-assistenten externe tools kunnen aanroepen. De server biedt 6 tools aan Claude:

ToolWat het doet
search_recordsZoeken met domeinfilters, sortering en paginatie
get_recordEen specifiek record ophalen op ID
list_modelsBeschikbare Odoo-modellen ontdekken
create_recordEen nieuw record aanmaken
update_recordVelden van een bestaand record bijwerken
delete_recordEen record verwijderen

Wanneer je vraagt "Vind alle onbetaalde facturen boven de 5.000 euro", vertaalt Claude dat naar:

search_records(
  model="account.move",
  domain=[["payment_state", "=", "not_paid"], ["amount_total", ">", 5000]],
  fields=["name", "partner_id", "amount_total", "invoice_date_due"]
)

Een slim veldselectie-algoritme zorgt ervoor dat je altijd de meest relevante velden terugkrijgt. Niet de honderden interne velden die Odoo-modellen standaard hebben.

Twee manieren om te starten

Lokaal (5 minuten)

Voor Claude Code of Claude Desktop. Installeer het project en koppel het met een paar commands:

git clone https://github.com/pantalytics/odoo-mcp-pro.git
cd odoo-mcp-pro
uv venv && source .venv/bin/activate
uv pip install -e .

claude mcp add -s user \
  -e "ODOO_URL=https://jouw-odoo.com" \
  -e "ODOO_DB=jouw_database" \
  -e "ODOO_API_KEY=jouw_api_key" \
  -e "ODOO_API_VERSION=json2" \
  -e "ODOO_YOLO=true" \
  -- odoo python -m mcp_server_odoo

Klaar. Vraag Claude: "Laat de 5 meest recente verkooporders zien" om te testen.

Cloud (voor teams)

Voor Claude.ai (web) of multi-user setups deploy je de MCP-server op een VPS met OAuth 2.1 via Zitadel. Gebruikers klikken op "Connect" in Claude.ai, loggen eenmaal in, en ze zijn klaar. Geen API-keys, geen technische setup.

Claude.ai > OAuth 2.1 > Caddy (TLS) > MCP Server > Odoo
                              |
                        Zitadel (IdP)

De Odoo API key blijft op de server. Gebruikers zien hem nooit. Elke gebruiker krijgt zijn eigen OAuth-token, en Odoo's eigen toegangscontrole (ACLs en record rules) bepaalt wat ze mogen zien.

Wat we geleerd hebben

Een paar lessen die nuttig zijn voor iedereen die AI wil koppelen aan bedrijfsdata:

  1. Begin read-only. Zoeken en lezen eerst. Schrijfoperaties zijn een apart hoofdstuk: validatie, verplichte velden, relationele velden.
  2. Beperk het aantal velden. Stuur niet alle 200 velden van sale.order naar de AI. Kies de top 15-20 die ertoe doen. Dit verbetert de kwaliteit van antwoorden enorm.
  3. Geef voorbeelden in je tool-beschrijvingen. AI-modellen genereren veel betere Odoo-domeinfilters als ze voorbeelden zien zoals [["state", "=", "sale"], ["partner_id.country_id.code", "=", "NL"]].
  4. Gebruik de API key van een gebruiker met realistische rechten. Niet de admin-key in productie. Odoo's ACLs zijn je vangnet.

Open source en klaar voor productie

odoo-mcp-pro is volledig open source onder de MPL-2.0 licentie (dezelfde als Odoo Community). Het project bevat:

  • JSON/2 client voor Odoo 19+ en XML-RPC voor Odoo 14-18
  • 6 tools en 4 MCP-resources
  • Slim veldselectie-algoritme
  • OAuth 2.1 voor veilige cloud-deployments
  • 480+ unit tests

Oorspronkelijk een fork van mcp-server-odoo door Andrey Ivanov, sindsdien uitgebreid met de JSON/2 client, OAuth 2.1, multi-instance cloud deployment en een uitgebreide test suite.

Bekijk het project op GitHub

Hulp nodig?

Wil je Claude koppelen aan je Odoo-omgeving maar weet je niet waar je moet beginnen? Wij helpen je graag. Van een lokale proof-of-concept tot een volledige cloud-deployment met OAuth voor je hele team.

Neem contact op