odoo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ODOO_URL | No | The URL of the Odoo base (e.g., https://acme.odoo.com). Optional if connecting interactively. | |
| ODOO_API_KEY | No | The Odoo API key. Optional if connecting interactively. | |
| ODOO_USERNAME | No | The Odoo login email. Optional if connecting interactively. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| odoo_connectA | Se connecter — a appeler en premier. Identifiants en memoire du serveur seulement,
jamais sur disque. |
| odoo_statusA | État de la connexion courante : base, utilisateur, version, mode lecture/écriture. |
| odoo_enable_writeA | Activer (ou couper) l'ecriture. A n'appeler QU'APRES avoir montre a l'utilisateur ce qui va etre modifie et obtenu son accord. Les suppressions sont irreversibles. |
| odoo_modelsB | Lister les modèles disponibles (res.partner, sale.order, ...). |
| odoo_fieldsA | Champs d'un modele — a consulter AVANT toute ecriture, les noms changent entre
versions (en 19 : Forme compacte par defaut : |
| odoo_searchA | Rechercher et lire. Renvoie aussi le total du domaine (evite un odoo_count). Tableaux JSON : domain='[["customer_rank",">",0]]' fields='["name","email"]'.
Precise toujours |
| odoo_countB | Compter les enregistrements correspondant au domaine. |
| odoo_readC | Lire des enregistrements par identifiants. |
| odoo_aggregateB | Nombre et somme(s) par |
| odoo_name_findB | Retrouver par nom (autocompletion Odoo) — convertir "le client Polytec" en id. |
| odoo_createA | Créer un enregistrement. Bloqué tant que odoo_enable_write n'a pas été appelé. |
| odoo_writeA | Modifier des enregistrements. Bloqué tant que odoo_enable_write n'a pas été appelé. |
| odoo_unlinkA | Supprimer definitivement. IRREVERSIBLE, aucune corbeille. Au-dela de 50 : exige
|
| odoo_upsertA | Creer ou mettre a jour par External ID (ex. 'monprojet.client_acme'). Rejouable sans doublon — a preferer a odoo_create pour maquette et import. |
| odoo_executeA | Appeler n'importe quelle méthode d'un modèle (execute_kw brut). En lecture seule, l'appel passe par une liste blanche de méthodes de lecture tenue côté client ; les méthodes d'écriture (create, write, unlink, load, action_confirm, ...) restent bloquées tant que odoo_enable_write n'a pas été appelé. |
| odoo_update_whereA | Modifier en masse les enregistrements d'un domaine. Sans
|
| odoo_import_fileA | Importer un .xlsx/.csv local (lu sur disque, aucune limite de volume). Modes a enchainer : inspect (structure) / check (valide sans ecrire) / run (importe par lots, atomique par lot). Les en-tetes des exports Odoo sont des libelles, pas des champs, d'ou |
| odoo_export_fileA | Exporter une recherche vers un .xlsx/.csv local. Relations aplaties (many2one ->
libelle). Sans Refuse d'écraser un fichier existant : relancer avec |
| odoo_get_attachmentA | Telecharger une piece jointe (ir.attachment). Trouver son id : odoo_search sur ir.attachment, domaine '[["res_model","=","account.move"],["res_id","=",42]]'. Le nom vient d'Odoo : seul son dernier composant est retenu (jamais de '../'). Un fichier existant n'est jamais écrasé — choisir un autre répertoire. |
| odoo_journal_startA | Ouvrir un journal d'intervention — AVANT toute ecriture. Trace ensuite chaque ecriture avec l'etat AVANT modification, ce qui permet le
rapport. |
| odoo_journal_chapterC | Etape de travail dans le journal : les operations suivantes y sont rattachees.
|
| odoo_journal_noteB | Consigner ce qui n'est pas une ecriture mais merite d'etre explique au client :
arbitrage, anomalie, limite, sujet ecarte. |
| odoo_journal_reportB | Rapport d'intervention presentable au client : synthese, deroule par etape,
detail avant/apres. |
| odoo_presentation_guideC | Deroule de demonstration a suivre en reunion, ecran par ecran, deduit de ce qui a ete fait. Chemin de menu exact, clics en cases a cocher, phrase d'accroche. |
| odoo_recent_changesB | Ce qui a bouge recemment, d'apres l'audit natif d'Odoo (write_date, write_uid). Voit AUSSI les modifications faites dans l'interface par d'autres personnes. |
| odoo_demo_questionnaireA | Questionnaire de qualification, avant de batir une demo prospect. Presente-le tel quel, preambule compris. N'invente pas les reponses manquantes : signale tes hypotheses. Puis compose le plan et fais-le valider AVANT d'ecrire. |
| odoo_demo_modeA | Filet e-mail — a activer AVANT toute generation de donnees de demo. Les bases de demo ne sont pas neutralisees : confirmer une commande ou une facture
envoie un VRAI courriel. Une fois actif, toute adresse ecrite par n'importe quel
outil est reecrite vers |
| odoo_demo_checkA | Verifier qu'aucune adresse reelle ne subsiste avant de demontrer. Audite contacts
(res.partner), salaries (hr.employee), pistes (crm.lead) et utilisateurs (res.users),
au plus |
| odoo_dashboard_listA | Lister les tableaux de bord et leurs rubriques. |
| odoo_dashboard_inspectC | Decrire le contenu d'un tableau de bord (graphiques, sources, filtres) en clair. |
| odoo_dashboard_createA | Creer (ou remplacer via
Valide avant ecriture, y compris en lecture seule. |
| odoo_saved_analysisC | Favori Odoo : analyse que le client retrouve dans le menu des filtres de la vue, regroupement et mesures en place. Plus leger qu'un tableau de bord.
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/JamiTheS/odoo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server