Un serveur MCP relie un assistant à un logiciel métier par des outils explicites, au lieu d'un copier-coller ou d'un compte administrateur prêté à un modèle. MCP, Model Context Protocol, est un standard ouvert : le même serveur peut servir plusieurs clients. Pour une PME, brancher l'ERP ou le CRM se décide comme le reste des agents IA opérationnels : qui appelle, quoi, avec quel droit, et quelle trace.
Ce guide décrit l'architecture, la sécurité, l'exemple Odoo tel que la documentation 20.0 le publie, les erreurs que nous corrigeons en intégration, et la place d'un serveur écrit par nous. Il ne recrée pas un panorama des nouveautés du protocole. Les pages d'annonce trop larges ont déjà été retirées du site : l'angle ici est le branchement gouverné.
Quelle architecture pour brancher un ERP à un assistant ?
Trois rôles suffisent. Le client est l'assistant que la personne interroge : Claude, ou un autre client compatible. Le serveur MCP est le programme qui publie des outils, par exemple « chercher un devis » ou « lire une nomenclature ». Le système métier, ERP ou CRM, ne parle pas au modèle : il parle au serveur, qui parle au client. La spec du protocole, sur modelcontextprotocol.io, définit ce branchement standard. Elle ne décide pas de vos droits internes.
Deux transports reviennent en entreprise. Un serveur local, lancé sur le poste ou dans le réseau, convient à un outil de bureau. Un serveur distant, joint par une adresse HTTPS, convient à un ERP hébergé. Dans les deux cas, l'authentification précède l'outil. Une URL publique sans contrôle, « pour que l'assistant y accède de partout », est un trou, pas une intégration. Nous la refusons.
L'assistant choisit l'outil d'après son nom et sa description. Une description floue (« gère les ventes ») pousse des appels larges. Une description étroite (« liste les commandes ouvertes du commercial connecté, sans prix d'achat ») limite l'erreur. Nous écrivons ces phrases avec le métier, pas seulement avec le développeur. Le modèle est bon en langage ; il n'invente pas votre séparation des devoirs si elle n'est pas dans l'outil.
Quels droits, quelles clés, quelles traces ?
Le serveur agit avec l'identité qu'on lui donne. Si la clé est celle d'un administrateur, l'assistant est administrateur. Nous créons un compte technique par usage : lecture commerciale, lecture stock, écriture limitée à un objet. Le compte n'est pas une personne physique réutilisée « parce que ses droits sont déjà bons ». Une personne part ; un compte technique se révoque sans couper un salarié.
La clé a une durée, un nom, et un propriétaire nommé. Elle ne se colle pas dans un ticket, un chat ou un dépôt. Anthropic, dans la documentation sécurité de Claude Code, prévient qu'il ne réalise pas d'audit de sécurité des serveurs MCP et qu'il ne les exploite pas : être listé dans un annuaire de connecteurs n'est pas un contrôle. allowedMcpServers et allowManagedMcpServersOnly figent la liste côté client. Côté serveur, le pare-feu et le compte font le reste.
Chaque appel qui écrit laisse une trace dans l'ERP, au nom du compte technique, plus un journal côté serveur : outil, heure, identifiant d'objet, pas le contenu intégral si ce contenu est une donnée sensible inutile au diagnostic. Sans cette trace, un chiffre modifié « par l'IA » ne se retrouve pas. Nous ne mettons pas en production un outil d'écriture muet.
- Nommer le processus et les objets concernés. Pas « connecter l'ERP ».
- Créer le compte technique en lecture seule, hors groupe administrateur.
- Publier les outils de lecture, les faire appeler sur un jeu d'essai, comparer à l'écran métier.
- Ouvrir l'écriture sur un seul objet, avec une action inverse documentée.
- Donner la clé une durée courte, la stocker dans un coffre, la tourner au départ d'un administrateur.
- Relire les journaux la première semaine, puis à chaque nouvel outil.
Comment s'y prendre avec le serveur MCP d'Odoo ?
Odoo documente, pour la version 20.0, un serveur MCP intégré à la base. L'adresse est celle de la base suivie de /mcp. L'authentification est une clé d'API créée dans les préférences de l'utilisateur, onglet Sécurité, avec la portée MCP et une durée choisie.
La clé s'affiche une fois. Le client, Claude Code ou l'application bureau, appelle cette adresse avec l'en-tête d'autorisation. Le guide officiel détaille la commande ; nous ne la recopions pas ici avec une clé, même fictive, pour éviter les copier-coller dans un ticket.
Par défaut, la base expose cinq outils : Get Fields, Get Models, MCP Retrieve initial context, Search, Read group. Ce sont des lectures. Les autres actions serveur restent cachées. Pour en publier une, on passe en mode développeur, on ouvre l'action, et on coche « Available in MCP ». La case « Readonly Tool » ne cache rien : elle indique au client que l'outil peut partir sans confirmation. Nous ne la cochons pas sur une écriture.
Le droit effectif est celui de l'utilisateur dont la clé a été générée. Une clé prise sur un compte administrateur annule le soin mis à ne publier que cinq outils : Search, entre des mains d'admin, voit trop. Nous générons la clé sur le compte technique, après avoir vérifié ses groupes Odoo. JAIKIN intervient comme intégrateur Odoo. Le paramétrage des groupes reste le nôtre, sur la base du client, comme sur nos projets d'intégration Odoo en France.
| Outil | Dès le pilote | Condition pour aller plus loin |
|---|---|---|
| Lister les modèles et les champs | Oui | Compte technique déjà restreint : lister n'est pas anodin si le compte voit tout. |
| Chercher et regrouper | Oui, sur une copie | Comparer dix fiches avec l'écran métier avant toute démo à la direction. |
| Créer ou modifier une fiche | Non | Un objet, une action inverse, un journal, une personne responsable. |
| Action irréversible (validation, paiement, envoi) | Non au pilote | Hors MCP généraliste. Flux dédié, avec arrêt humain, si le processus l'exige vraiment. |
Besoin d'un accompagnement expert ?
Un diagnostic gratuit de 30 minutes pour analyser vos besoins et vous proposer une solution sur mesure.
Quelles erreurs reviennent dès la première semaine ?
La clé dans le chat. Quelqu'un colle le jeton pour « que l'assistant se débrouille ». Le jeton est alors dans un historique de conversation, parfois synchronisé entre appareils. On révoque, on régénère, on cherche où le texte a voyagé. La doc Odoo le dit : la clé ne se réaffiche pas. Ce n'est pas une raison de la stocker dans un mémo partagé.
Le compte administrateur « pour que ça marche ». Le pilote réussit, la démo impressionne, et le même compte reste en production. Search devient une extraction. Nous coupons le pilote plutôt que de figer ce compte. Recommencer avec un utilisateur restreint coûte moins qu'un export de trop.
L'écriture ouverte parce que la case était là. « Available in MCP » sur une action de création de factures, plus « Readonly Tool » coché par erreur, et le client enchaîne sans demander. La case Readonly est un conseil au client, pas un contrôle côté serveur. Le contrôle, c'est de ne pas publier l'action, et de retirer le droit au compte technique.
Le serveur du marketplace installé sans lecture. Anthropic le dit pour Claude Code : la confiance se vérifie à l'ajout d'un serveur, sauf en mode non interactif, où cette vérification saute. Un binaire inconnu qui parle à votre ERP n'est pas un gain de temps. Nous n'installons pas un serveur dont nous n'avons pas lu l'inventaire d'outils.
Enfin, le réseau. Un MCP local qui écoute sur toutes les interfaces, ou une base Odoo dont /mcp est joignable sans le reste des contrôles d'accès déjà en place, élargit le périmètre au-delà du poste prévu. L'adresse fait partie du secret opérationnel. On ne la met pas dans une documentation publique interne sans le même soin que l'URL d'administration.
Ce que nous voyons en intégration
L'exemple que nous pouvons chiffrer sans inventer un gain est le serveur MCP CorelDRAW : 44 outils, produit JAIKIN, déployé dans l'atelier Kappeler. Quarante-quatre, c'est déjà beaucoup. Chaque outil a un verbe. Ce n'est pas « ouvrir CorelDRAW à l'IA ». C'est une liste que l'atelier peut relire. Nous construisons les serveurs ERP de la même façon : un verbe, un objet, un droit, plutôt qu'un passe-partout vers toutes les tables.
Le volume de notre propre code rappelle pourquoi l'inventaire compte. Au 21 août 2026, le monorepo JAIKIN comptait 128 463 lignes de TypeScript et 2 271 commits depuis septembre 2025. Un assistant branché sans liste d'outils sur un tel dépôt, ou sur une base Odoo de PME, ne « comprend » pas le système : il appelle ce qu'on a publié.
La mesure interne de productivité de notre outillage, ×5 à ×10 face aux IDE classiques en 2026, ne dit rien de la sûreté d'un MCP. Elle dit que l'outil accélère ceux qui ont déjà une chaîne. Le serveur, lui, se juge à ce qu'il refuse.
Sur Odoo, l'ordre de paramétrage que nous tenons est stable. Groupes du compte technique d'abord. Clé à durée courte ensuite. Cinq outils de lecture de la doc, sur une copie. Comparaison avec l'écran. Une écriture, sur un objet sans conséquence de trésorerie. Journal. Puis seulement la question d'un second objet. Sauter à la création de pièces parce que la démo de vente le demande, c'est le scénario que nous recadrons en atelier.
Le RAG et le MCP ne se remplacent pas. Le guide pratique du RAG en entreprise sert à répondre à partir de documents. Le serveur MCP sert à lire une fiche vivante à jour, ou à agir dans le logiciel métier.
Mettre la base dans un index pour éviter d'écrire un outil fige des données qui bougent. Nous séparons les deux. La conformité, si des données personnelles remontent dans le prompt, se traite avec la mise en conformité RGPD et AI Act.
Quand l'assistant de code est le client MCP, les réglages gérés décrits dans notre pratique Claude Code s'ajoutent : deny des secrets, liste de serveurs imposée. Le niveau de relecture attendu est celui de la certification Claude Architect. Le choix du modèle ne change pas l'inventaire d'outils ; il change la qualité du choix d'outil, ce que le guide Opus 5.5 pour Claude Code situe sans remplacer la revue.
Quelles limites ne pas négocier ?
MCP ne chiffre pas les droits à votre place. Un outil de lecture large sur un compte large est une fuite lente. Un outil d'écriture sans journal est une modification sans auteur. Le protocole transporte l'appel ; la gouvernance est dans le compte, la liste et la trace. Aucun standard ouvert ne s'en charge.
Un assistant peut appeler le mauvais outil, ou enchaîner trop loin. Les confirmations côté client aident. Elles ne remplacent pas l'absence de l'outil dangereux. Nous préférons un serveur pauvre qui répond « je ne sais pas créer cette pièce » à un serveur riche qu'on surveille « en faisant attention ».
L'article 50 de l'AI Act, applicable depuis le 2 août 2026, joue dès que le système s'adresse à une personne ou génère un contenu couvert. Un MCP interne n'est pas hors sujet s'il prépare une décision individuelle : l'article 22 du RGPD et l'annexe III au 2 décembre 2027 se posent alors.
Le « 35 M€ / 7 % » reste réservé aux pratiques interdites de l'article 99. Brancher un ERP n'est pas, en soi, une de ces pratiques. C'est un traitement à inscrire au registre, avec le compte technique et la durée de la clé.
Questions fréquentes
Qu'est-ce qu'un serveur MCP en entreprise ?
C'est un programme qui publie des actions nommées, les outils, à un assistant compatible. L'assistant appelle un outil, le serveur exécute l'action dans l'ERP, le CRM ou un autre logiciel, avec le droit du compte technique. Le modèle ne reçoit pas un accès libre à la base. Il reçoit le résultat de l'outil, et rien de ce qui n'a pas été publié.
Comment connecter Claude à Odoo avec MCP ?
Sur Odoo 20, la documentation officielle prévoit une clé d'API de portée MCP, à durée choisie, et l'adresse de la base suffixée par /mcp. Cinq outils de lecture sont exposés par défaut. Les écritures se publient une par une via Available in MCP. JAIKIN génère la clé sur un compte technique restreint, sur une copie, avant toute base de production.
Un serveur MCP peut-il modifier les factures tout seul ?
Seulement si une action d'écriture a été publiée et si le compte possède le droit. Ce n'est pas le comportement par défaut documenté par Odoo. JAIKIN n'ouvre pas la validation, l'envoi ou le paiement dans un pilote. Ces actes, lorsqu'ils sont automatisés, passent par un flux dédié avec un arrêt humain, pas par un outil généraliste coché un vendredi.
Faut-il faire confiance aux serveurs MCP du marketplace ?
Non par défaut. Anthropic indique qu'il n'audite pas les serveurs MCP tiers et qu'il ne les administre pas. Un serveur s'installe après lecture de ses outils, de son éditeur et de son mode d'authentification. JAIKIN privilégie un serveur écrit pour le processus, dont l'inventaire tient sur une page, comme les 44 outils du serveur CorelDRAW déployé chez Kappeler.
MCP remplace-t-il le RAG ?
Non. Le RAG sélectionne des passages de documents pour répondre. Le MCP lit ou modifie une fiche vivante dans un logiciel. Indexer la base entière pour éviter d'écrire un outil duplique les droits et fige des données qui bougent. Les deux dispositifs se justifient ensemble seulement quand chacun a son périmètre écrit.
Qui est responsable si l'assistant écrit une mauvaise donnée ?
L'entreprise qui a publié l'outil et choisi le compte, pas le protocole. La trace doit permettre de retrouver l'appel, l'objet et l'heure. Sans journal, il n'y a pas d'enquête utile. JAIKIN ne livre pas d'outil d'écriture sans cette trace, ni sans une action qui permet de revenir en arrière sur l'objet concerné.

