io.github.singleflo/odoo-assistant
Odoo Assistant MCP Server
Ein virtueller Odoo-Mitarbeiter über das Model Context Protocol (MCP). Dieser Server gibt Odoos Geschäftslogik, Datensätze und Workflows für LLMs frei, sodass diese sicher Odoo-Daten abfragen, erstellen, aktualisieren und bearbeiten können.
Schnellstart
1. Installieren
Führen Sie den Server direkt aus:
uvx odoo-assistantOder installieren Sie ihn in Ihrer Umgebung:
uv pip install odoo-assistantDie Installation aus dem Quellcode für die Entwicklung bleibt möglich:
uv pip install git+https://github.com/singleflo/odoo-assistant-mcp2. Umgebungsvariablen konfigurieren
Zwei Variablen sind erforderlich; alles andere wird automatisch ermittelt oder hat einen Standardwert:
ODOO_BASE_URL: Die Basis-URL Ihrer Odoo-Instanz (z. B.https://mycompany.odoo.com).ODOO_API_KEY: Der Odoo-API-Schlüssel (Odoo 14+, erstellen unter Einstellungen > Benutzer > API-Schlüssel > Neu). Ein Kontopasswort wird nicht akzeptiert: Ein Schlüssel ist pro Benutzer, begrenzt und eigenständig widerrufbar.
Optionale Konfiguration:
ODOO_DB: Der Datenbankname. Wird automatisch ermittelt, wenn die Instanz genau eine Datenbank bedient; erforderlich, wenn mehrere vorhanden sind – der Fehler listet alle auf.ODOO_USER: Der Login. Wird aus dem Schlüssel ermittelt, was bis zu 59 zusätzliche Roundtrips kosten kann; die Erkennung schlägt fehl, wenn die uid des Schlüsselbesitzers 60 oder höher ist. Das Setzen vermeidet diese Abfrage.ODOO_MCP_MAX_LEVEL: Die höchste Sicherheitsstufe, die dieser Server ausführen darf,0bis4(Standard:3). Damit machen Sie den Server schreibgeschützt oder erlauben das Löschen – siehe Die Obergrenze wählen.ODOO_MCP_PROTECTED_HOSTS: Kommagetrennte Hosts, für die dieser Server Schreibvorgänge ablehnt (standardmäßig leer – kein Host ist im Paket fest integriert). Ein gelisteter Host erlaubt weiterhin Lesezugriffe; zum Schreiben mussODOO_ALLOW_PROD_WRITE=yesals bewusste Überschreibung gesetzt werden.
Related MCP server: mcp-server-odoo
Sicherheitsebene
Jeder Schreibvorgang und jede Aktion durchläuft vor der Ausführung an Odoo einen dynamischen Sicherheitsklassifizierer. Operationen werden in die Stufen L0 bis L5 eingeteilt:
Stufe | Name | Beschreibung | Standardstatus |
L0 |
| Nur-Lese-Abfragen ( | Erlaubt |
L1 |
| Schreibvorgänge und Erstellungen einzelner Datensätze. | Erlaubt |
L2 |
| Batch-Schreibvorgänge, die mehrere Datensätze betreffen. | Erlaubt |
L3 |
| Workflow-Statusübergänge (z. B. Aufträge bestätigen, Rechnungen buchen). | Erlaubt |
L4 |
| Destruktive Operationen (z. B. | Blockiert |
L5 |
| Private Methoden oder unbekannte Operationen. | Blockiert |
Die Obergrenze wählen
ODOO_MCP_MAX_LEVEL legt die höchste Stufe fest, die dieser Server ausführen darf. Jeder Wert ist kumulativ – er erlaubt seine eigene Stufe und alles darunter:
Wert | Was erlaubt wird |
| Nur Lesezugriffe. |
| + Schreibvorgänge und Erstellungen einzelner Datensätze. |
| + Batches mit mehr als 5 Datensätzen. |
| Standard. + Bestätigen von Aufträgen, Buchen von Rechnungen, Senden von E-Mails. |
| + |
| Wird akzeptiert, aber effektiv identisch zu |
Zwei Verhaltensweisen sollten Sie kennen, bevor Sie eine Zahl wählen:
5schaltet L5 nicht frei. Beide L5-Varianten werden abgelehnt, bevor die Obergrenze überhaupt gelesen wird.L5_PRIVATEwird abgelehnt, weil Odoo selbst jede Methode ablehnt, die mit_beginnt, sodass keine Obergrenze sie bereitstellen könnte;L5_UNKNOWNwird abgelehnt, weil eine Methode, die niemand klassifiziert hat, definitionsgemäß ungeprüfte Auswirkungen hat. Der Weg, eine solche Methode zu erlauben, besteht darin, sie inWRITE_L1/L3/L4insafety_layer.pyhinzuzufügen – im Code, überprüft – niemals durch Konfiguration.Ein ungültiger Wert verhindert den Start.
ODOO_MCP_MAX_LEVEL="O"führt zu einem Fehler, anstatt auf den Standardwert zurückzufallen, weil der Standardwert schreibfähig ist: Ein Tippfehler darf Ihnen keinen schreibenden Server bescheren, den Sie für schreibgeschützt hielten.
Die Obergrenze wird out-of-band von einem Menschen gesetzt und beim Start aus der Prozessumgebung gelesen. Das gegen diesen Server laufende Modell kann sie nicht erhöhen; wenn ein Aufruf die Obergrenze überschreitet, nennt die Ablehnung die erforderliche Stufe, sodass der Agent erklären kann, was die Operation ändern würde, und die Entscheidung Ihnen überlässt.
Beachten Sie, dass dies die Autorität dieses Servers ist, nicht die des Kontos. Ein Agent mit Shell-Zugriff kann einen MCP-Server jederzeit umgehen, indem er Odoo direkt aufruft. Eine Einschränkung, die unabhängig vom Client gelten muss, gehört in die Odoo-Zugriffsrechte des Benutzers, dem der API-Schlüssel gehört, wo der Odoo-Server sie durchsetzt.
Odoo-Versionsunterstützung
Odoo 14.0 ist die absolute Mindestversion, die unterstützt wird, da dieser Server nur mit API-Schlüsseln authentifiziert, die es in Odoo 13 oder älter nicht gibt.
Odoo-Version | API-Schlüssel | XML-RPC | Offiziell gewartet (Aug. 2026) | Support-Level / Hinweise |
≤ 13.0 | Nein | Ja | Nein | Nicht unterstützt. Kann mit diesem Server nicht authentifizieren. |
14.0 | Ja | Ja | Nein | Protokollkompatibel. Nicht an einer Live-Instanz getestet. |
15.0 | Ja | Ja | Nein | Protokollkompatibel. Nicht an einer Live-Instanz getestet. |
16.0 | Ja | Ja | Nein | Protokollkompatibel. Nicht an einer Live-Instanz getestet. |
17.0 | Ja | Ja | Ja (bis Sep. 2026) | Protokollkompatibel. Nicht an einer Live-Instanz getestet. |
18.0 | Ja | Ja | Ja (bis Sep. 2027) | Primäres Ziel. Verifiziert und vollständig unterstützt an einer Live-Instanz. |
19.0 | Ja | Ja | Ja (bis Sep. 2028) | Protokollkompatibel. Nicht an einer Live-Instanz getestet. API-Schlüssel erfordern Beschreibung und Ablauf (max. 3 Monate). |
Pfad zur API-Schlüsselgenerierung
Um einen API-Schlüssel zu generieren, melden Sie sich bei Ihrer Odoo-Instanz an und navigieren Sie zu: Einstellungen / Mein Profil → Kontosicherheit → Neuer API-Schlüssel
Transport- und Deprecation-Hinweis
Der Client erkennt automatisch, ob die native JSON-2-API unter /json/2/<model>/<method> verfügbar ist (die Authorization: bearer <API_KEY> verwendet) und fällt auf XML-RPC zurück, wenn nicht. Bitte beachten Sie, dass XML-RPC und JSON-RPC in Odoo 19 veraltet sind und für Odoo 22 zur Entfernung vorgesehen sind.
Quellen
Odoo 14.0 Externe API-Dokumentation (Einführung der API-Schlüssel)
Odoo 19.0 Externe API-Dokumentation (JSON-2)
Odoo 19.0 Externe RPC-API-Dokumentation (XML-RPC-Deprecation)
Odoo Standard- und erweiterte Support-Richtlinie (Support-Zeitpläne)
Tools und Ressourcen
Der Server stellt 19 Tools und 2 Ressourcentypen bereit:
Tools
search_read: Datensätze in einem Aufruf suchen und lesen (Odoosearch_read).read_record: Einen Datensatz nach ID lesen, immer mit benannten Feldern.count_records: Die Anzahl der Datensätze zählen, die einer Domain entsprechen (Odoosearch_count).instance_overview: Die verbundene Instanz zusammenfassen: Version, Unternehmen, Volumen pro Bereich, hauseigene Module, Anomalien.required_fields: Auflisten, was Odoo vor einemcreateauf einem Modell verlangt, den Standardwert, den es anwenden würde, und wie vorhandene Datensätze es tatsächlich nutzen.create_record: Einen Datensatz erstellen, wobei ein vorhandener Treffer wiederverwendet wird, wennunique_onangegeben ist.write_record: Feldwerte in einen Datensatz schreiben und melden, was sich tatsächlich geändert hat.run_action: Eine Workflow-Methode ausführen und den zurückgelassenen Status melden.cancel_record: Einen Datensatz überaction_cancelstornieren, dem zurückgegebenen Assistenten folgend.notify_user: Benutzer im Chatter eines Datensatzes benachrichtigen. Standardmäßig intern.create_activity: Eine Aktivität planen: die einzige Benachrichtigung, die eine Frist trägt.download_docs: Alle Dokumente eines Datensatzes auf die Festplatte speichern, einschließlich Chatter-Dateien.generate_pdf: Das PDF eines Datensatzes rendern und zurückgeben, wo es gespeichert wurde.list_message_targets: Auflisten, wer benachrichtigt werden kann und wo – interne Benutzer mit Anwesenheit (online/abwesend/offline) und die offenen Konversationen des Aufrufers. Vor dem Senden abfragen.read_conversation: Eine Discuss-Konversation lesen, neueste zuerst.send_direct_message: Eine 1-zu-1-Discuss-Nachricht senden, die in Echtzeit in der Chat-Systray des Benutzers erscheint – keine E-Mail, erreicht ihn unabhängig von seiner Benachrichtigungseinstellung.send_channel_message: In einem vorhandenen Discuss-Kanal posten, wobei ein Raum abgelehnt wird, der einen Nicht-Mitarbeiter enthält.explore_module: Die Struktur eines Moduls durch Abfragen der Live-Instanz erkunden.list_known_modules: Die Module auflisten, die dieser Server gelernt hat: Name, Erstellungsdatum, Datensätze.
Die Tools 10-11 (notify_user, create_activity) benachrichtigen ÜBER einen Datensatz und landen in der Inbox-Glocke; die Tools 14-17 sind Discuss-Konversationen, die in der Chat-Systray landen. "Nachricht an Benutzer X" ist die zweite Art – send_direct_message, nicht notify_user.
Ressourcen
odoo://skill: Zugriff auf die Odoo-Assistant-Fähigkeitsanweisungen.odoo://ref/*: Zugriff auf generierte Referenzdokumentation für erkundete Module.
Host-Konfigurationsbeispiele
Jedes Beisiel unten enhält nur das Wesentliche: die beien erfordelichen Variablen und die Oberrenze – die eine Einstellung, die entsheiedet, ob dieser Server schreiben darf, sichtbar in der Datei, die der Mensch besitzt. Die Datenbank und der Login werden ermittelt, und 3 ist der Standard der Oberrenze. Beachten Sie die Anführungszeichen: Umgebungswerte sind Zeichenketten.
Claude Desktop
Fügen Sie dies zu Ihrer claude_desktop_config.json hinzu:
{
"mcpServers": {
"odoo-assistant": {
"command": "uvx",
"args": [
"odoo-assistant"
],
"env": {
"ODOO_BASE_URL": "https://mycompany.odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_MCP_MAX_LEVEL": "3"
}
}
}
}Cursor
Fügen Sie dies zu Ihrer .cursor/mcp.json hinzu oder konfigurieren Sie es in der Cursor-Einstellungs-UI:
{
"mcpServers": {
"odoo-assistant": {
"command": "uvx",
"args": [
"odoo-assistant"
],
"env": {
"ODOO_BASE_URL": "https://mycompany.odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_MCP_MAX_LEVEL": "3"
}
}
}
}VS Code Copilot
Fügen Sie dies zu Ihrer VS-Code-settings.json hinzu:
{
"mcp.servers": {
"odoo-assistant": {
"command": "uvx",
"args": [
"odoo-assistant"
],
"env": {
"ODOO_BASE_URL": "https://mycompany.odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_MCP_MAX_LEVEL": "3"
}
}
}
}opencode
Fügen Sie dies zu opencode.json oder .opencode/opencode.json in Ihrem Projekt hinzu oder zu ~/.config/opencode/opencode.json, um den Server überall verfügbar zu machen:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"odoo-assistant": {
"type": "local",
"enabled": true,
"command": [
"uvx",
"odoo-assistant"
],
"timeout": 120000,
"environment": {
"ODOO_BASE_URL": "https://mycompany.odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_MCP_MAX_LEVEL": "3"
}
}
}
}Die Struktur von opencode unterscheidet sich von den oben genannten Hosts auf eine Weise, die diese direkt ablehnen: Der Schlüssel ist mcp (nicht mcpServers), type ist erforderlich, command ist ein einzelnes Array, das das Programm und seine Argumente enthält (es gibt kein separates args), und der Umgebungsblock ist environment (nicht env).
Setzen Sie timeout bewusst. Der Standardwert beträgt 5000 ms, und der erste Aufruf einer Sitzung umfasst die Authentifizierung sowie für instance_overview Dutzende von XML-RPC-Roundtrips – bequem über fünf Sekunden gegen eine echte Instanz.
opencode liest seine Konfiguration einmal beim Start und lädt sie nicht neu, also beenden und neu starten nach der Bearbeitung. Alles, was Sie hier ändern – einschließlich der Obergrenze – wirt erst beim nächsten Staret wirksam.
ChatGPT (Benutzerdefinierte Konnektoren)
Um diesen Server über benutzerdefinierte Konnektoren mit ChatGPT zu verbinden:
Gehen Sie zu Einstellungen → Konnektoren → Konnektor hinzufügen.
Geben Sie die Server-URL ein oder wählen Sie aus dem Registry.
Geben Sie bei Aufforderung Ihre Odoo-Anmeldedaten ein.
Hermes
Fügen Sie den Server über die Hermes CLI hinzu:
hermes mcp add odoo-assistant \
--env ODOO_BASE_URL=https://mycompany.odoo.com \
--env ODOO_API_KEY=your-api-key-here \
--env ODOO_MCP_MAX_LEVEL=3 \
--args run odoo-assistantDie Beispiele lassen die optionalen Variablen aus. Setzen Sie ODOO_DB, wenn die Instanz mehrere Datenbanken bedient, ODOO_USER, um die uid-Abfrage zu überspringen, und ODOO_MCP_MAX_LEVEL, um die Obergrenze gegenüber dem Standardwert von 3 zu ändern.
License
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie in der Datei LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that enables AI assistants to interact with Odoo ERP apps like Inventory, CRM, Sales, and Manufacturing. It allows users to read, create, and manage Odoo records and workflows using natural language commands.25151ISC
- Alicense-qualityDmaintenanceAn extensible MCP server that integrates Odoo with LLMs to enable querying and managing business data like partners, quotations, and sales orders. It supports custom tool registration and multiple transport protocols for both local and remote communication.2MIT
- Alicense-qualityCmaintenanceAn MCP server that connects AI assistants to Odoo ERP instances via the built-in XML-RPC API without requiring any additional addons. It enables users to search, create, update, and manage Odoo records and models through natural language.238MIT
- Alicense-qualityCmaintenanceAn MCP server that enables AI assistants to interact with Odoo ERP, allowing natural language queries, record creation, updates, and deletions.LGPL 3.0
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
MCP server for AI dialogue using various LLM models via AceDataCloud
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/singleflo/odoo-assistant-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server