Accueil / Articles

OpenAPI en tant que source de vérité pour les serveurs MCP : contrats, schémas, révision.

Comment utiliser OpenAPI comme contrat derrière un serveur MCP : champs clés, descriptions, schémas, transmission de l’authentification, validation, propriété et versionnement.

Éditeur : REACTAPP.TOP10 min de lecture2314 mots

Sources: OpenAPI as the Source of Truth for AI-Ready MCP Tools

Le contrat passe en premier

Un serveur MCP ne peut être ni plus clair ni plus fiable que le contrat API sur lequel il repose. De nombreuses équipes traitent un fichier OpenAPI comme un document de référence pour les développeurs humains, ou comme une entrée brute pour des générateurs de code. Lorsque l’utilisateur est un client IA, ce fichier remplit une fonction encore plus importante : il décrit en détail les opérations, les entrées, les sorties, les schémas d’authentification ainsi que les environnements que la couche MCP doit représenter fidèlement.

Règle pratique : le document OpenAPI reste la source officielle concernant les fonctionnalités de l’API, tandis que la configuration MCP constitue une projection sélectionnée de ce document destinée aux clients IA. Cette projection peut choisir quelles opérations afficher et peut améliorer leur présentation. Elle ne doit en aucun cas inventer des champs, des permissions ou des comportements métier que l’API sous-jacente ne possède pas.

Une personne qui consulte une interface d’extrémité peut examiner quelques exemples, puis interroger un collègue au sujet d’un paramètre déroutant. Un client d’IA ne dispose que de ce que les outils et les schémas lui indiquent. Les lacunes dans la documentation source se transmettent directement à l’interface destinée à l’IA, et elles prennent souvent quelques formes familières :

  • un nom d’outil qui ne donne aucune indication sur l’action qu’il effectue
  • un champ qui est obligatoire en pratique mais qui semble optionnel
  • un enum sans liste des valeurs autorisées
  • une réponse sans structure utilisable
  • des informations d’authentification incorrectes
  • un serveur de préproduction qui pourrait être confondu avec un serveur de production

Le serveur continue de démarrer et l’outil apparaît toujours dans la liste des découvertes. Cependant, le client peut choisir la mauvaise opération, envoyer des données invalides ou interpréter incorrectement le résultat. Ainsi, un API n’est pas prêt pour l’IA simplement parce que son fichier OpenAPI se parse correctement. Il l’est lorsque le contrat contient suffisamment de détails pour permettre à un système différent d’utiliser l’API correctement.

Qui est responsable de chaque couche ?

OpenAPI décrit une API HTTP, tandis que MCP expose des fonctionnalités aux applications d’IA compatibles avec MCP. Ils coopèrent, mais ne sont pas interchangeables, et chacun gère une partie différente du fonctionnement global :

  • En ce qui concerne les opérations, OpenAPI définit la route et l’action, tandis que MCP présente l’opération choisie comme quelque chose que le client peut découvrir.
  • En ce qui concerne les entrées, OpenAPI définit les paramètres, les corps de requête et les types, tandis que MCP les transforme en un schéma d’entrée que le client peut utiliser.
  • En ce qui concerne les résultats, les documents OpenAPI définissent les réponses de succès et d’erreur, tandis que MCP fournit des résultats dans un format que le client peut interpréter.
  • En matière de sécurité, OpenAPI indique les schémas et les exigences, et le moteur de MCP transmet les identifiants à l’API d’origine.
  • En ce qui concerne les environnements, OpenAPI nomme les serveurs et les versions d’API, et la couche MCP héberge et expose l’endpoint configuré.
  • En ce qui concerne l’historique, OpenAPI suit l’évolution du contrat, tandis que la configuration MCP enregistre l’ensemble des fonctionnalités choisies et leurs versions.
  • Cette séparation évite une erreur classique : renommer un outil dans un tableau de bord MCP en supposant que le contrat API a changé en même temps. Les modifications de présentation relèvent de la configuration MCP. Les changements de comportement ou de schémas relèvent de la définition de l’API d’origine.

    Les champs OpenAPI les plus importants

    Chaque champ n’a pas la même importance pour un client utilisant une IA. Certains influencent directement les fonctionnalités du outil résultant.

    Le operationId confère à chaque opération une identité stable ainsi qu’un point de départ pour le nom du outil. Des IDs dupliqués ou peu clairs rendent le choix des outils plus difficile. Les champs summary et description sont ceux que le client consulte pour déterminer si un outil convient ; des formulations trop succinctes rendent difficile la distinction entre des opérations similaires. Le chemin et la méthode HTTP identifient l’action associée à l’outil, et une erreur à cet égard dirige la fonctionnalité vers la mauvaise route.

    Les paramètres de chemin et de requête définissent les champs d’entrée, obligatoires ou facultatifs. Leurs absences, leurs noms incorrects ou leurs fautes de frappe entraînent des appels infructueux. Le requestBody et ses schémas décrivent les données structurées nécessaires aux opérations de création et de mise à jour, et un schéma incomplet pousse les clients à envoyer des en-têtes de données incorrects. Les schémas de réponse indiquent ce qui est renvoyé, et des définitions insuffisantes empêchent le client de les interpréter.

    securitySchemes et les exigences décrivent le fonctionnement de l’authentification en temps de exécution, et des informations incorrectes font échouer les outils qui semblent valides dès que les identifiants sont fournis. L’entrée servers ou les noms de configuration du hôte indiquent l’environnement qui reçoit la demande, de sorte qu’une URL inexacte peut diriger le trafic de test ou de production vers le mauvais endroit. Enfin, info.version ainsi que l’historique des modifications fournissent aux reviewers une référence de base ; sans eux, les dérives ne se manifestent que lorsque les outils cessent de fonctionner. La qualité de tous ces champs détermine le niveau d’examen nécessaire avant qu’une équipe ne sélectionne et ne publie des fonctionnalités.

    Identifiants d’opération en tant que noms stables

    Un operationId a une fonction plus importante que la simple génération d’un SDK. Il confère à chaque opération une identité qui perdure malgré les changements dans la manière dont l’API est décrite ou affichée. De bons identifiants sont uniques dans tout le document, précis quant à ce que l’utilisateur voit se produire, cohérents sur le plan stylistique et suffisamment stables pour être reconnus lors d’analyses ultérieures. Des noms tels que list_projects, get_invoice ou create_ticket sont bien plus faciles à comprendre que request1, endpointA ou une chaîne générée dépourvue de sens métier.

    La stabilité facilite également la maintenance. Lorsque quelqu’un modifie une description, ajoute un champ de réponse ou change un paramètre, l’équipe peut déterminer quelle capacité MCP a été affectée, au lieu de traiter toute la liste d’outils comme un ensemble d’extrémités inconnues.

    Les descriptions comme support à la prise de décision

    La description d’une outil n’est pas une simple décoration. Le client d’IA l’utilise pour décider de ce qu’il doit faire, il doit donc indiquer ce que l’opération effectue, quand l’utiliser, quelles ressources elle affecte, quels entrées sont nécessaires, quels contraintes s’appliquent, ainsi que si elle lit des données ou modifie un état.

    Prenons deux versions pour une opération de mise à jour de projet. La version simplifiée indique simplement « Mettre à jour un projet ». La version plus détaillée explique qu’elle modifie le nom, la description ou l’état d’un projet existant, qu’elle doit être utilisée lorsque l’utilisateur a sélectionné un projet et souhaite clairement modifier ses informations enregistrées, et qu’elle ne doit pas être employée pour créer un nouveau projet. La seconde version établit une distinction claire entre mise à jour et création, et rend évident pour les examinateurs le comportement de modification d’état.

    Le fichier OpenAPI source doit contenir des résumés et des descriptions significatifs partout où c’est possible. De nombreuses plateformes permettent aux équipes d’éditer les noms et les descriptions des fonctionnalités après l’importation, ce qui facilite la présentation destinée à l’IA. Néanmoins, les paramètres et le comportement doivent rester inchangés dans la définition API originale.

    Schémas que le client peut utiliser

    Les noms de paramètres seuls ne suffisent pas, car un client a besoin d’un schéma sur lequel il peut agir. Les schémas d’entrée doivent indiquer quels champs sont obligatoires et quel type chacun prend, si une valeur fait partie d’une liste définie ou est du texte libre, comment les dates, les IDs et les montants doivent être formatés, quels sont les limites inférieures et supérieures, ainsi que la structure des objets et des tableaux imbriqués. Les schémas de sortie doivent révéler tout ce qui permet à un client de passer à l’étape suivante. Supposons qu’une extrémité de réseau renvoie un projet contenant un ID, un statut, un propriétaire et des timestamps : modélisez chacun d’eux avec précision afin qu’ils ne soient pas perdus au sein d’un bloc non structuré.

    La précision influence à la fois le succès et l’échec. Un champ indiqué comme optionnel mais réellement exigé par l’API peut piéger le client dans une boucle de demandes invalides, tandis qu’un champ marqué comme obligatoire que l’API ne prend plus en charge peut bloquer un flux de travail légitime. Les références doivent également fonctionner correctement. Les composants réutilisables constituent un atout d’OpenAPI, mais un $ref défectueux ou une définition imbriquée inachevée peut priver la capacité générée des informations nécessaires pour valider les entrées.

    La sécurité est documentée, mais pas garantie

    OpenAPI peut décrire les clés API, les tokens Bearer, les flux OAuth ainsi que les exigences associées à chaque opération, ce qui indique à la couche MCP comment les requêtes doivent être authentifiées. Cependant, ce n’est pas là l’ensemble des aspects de sécurité. Lors de l’exécution, l’équipe doit encore vérifier quatre points : les identifiants prévus proviennent bien du client MCP, ils arrivent à l’API d’origine sans modification, l’API applique bien les permissions liées aux utilisateurs et aux abonnés, et les identifiants expirés ou défaillants génèrent un résultat sûr et facile à diagnostiquer.

    Un design courant est le passage direct des identifiants. Le client fournit une clé API, un jeton Bearer ou un jeton OAuth, et l’environnement de exécution MCP le transmet à l’API d’origine à chaque demande sans conserver les identifiants du client. Dans ce modèle, c’est l’API elle-même qui reste responsable de l’autorisation métier, des limites par utilisateur et de l’accès au niveau des enregistrements. Les exigences de sécurité nécessitent une documentation précise, et l’authentification doit être testée à l’aide d’identifiants similaires à ceux réels.

    Choisir ce qui doit être exposé

    Un fichier OpenAPI peut décrire toute l’API d’un produit, mais le serveur MCP ne doit exposer que le sous-ensemble permettant des workflows d’IA utiles et sécurisés. Le contrat source indique quelles opérations existent et comment elles fonctionnent. Une revue distincte des capacités détermine lesquelles un client d’IA devrait voir. Cette revue prend en compte la valeur pour le client, la sensibilité des données, le risque de modification de l’état, l’ordre dans lequel les opérations dépendent les unes des autres, la clarté de chaque description, la couverture en matière d’autorisation ainsi que le nombre total d’outils affichés au client.

    Les outils peuvent automatiser les tâches mécaniques, telles que l’importation d’une définition Swagger ou OpenAPI prise en charge, la liste des opérations détectées, ainsi que la création ou la mise à jour d’outils, de ressources et de prompts. L’équipe décide néanmoins quelles capacités représentent bien son produit.

    Validation avant mise en production

    Effectuez une validation avant que une définition ne devienne une interface MCP en production, en commençant par la structure. Vérifiez que la version OpenAPI ou Swagger est prise en charge, que les chemins et les méthodes sont valides, et que les IDs des opérations ne se répètent pas. Assurez-vous que chaque $ref se résout correctement, que les schémas de demande et de réponse sont complets, que les URLs du serveur et les chemins de base sont corrects, et que les schémas de sécurité sont associés aux opérations appropriées.

    Ensuite vient l’examen du sens. Les descriptions reflètent-elles le comportement réel, et les champs requis le sont-ils vraiment ? Vérifiez que les exemples sont sûrs et à jour, que les opérations obsolètes sont clairement marquées, que les réponses couvrent les champs nécessaires à un flux de travail d’IA, et que les opérations de lecture sont séparées de celles qui modifient l’état.

    Les retours précoces provenant de la validation sont précieux, car les deux types de constats diffèrent en importance. Un avertissement concernant l’absence d’une description indique un problème de conception, tandis qu’une référence de schéma non résolue peut entraîner une panne en temps de exécution.

    Deux artefacts, deux responsables

    Derrière toute intégration sur laquelle les clients d’IA peuvent compter se trouvent deux artefacts liés : le contrat API et la configuration MCP qui sélectionne et présente les fonctionnalités. Chacun nécessite un responsable clairement identifié.

    La propriété de la définition API couvre les routes, les méthodes, les champs de demande et de réponse, les types, formats et contraintes associés, les schémas d’authentification, les détails de version ainsi que tout comportement réellement implémenté par le service. La configuration MCP gère la liste des opérations exposées, le choix des outils, des ressources et des prompts, les noms et descriptions destinés à l’IA, le nom MCP avec son domaine hébergé, ainsi que la version de configuration enregistrée.

    Lorsque le schéma API évolue, il convient de partir de la définition source. Ensuite, examiner la configuration MCP qui en est affectée, tester les nouvelles fonctionnalités et publier une version pouvant être réversée si nécessaire. Les bonnes plateformes prennent en charge les versions de configuration enregistrées, l’examen des modifications, la restauration d’une version antérieure et la mise à jour d’un serveur hébergé sans avoir à le reconstruire ni à modifier l’URL.

    Mettre à jour la source de vérité

    Une source de vérité n’est utile que tant qu’elle est mise à jour régulièrement. L’interface destinée à l’IA peut être affectée lorsqu’un paramètre requis est ajouté ou supprimé, qu’une valeur enum change, qu’une opération devient obsolète, qu’un point de terminaison renvoie une structure différente, que les exigences d’authentification évoluent ou qu’une règle d’autorisation devient plus stricte. Le trafic normal de l’application peut continuer de circuler tandis que l’outil MCP devient silencieusement trompeur ; par conséquent, les mises à jour d’OpenAPI méritent la même procédure d’examen que les versions de code et d’API.

    Un cycle de maintenance pratique comporte sept étapes :

    1. Mettre à jour la définition OpenAPI pour refléter les changements.
    2. Vérifier le document et éliminer ses avertissements.
    3. Déterminer quelles capacités MCP sont affectées.
    4. Examiner les noms, descriptions, schémas et exigences de sécurité.
    5. Tester des appels réussis et échoués représentatifs.
    6. Publier une nouvelle version de configuration MCP.
  • Surveillez les erreurs, la latence et l’utilisation des outils après le déploiement.
  • Une fois en production, un environnement interactif est utile pour examiner les fonctionnalités, appeler des outils, tester des ressources et des commandes, vérifier l’authentification et consulter les journaux d’utilisation individuels.

    Un parcours géré de l’API au MCP hébergé

    Une approche repose sur l’idée que les équipes SaaS ne devraient pas avoir à réécrire leur API pour proposer certaines fonctionnalités via MCP. Le processus commence par l’importation d’une définition d’API compatible ou d’une collection Postman, afin d’identifier les opérations disponibles. Ensuite, les erreurs et avertissements de validation sont vérifiés, puis les opérations destinées à l’interface destinée à l’IA sont sélectionnées, permettant de créer ou de mettre à jour des outils, des ressources et des prompts. Les noms et descriptions sont modifiés si nécessaire, l’authentification en temps de exécution est configurée à l’aide de l’API d’origine, et le serveur hébergé est testé avant que les utilisateurs réels ne se connectent. Par la suite, les versions de configuration sont publiées et gérées au fil du temps.

    Dans ce modèle, le serveur généré est hébergé via Streamable HTTP, la plateforme gérant l’infrastructure d’hébergement, et les serveurs locaux stdio ne sont pas pris en charge. L’API reste le système de référence pour la logique métier et l’autorisation. La plateforme assure la conversion, un point de terminaison hébergé, des contrôles de configuration ainsi que des vues opérationnelles liées à l’interface MCP.

    En résumé

    OpenAPI est bien plus qu’un simple fichier d’import. C’est le contrat qui indique à une intégration MCP ce que signifie chaque opération, quels sont les entrées nécessaires, comment fonctionne l’authentification et ce à quoi un client IA devrait s’attendre en retour. Avec un contrat précis, la couche MCP peut rester une projection rigoureuse qui sélectionne les bonnes fonctionnalités, les présente clairement et les exécute en toute sécurité. Avec un contrat vague ou obsolète, la génération de code ne fait qu’accélérer l’ambiguïté.

    Considérez OpenAPI comme la source de vérité et MCP comme l’interface destinée aux IA, et reliez les modifications entre les deux grâce à la validation, aux tests, à l’observabilité et au contrôle de version. Cela transforme une API existante en une base maintenable pour des outils prêts à être utilisés avec des IA.