Connecteur Odoo
Le connecteur Odoo pilote une instance Odoo par le protocole XML-RPC. Parmi les douze connecteurs décrits dans ce livre, c'est celui qui expose le plus d'outils : 711 outils nommés au registre, mesurés le 2026-10-03.
Deux endroits où se compter
Le fichier connectors/odoo.yaml ne déclare que 6 outils (crm.search_leads, crm.create_lead, sale.list_orders, account.list_invoices, hr.list_employees, project.list_tasks). Les 711 outils nommés vivent dans le registre Rust crates/forge-mcp/src/connector/odoo_tools_registry.rs. Un test du dépôt affirme ce nombre. Le site public affiche le même chiffre (OUTILS_ODOO dans crates/forge-ui/src/config/chiffres_mesures.rs).
Ce que déclare le fichier
| Propriété | Valeur |
|---|---|
| Fichier | connectors/odoo.yaml |
| Protocole | XML-RPC (type odoo) |
| Licence déclarée | LGPL-3.0 |
| Résidence déclarée | auto-hébergé |
Il n'y a pas de bloc auth : le connecteur lit quatre valeurs de connexion.
Configuration
| Variable | Rôle |
|---|---|
ODOO_URL | Adresse de l'instance Odoo |
ODOO_DATABASE | Nom de la base de données |
ODOO_USERNAME | Identifiant de connexion |
ODOO_API_KEY | Clé d'API Odoo (obligatoire : le fichier la déclare avec :?, sans valeur par défaut) |
Les variables ODOO_DB et ODOO_PASSWORD ne sont lues par aucun connecteur.
Parcours complet, avec la fiche Odoo ERP/CRM et un premier appel : Connecter Odoo à la passerelle MCP.
Pour un locataire, les valeurs sont saisies comme identifiants de la plateforme et stockées chiffrées. Une organisation peut en plus stocker un AppRole OpenBao : l'URL, la base et la clé sont alors lues depuis OpenBao en priorité, au moment de la requête (résolution des identifiants du code, entrée odooApi).
Outils nommés
Mesure du 2026-10-03 sur les 711 entrées du registre, par opération :
| Opération | Outils |
|---|---|
search | 148 |
read | 120 |
group (agrégat en lecture) | 5 |
create | 113 |
update | 105 |
delete | 103 |
action (confirmer, valider, archiver, entre autres) | 117 |
Les lectures (search, read, group) sont donc 273. Les 438 autres modifient des données. Les 711 outils visent 140 modèles Odoo. Les noms sont de la forme <module>_<objet>_<action>.
Exemples réels, tous présents au registre :
| Domaine | Outils |
|---|---|
| Contacts | contacts_search, contacts_create, contacts_merge, contacts_export_gdpr |
| CRM | crm_lead_create, crm_lead_convert, crm_lead_won |
| Ventes | sales_order_search, sales_order_create, sales_order_confirm |
| Achats | purchase_order_confirm |
| Facturation | invoice_search, invoice_create, invoice_post |
| Stock | inventory_product_search |
| Ressources humaines | hr_employee_search (87 outils portent le préfixe hr) |
| Projets | project_task_create |
| Site et contenu | website_page_search, blog_post_create |
Les préfixes les mieux fournis sont hr (87 outils), inventory (51), sales (43), website (39), mrp (35) et crm (34).
Les anciens noms odoo_search_read, odoo_sale_order_list et odoo_invoice_validate n'existent pas au registre. Les noms informels sont rapprochés des noms canoniques à l'appel par odoo_tool_resolver.
Quatre outils génériques
Quatre outils prennent le modèle en argument : record_create, record_read, record_update, record_delete (crates/forge-mcp/src/connector/odoo_generic_crud.rs). Ils ne fonctionnent que sur une liste blanche de 402 modèles métier (odoo_metier_models.rs). Le framework, les rapports, la messagerie et la sécurité en sont exclus.
Écritures gardées
Parmi ces 402 modèles, 24 sont gardés en écriture : plan de comptes, journaux, taxes, lignes d'écriture comptable, relevés bancaires, entre autres. Une création, une modification ou une suppression sur l'un d'eux exige une approbation humaine via /actions/approvals. Elle n'est jamais exécutée seule par l'agent. La lecture de ces modèles reste libre.
Déploiement
podman-compose.vps2.yml déploie 17 services Odoo, un par secteur (thérapie, médical, juridique, immobilier, finance, entre autres). L'entrée du catalogue métier (odoo, catégorie CRM & ERP) a le statut available.
Limites techniques
- Le client HTTP du connecteur a un délai d'attente de 30 secondes.
- L'identifiant utilisateur obtenu à la connexion est gardé en mémoire 600 secondes, puis redemandé.
Exemple
Quels sont les contacts créés cette semaine dans Odoo ?
L'agent choisit un outil de recherche sur les contacts (contacts_search), construit le filtre et exécute l'appel XML-RPC.
Fichiers sources
connectors/odoo.yaml, crates/forge-mcp/src/connector/odoo_tools_registry.rs, crates/forge-mcp/src/connector/odoo_generic_crud.rs, crates/forge-mcp/src/connector/odoo_metier_models.rs
Voir aussi
- Vue d'ensemble — chiffres mesurés, chargement et règles communes aux douze connecteurs
- Créer votre premier connecteur MCP — forme d'un fichier YAML et ajout d'un connecteur à la passerelle
- Routes MCP — ouvrir une session et appeler un outil par JSON-RPC
- Tarification — nombre de connecteurs métier inclus dans chaque offre
- Connecter Odoo à la passerelle MCP — enregistrer les identifiants Odoo puis appeler un premier outil