Connecter ses outils : API, MCP et autorisations
Comprendre la différence entre API, serveur MCP, gestionnaire OAuth et application utilisatrice pour connecter vos outils sans confondre transport, autorisation et opération métier.
Quand un outil automatisé doit lire vos e-mails, créer un événement d'agenda ou envoyer un message, quatre rôles distincts entrent en jeu : l'API du fournisseur, le serveur MCP qui expose des outils, le gestionnaire de connexions qui tient les autorisations OAuth, et l'application utilisatrice qui décide quoi faire. Confondre ces rôles conduit à deux erreurs classiques : croire qu'un protocole « sécurise » par lui-même, ou croire qu'un libellé de scope garantit un comportement limité. Ce guide vous aide à séparer transport, autorisation et opération métier, puis à organiser la révocation et la reconnexion.
Quatre rôles à ne pas confondre
L'API du fournisseur (Gmail API, Calendar API, WhatsApp Business Platform) est l'interface officielle par laquelle un logiciel accède à vos données. Elle définit ce qui est techniquement possible : lire une boîte, créer un brouillon, réserver un créneau. Elle ne décide pas ce que votre organisation autorise.
Le serveur MCP est un intermédiaire qui expose des outils à une application utilisatrice, par exemple un agent IA personnalisé. Selon la documentation d'architecture du protocole, MCP échange des outils et du contexte entre un client et un serveur. Il structure la communication ; il ne choisit pas à votre place les règles métier ni les permissions. Un serveur MCP qui expose « envoyer un e-mail » n'a rien décidé sur le fond : c'est votre application qui doit imposer « brouillon uniquement » si tel est votre choix.
Le gestionnaire de connexions OAuth conserve les jetons d'accès, les scopes accordés et leur cycle de vie. C'est lui qui vous permet de révoquer proprement, de reconnecter un compte expiré et de savoir qui a accès à quoi.
L'application utilisatrice porte la logique : quand agir, avec quelles limites, que faire en cas d'échec. C'est elle, pas le protocole, qui transforme une capacité technique en comportement acceptable.
Transport, autorisation, opération : trois choses différentes
Une erreur fréquente consiste à traiter ces trois plans comme un seul. La connexion de transport répond à « le message est-il arrivé ? » : un serveur MCP peut être joignable, la session active, sans qu'aucune opération métier n'ait abouti. L'autorisation du fournisseur répond à « ce jeton a-t-il le droit de faire cette action chez Gmail ou WhatsApp ? ». L'opération métier répond à « l'événement voulu s'est-il réellement produit, dans les règles ? ».
Un exemple simple rend la distinction utile. Votre agent tente de créer un événement d'agenda. Le transport fonctionne, le jeton est valide, l'appel part. Pourtant l'événement n'apparaît pas : le serveur de l'API a accepté la requête mais un contrôle côté fournisseur a rejeté la création. Seule une preuve d'opération — l'identifiant d'événement renvoyé, vérifié ensuite par une lecture — vous dit que c'est fait. Calendar permet d'ailleurs de fournir des identifiants d'événement explicites, ce qui facilite le rapprochement ; il n'existe en revanche aucune transaction globale garantie entre votre système et le calendrier. Sur ce point, la gestion des reprises et des doublons mérite une attention particulière, comme détaillé dans notre guide sur l'automatisation des workflows et la gestion des reprises et doublons.
Scopes Gmail : un libellé n'est pas une frontière
Les scopes OAuth décrivent l'étendue demandée, pas le comportement exact de votre application. Deux scopes Gmail illustrent ce piège. Le scope gmail.compose autorise la création de brouillons, mais il permet aussi l'envoi. Le scope gmail.modify, plus large, autorise également l'envoi. Autrement dit, vouloir « limiter l'agent aux brouillons » ne peut pas reposer sur le choix du scope seul : la restriction doit être un contrôle applicatif — votre application n'appelle jamais le point d'envoi, même si le jeton le permettrait.
La page officielle des scopes de la Gmail API décrit chaque étendue ; la consulter évite de supposer qu'un nom de scope signifie ce que son libellé suggère. Deux conséquences concrètes :
- Choisissez le scope le plus étroit qui couvre le besoin réel, mais ne le présentez jamais comme une garantie de comportement.
- Documentez, côté application, la liste des appels interdits volontairement. C'est cette liste, pas le scope, qui fait foi lors d'une revue d'accès.
Un point technique connexe : l'identifiant d'un brouillon Gmail est stable, mais l'identifiant du message qu'il contient change lorsque le brouillon est modifié. Si votre application met en cache l'identifiant du message pour afficher ou vérifier un brouillon, elle doit le recharger après chaque modification, sinon elle raisonne sur une version obsolète.
MCP expose des outils, il ne décide rien
Un serveur MCP bien conçu rend les capacités explicites : « créer un brouillon », « lister les événements », « envoyer un modèle WhatsApp ». Cette explicitation est précieuse pour la revue : vous voyez d'un coup d'œil ce que l'application utilisatrice peut tenter. Mais l'exposition n'est pas une autorisation. Trois niveaux de contrôle doivent rester distincts :
- Ce que le serveur expose : la liste des outils, avec leurs paramètres.
- Ce que le jeton autorise : les scopes accordés au fournisseur.
- Ce que l'application permet : ses propres règles, par exemple « brouillons uniquement pour les comptes du service client ».
Si vous réduisez le périmètre, il faut souvent agir sur les trois : retirer un outil de l'exposition, réduire le scope à la prochaine reconnexion, et ajuster les règles applicatives. Supprimer uniquement l'outil exposé laisse le jeton intact ; supprimer uniquement le scope peut casser d'autres usages légitimes.
Le cas WhatsApp Business Platform : fenêtre, modèles et canal
WhatsApp Business Platform fonctionne selon une logique de fenêtre de service de 24 heures, réouverte par un message de l'utilisateur. Dans cette fenêtre, votre application peut répondre librement. Au-delà, l'envoi passe par des modèles approuvés. Cette mécanique change la conception d'une automatisation : un agent qui « répond aux demandes » doit savoir s'il est dans la fenêtre ou non, et sinon basculer sur un modèle adapté.
Les règles d'utilisation de WhatsApp encadrent la conformité, la permission et les sorties de canal : un utilisateur doit pouvoir arrêter la conversation, et la permission de le contacter doit être réelle. La tarification de la Platform est établie par message livré, selon la catégorie et le marché ; tous les messages ne sont pas payants. Évitez de bâtir un budget sur un tarif fixe mémorisé d'une ancienne formule : la structure a changé. Enfin, méfiance vis-à-vis des raccourcis : un QR code ne prouve pas qu'un numéro est connecté à la Business Platform officielle. La préparation du numéro et de la connexion est traitée dans notre guide pour créer un chatbot WhatsApp et préparer la connexion du numéro.
Choisir son point d'entrée : tableau de décision
Le tableau suivant résume les situations courantes. Les scénarios sont hypothétiques et servent à situer les rôles, pas à promettre un résultat.
| Situation | Rôle dominant | Contrôle décisif | Piège à éviter |
|---|---|---|---|
| Trier une boîte e-mail | Application utilisatrice | Scope étroit + règles de tri applicatives | Croire que gmail.modify « limite » à la lecture ; il autorise aussi l'envoi |
| Préparer des réponses en brouillon | Application utilisatrice | Interdire l'appel d'envoi dans le code | S'appuyer sur le libellé du scope |
| Créer des événements d'agenda | API du fournisseur | Vérifier l'identifiant d'événement renvoyé | Supposer une transaction globale garantie |
| Exposer des outils à un agent | Serveur MCP | Revue de la liste d'outils exposés | Confondre exposition et autorisation |
| Relier plusieurs comptes à un agent | Gestionnaire OAuth | Inventaire des jetons et scopes | Perdre la trace de qui a accès à quoi |
| Répondre sur WhatsApp dans la fenêtre 24 h | API du fournisseur | Suivi de l'ouverture de fenêtre | Répondre hors fenêtre sans modèle approuvé |
| Relier un outil non couvert | Intégration spécifique | Vérifier l'existence d'une API officielle | Supposer une compatibilité universelle |
Composio : une possibilité, pas une compatibilité universelle
Des plateformes d'intégration comme Composio proposent des connecteurs préconstruits vers de nombreux fournisseurs, avec gestion des authentifications. Cela peut accélérer un premier projet : au lieu d'écrire vous-même la danse OAuth de chaque fournisseur, vous configurez la connexion et vous concentrez la logique métier.
Deux réserves s'imposent. D'abord, la couverture n'est pas universelle : un outil interne à votre entreprise, ou un fournisseur niche, n'aura pas de connecteur, et il faudra une intégration spécifique. Ensuite, déléguer la connexion ne délègue pas la décision : vous restez responsable du choix des scopes demandés et des règles applicatives. Avant d'intégrer un fournisseur via une telle plateforme, vérifiez trois points : l'API officielle existe-t-elle, les scopes disponibles correspondent-ils à votre besoin minimal, et la révocation reste-t-elle possible depuis un seul endroit ?
Procédure : connecter un outil proprement, de bout en bout
Voici une procédure générique, à adapter à chaque fournisseur. Elle suppose un projet unique par usage, ce qui facilite la révocation.
- Créer le conteneur : un projet ou une application dédiée chez le fournisseur (par exemple un projet Google Cloud pour Gmail et Calendar). Notez son nom ; c'est votre unité de suppression.
- Lister les capacités nécessaires : écrire la liste exacte des opérations (lire, brouillon, créer un événement) et en déduire le scope minimal. Vérifier sur la documentation officielle ce que le scope autorise réellement.
- Configurer le gestionnaire de connexions : enregistrer le client OAuth, les scopes, et prévoir le stockage des jetons avec une date d'expiration.
- Définir les règles applicatives : pour chaque outil exposé, décider ce que l'application autorise, interdit, et dans quelles conditions. Exemple fictif : « brouillon uniquement pour les comptes support, envoi impossible même si le jeton le permet ».
- Tester la preuve d'opération : après chaque action, vérifier un retour concret (identifiant de brouillon, identifiant d'événement) par une lecture. Ne jamais considérer « l'appel est parti » comme « c'est fait ».
- Documenter le cycle de révocation : où révoquer (console du fournisseur, gestionnaire de connexions, les deux), qui peut le faire, et comment reconnecter.
Cette procédure rejoint la démarche générale de choix de mission décrite dans Agent IA en entreprise : choisir une mission qui se termine vraiment : une connexion bien délimitée sert une mission délimitée.
Exemple principal : un agent de tri avec brouillons uniquement
Prenons un exemple hypothétique, construit pour illustrer les rôles. Une PME veut un agent qui trie les demandes entrantes et prépare des réponses en brouillon, sans jamais envoyer. Voici le montage, rôle par rôle.
- Fournisseur : Gmail, via un projet Google Cloud dédié. Scope demandé :
gmail.modify(nécessaire pour lire et étiqueter), en acceptant qu'il autorise aussi l'envoi. - Serveur MCP : expose trois outils — « lister les messages non lus », « appliquer une étiquette », « créer un brouillon ». Aucun outil d'envoi n'est exposé.
- Gestionnaire de connexions : conserve le jeton, sa date d'expiration et le scope réellement accordé.
- Application utilisatrice : applique ses règles — ne jamais appeler le point d'envoi, recharger le brouillon après modification car l'identifiant du message change, vérifier chaque brouillon par lecture avant de le signaler comme prêt.
Commentaire de conception. Le choix de gmail.modify plutôt qu'un scope de lecture seule peut surprendre : il est dicté par le besoin d'étiqueter, pas par un désir d'envoyer. C'est précisément parce que le scope est plus large que le comportement voulu que le contrôle applicatif existe. Le tri proprement dit — quelles demandes sont urgentes, lesquelles attendent — est traité dans notre guide sur un agent IA Gmail qui trie les demandes sans perdre les urgences. Ici, nous nous limitons au raccordement : qui expose quoi, qui autorise quoi, qui décide quoi.
La limite de ce montage est honnête : rien n'empêche techniquement un développeur d'appeler l'envoi avec ce jeton. La protection repose sur la revue du code de l'application utilisatrice et sur l'absence d'outil d'envoi exposé au niveau MCP. C'est une défense en profondeur, pas une garantie absolue.
Révocation et reconnexion : le cycle à prévoir dès le départ
Une connexion n'est pas un état permanent. Les jetons expirent, les comptes changent, les besoins se réduisent. Prévoyez le cycle complet dès la conception :
- Révocation côté fournisseur : dans les paramètres de sécurité du compte Google ou WhatsApp Business, l'utilisateur peut retirer l'accès à une application. Après cela, tout appel échoue jusqu'à nouvelle autorisation.
- Révocation côté gestionnaire de connexions : supprimer le jeton stocké et l'entrée du projet. Idéalement, les deux révocations se font ensemble ; sinon, un jeton mort traîne dans vos registres et fausse l'inventaire.
- Reconnexion : refaire le parcours OAuth, en revalidant les scopes. C'est le bon moment pour réduire le périmètre : ne redemandez que ce qui reste nécessaire.
La checklist de permissions d'un agent IA propose une revue périodique de ces accès ; le cycle de révocation en est le complément opérationnel. Un point de vigilance : après une reconnexion, les identifiants mis en cache (brouillons, événements) doivent être revalidés, car l'état du compte a pu changer pendant l'interruption.
Erreurs fréquentes et comment les éviter
Trois erreurs reviennent dès qu'on connecte plusieurs outils. La première : attribuer la sécurité au protocole. MCP structure des échanges ; il ne remplace ni les scopes, ni les règles applicatives, ni la revue humaine. La deuxième : confondre succès de transport et succès métier. Un appel parti sans erreur réseau ne prouve rien sur l'opération ; seule la preuve d'opération compte. La troisième : empiler les connexions sans inventaire. Au bout de quelques projets, plus personne ne sait quel jeton a quel scope chez quel fournisseur. Un registre simple — projet, fournisseur, scopes, date de dernière reconnexion — évite cette dérive.
Une quatrième erreur, plus sournoise : concevoir comme si tous les canaux se ressemblaient. WhatsApp n'a pas la même mécanique de fenêtre que l'e-mail ; l'agenda n'a pas les mêmes garanties de cohérence qu'une base de données. Adapter la conception au canal fait partie du raccordement, pas d'un détail d'implémentation. Pour un premier projet, le guide sur la création de votre premier agent IA aide à choisir un périmètre assez petit pour que ces contrôles restent lisibles.
Questions fréquentes
Un serveur MCP peut-il empêcher mon agent d'envoyer des e-mails ?
Il peut ne pas exposer d'outil d'envoi, ce qui réduit fortement le risque d'usage accidentel. Mais si le jeton OAuth sous-jacent inclut un scope autorisant l'envoi, comme gmail.compose ou gmail.modify, la protection réelle vient aussi de votre application, qui doit ne jamais appeler le point d'envoi. Le protocole structure, il ne décide pas.
Pourquoi ne pas choisir un scope Gmail de lecture seule si l'agent ne fait que trier ?
Parce que trier implique souvent d'étiqueter ou de marquer comme lu, ce qui exige une écriture. Le scope minimal qui couvre ce besoin, gmail.modify, autorise aussi l'envoi : c'est une limite du modèle d'autorisation, pas de votre conception. La réponse est un contrôle applicatif explicite et documenté.
Comment prouver qu'un événement d'agenda a bien été créé ?
En vérifiant l'identifiant d'événement renvoyé par l'API, puis en relisant l'événement. Calendar accepte des identifiants explicites, ce qui facilite ce rapprochement. Il n'existe pas de transaction globale garantie entre votre système et le calendrier : la vérification par lecture fait partie du flux normal, pas d'une précaution optionnelle.
Que se passe-t-il si un utilisateur révoque l'accès côté Google ou WhatsApp ?
Tous les appels échouent jusqu'à une nouvelle autorisation OAuth. Votre application doit gérer ce cas sans boucle d'erreurs : détecter l'échec d'autorisation, suspendre les actions concernées et inviter à la reconnexion. La reconnexion est aussi l'occasion de revalider les scopes à la baisse si le besoin a diminué.
Composio remplace-t-il la gestion des autorisations ?
Il peut la simplifier en centralisant les connexions vers des fournisseurs couverts. Mais la couverture n'est pas universelle et la responsabilité des scopes demandés et des règles applicatives reste la vôtre. Traitez ce type de plateforme comme un raccourci d'intégration, pas comme une délégation de vos décisions d'accès.