MCPGuard, un cadre automatisé permettant de vérifier si les kits de développement logiciel (SDK) du Model Context Protocol (MCP) appliquent la spécification du protocole, a identifié 13 écarts de conformité dans le SDK officiel Python et 19 dans le SDK TypeScript, selon un article de recherche actuellement en cours d’examen. Les auteurs affirment que deux méthodes de référence de tests en boîte noire n’ont révélé aucun de ces résultats.

Le cadre utilise deux axes d’analyse. Le premier compare les contraintes du schéma JSON de MCP aux modèles présents dans le code des SDK, tandis que le second extrait les exigences comportementales des documents de spécification et utilise des modèles de langage pour signaler d’éventuelles omissions. Une étape d’examen supplémentaire analyse l’intégralité du contexte du code source et élabore des tests de validation de principe afin de vérifier si les écarts potentiels sont réels.

Les chercheurs font état de 27 résultats structurels et de cinq résultats comportementaux dans les SDK. Les tests de validation de principe générés ont reproduit tous les résultats structurels ; l’examen du contexte complet de l’implémentation a confirmé deux résultats comportementaux en Python et trois en TypeScript. L’équipe indique avoir signalé ces problèmes en privé aux responsables de la maintenance des SDK.

L’article décrit également des tests menés sur 32 serveurs MCP publics autorisés. Les chercheurs ont constaté que deux lacunes communes concernant la validation du format des URI pouvaient affecter des services en aval : les 32 points de terminaison ayant achevé la négociation initiale ont accepté les deux champs de métadonnées mal formés.

Les auteurs avancent que les vérifications au niveau des SDK sont importantes, car les applications conçues à partir d’un SDK peuvent hériter de contraintes que la bibliothèque n’applique pas. MCPGuard est conçu pour compléter les tests de conformité axés sur les points de terminaison en vérifiant la manière dont les exigences de la spécification sont représentées et appliquées au sein des SDK.

Sources: arXiv cs.AI.