Un serveur MCP expose des outils qu'un LLM peut appeler de façon autonome. La question de sécurité n'est donc pas "le LLM est-il fiable ?" mais "qu'est-ce qu'un attaquant peut faire s'il arrive à orienter les décisions du LLM ?" — car c'est exactement le scénario d'une injection de prompt réussie.

Le confused deputy, version MCP

Le problème classique : un serveur MCP a plus de droits que l'utilisateur final ne devrait en avoir (accès disque complet, clé API scope large), et le LLM devient le "député confus" qui utilise ces droits sur instruction d'un contenu malveillant plutôt que de l'utilisateur légitime. La défense de fond est la même que pour toute injection de prompt : traiter le contenu récupéré comme non fiable, jamais comme une instruction.

Contrôles concrets

RisqueContrôle
Outil trop permissif (accès disque large, shell)Scoper chaque outil à un périmètre minimal, jamais un accès générique
Description d'outil trompeuse ("tool poisoning")Auditer les descriptions à l'installation, ne pas faire confiance à un serveur tiers non vérifié
Mise à jour silencieuse d'un serveur ("rug pull")Épingler une version, revalider avant toute mise à jour
Ressources exposées trop largesDistinguer tools (actions) et resources (lecture) — voir MCP : tools vs resources
Exécution de code non sandboxéeIsoler l'exécution (conteneur, utilisateur système dédié, sans accès réseau superflu)
Aucun de ces contrôles n'est spécifique à MCP — ce sont les mêmes principes qu'on applique à toute API exposée à un tiers, appliqués ici à un tiers qui décide de façon autonome.

Le cas du serveur minimal

Serveur MCP minimal en PHP montre l'implémentation du protocole sans se soucier de la sécurité — volontairement, pour rester lisible. En prod, chaque outil de ce serveur devrait passer par une couche d'autorisation explicite avant exécution, exactement comme un endpoint HTTP classique protégé par un firewall applicatif.

Le point souvent oublié : l'audit humain reste nécessaire

Aucun contrôle technique ne remplace une revue humaine avant de connecter un serveur MCP tiers à un agent qui a accès à des données sensibles. La confiance dans un serveur MCP externe devrait suivre les mêmes réflexes qu'une dépendance logicielle tierce : code source visible, mainteneur identifiable, changelog suivi.

FAQ

Un serveur MCP local (stdio) est-il plus sûr qu'un serveur distant ?

Le transport n'est pas le facteur principal de risque — le périmètre d'accès de l'outil l'est. Un serveur local avec un accès disque complet est plus dangereux qu'un serveur distant strictement scopé.

Faut-il sandboxer systématiquement l'exécution des outils MCP ?

Dès qu'un outil exécute du code arbitraire ou touche au système de fichiers au-delà d'un répertoire précis, oui — un conteneur ou un utilisateur système dédié limite la casse en cas de compromission.

Comment détecter le tool poisoning avant qu'il ne cause un dégât ?

En auditant les descriptions d'outils à l'installation (elles font partie du contexte envoyé au LLM) et en surveillant les changements de version d'un serveur tiers, pas seulement son comportement au runtime.