Utilisation de tokens de Playwright MCP : conseils de configuration et sécurité

Playwright MCP renvoie à votre agent un instantané complet d’accessibilité après chaque action, et c’est là que partent les tokens. Découvrez les options qui réduisent la consommation, une configuration allégée à copier, l’alternative CLI et un verdict honnête sur la sécurité.

Utilisation de tokens de Playwright MCP : conseils de configuration et sécurité
Cristian Da Conceicao
Fondateur de Picasso IA

Playwright MCP donne à un agent d’IA de vraies mains dans un navigateur, et il vous facture chaque coup d’œil sur la page. Une tâche type a été signalée à environ 114 000 tokens via le serveur MCP, avant même que l’agent ait fini de cliquer. Ce même serveur peut aussi tourner dans un navigateur qui contient vos sessions connectées. Les deux questions tapées dans la barre de recherche sont donc légitimes : comment garder sous contrôle l’utilisation de tokens de Playwright MCP, et est-il sûr à utiliser ? Vous trouverez ci-dessous les options exactes, une configuration à copier, une comparaison avec la CLI de Playwright et un verdict franc sur les risques.

💡 En bref : désactivez les captures d’écran, laissez les capacités facultatives désactivées, utilisez un profil isolé et ne dirigez jamais l’agent vers des comptes que vous ne pouvez pas vous permettre de perdre. Pour les longues sessions de code, la CLI de Playwright est la voie la moins coûteuse.

Pourquoi Playwright MCP consomme autant de tokens

Le serveur MCP de Playwright, développé par Microsoft, ne s’appuie pas sur des captures d’écran par défaut. Il renvoie un instantané de l’accessibilité : un arbre de texte qui recense chaque titre, lien, bouton et champ de saisie de la page, chacun associé à un identifiant de référence que le modèle utilise pour cliquer ou saisir. C’est une manière plus intelligente de piloter un navigateur que de deviner à partir de pixels, car le modèle sait qu’un bouton est un bouton sans passer par une analyse visuelle. Mais sur n’importe quelle page chargée, cela représente un long bloc de texte, et vous le payez à chaque fois qu’il arrive.

Les instantanés arrivent après chaque action

Chaque outil d’action, comme browser_click ou browser_type, renvoie l’état de la page après son exécution. L’instantané s’ajoute encore et encore à la fenêtre de contexte. Une tâche de dix étapes sur un site riche en contenu empile dix arbres dans la fenêtre, et aucun ne disparaît tant que vous n’avez pas vidé la session.

La comparaison publiée par l’équipe de Playwright, telle que relayée dans plusieurs articles, place une tâche type à environ 114 000 tokens avec MCP, contre environ 27 000 tokens avec la CLI, soit un rapport d’environ 4 pour 1. Considérez ces chiffres comme des ordres de grandeur, car le poids de la page change tout.

Une carafe en verre transparent débordant d’eau sur une table en chêne sombre, à côté d’un ordinateur portable flou

Un signalement public de bug concernant le serveur MCP associé de Chrome DevTools montre le même problème : le contexte passe d’environ 31 000 à 242 000 tokens après un seul clic sur une page lourde. Serveur différent, même coupable. Le coût est porté par l’arbre de la page, pas par le clic.

Les définitions d’outils se chargent avant même que vous tapiez

Chaque serveur MCP fournit des schémas d’outils, que votre hôte charge dans le contexte au démarrage de la session. Un praticien a mesuré 28,1 k tokens, soit 14,1 % de la fenêtre, pour les définitions d’outils de plusieurs serveurs dans Claude Code. Playwright MCP propose une longue liste d’outils, et chaque capacité facultative en ajoute. Les hôtes imposent aussi leurs limites : Cursor limite à 40 le nombre d’outils, tous serveurs confondus.

💡 Astuce : si vous ne naviguez pas dans cette session, désactivez le serveur Playwright. Un serveur inactif coûte quand même des tokens de schéma.

Un bureau vu de dessus avec un long rouleau de texte imprimé, à côté d’une seule photographie de site web brillante, des lunettes et un crayon posés dessus

Une configuration qui limite le contexte

La configuration par défaut

Voici le bloc standard pour tout hôte qui lit une section mcpServers :

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest"]
    }
  }
}

Elle fonctionne, mais les valeurs par défaut privilégient le confort : un navigateur visible, un profil persistant, des captures d’écran autorisées, les instantanés activés et toutes les origines accessibles. La plupart de ces réglages peuvent être resserrés en une ligne chacun.

Ajouter le serveur à Claude Code

claude mcp add playwright -- npx @playwright/mcp@latest --headless --isolated

Tout ce qui suit le double tiret correspond à la commande du serveur. Exécutez /mcp dans Claude Code pour vérifier la connexion. En cas d’échec au démarrage, vérifiez que Node.js est installé et que npx est dans votre PATH.

Une configuration de départ plus légère

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest",
        "--headless",
        "--isolated",
        "--image-responses=omit",
        "--allowed-origins=https://example.com;https://staging.example.com"
      ]
    }
  }
}

Voici ce que fait chaque option :

  • --headless lance le navigateur sans fenêtre. Par défaut, il est visible.
  • --isolated garde le profil en mémoire, si bien que les cookies disparaissent à la fin de la session.
  • --image-responses=omit supprime les captures d’écran des réponses des outils.
  • --allowed-origins accepte des origines séparées par des points-virgules. Remplacez-les par vos propres domaines.

Vue par-dessus l’épaule d’un développeur tapant sur un ordinateur portable en aluminium fin, dans un espace de coworking lumineux aux briques apparentes

Les options qui réduisent la consommation de tokens

Toutes les options ne font pas économiser de tokens, et certaines échangent des tokens contre de la sécurité. Ce tableau montre les deux effets côte à côte.

OptionCe qu’elle faitEffet sur les tokensEffet sur la sécurité
--image-responses omitSupprime les captures d’écran des réponses des outilsRetire les charges d’imagesMoins de données de page quittent le navigateur
--snapshot-mode noneDésactive l’instantané automatique de la page (valeurs du README : full, none)Plus forte réduction, mais l’agent travaille à moitié à l’aveugleNeutre
--capsActive les ensembles d’outils facultatifs : vision, pdf, devtools, config, network, storage, testingMoins de schémas d’outils quand ils restent désactivésSurface d’attaque réduite
--storage-stateCharge les cookies et le localStorage dans un contexte isoléÉvite les étapes de connexion, donc moins d’actionsTransporte de vraies données de session, utilisez donc un compte de test
--blocked-originsBloque les requêtes vers les origines listéesPages plus légères et arbres plus petitsUn confort, pas un mur

Supprimez d’abord les images

--image-responses accepte allow, omit ou only, et la valeur par défaut est allow. Pour les tâches riches en texte, comme lire un tableau de tarifs ou remplir un formulaire, omit fait économiser sans effort. Cela réduit la facture sans la résoudre pour autant. L’instantané de l’accessibilité reste le poste le plus coûteux.

--snapshot-mode none est l’option la plus radicale. Ne l’utilisez que lorsque l’agent pilote la page par des scripts, car un modèle qui ne voit pas la page devinera.

Limitez les capacités

L’option --caps active les ensembles d’outils facultatifs : vision pour les actions de souris par coordonnées, pdf, devtools, config, network, storage et testing. Gardez-les désactivés tant qu’une tâche n’en a pas besoin. L’ensemble testing active les outils de vérification, à n’activer que pour les sessions où vous écrivez des tests.

3 erreurs courantes

  1. Les sessions marathon. Les instantanés s’accumulent et ne partent jamais. Ouvrez une nouvelle session pour chaque tâche.
  2. Des captures d’écran pour des tâches textuelles. Si la réponse se trouve sur la page sous forme de texte, l’image ne sert à rien.
  3. Cliquer ce qu’on pourrait automatiser par un script. Demandez à l’agent d’écrire une fois un test Playwright, puis lancez-le avec npx playwright test. L’exécution affiche quelques lignes au lieu de dizaines d’arbres.

Une main tournant vers un réglage bas un bouton rotatif en acier brossé sur un ampli vintage

Playwright MCP ou Playwright CLI

Le README du projet est clair sur ce compromis : « Les appels CLI sont plus efficaces en tokens : ils évitent de charger de gros schémas d’outils et des arbres d’accessibilité verbeux dans le contexte du modèle. » Il réserve MCP aux workflows qui nécessitent un « état persistant, une introspection riche et un raisonnement itératif ».

Les chiffres publiés

MesurePlaywright MCPPlaywright CLI
Tâche type (publiée)Environ 114 000 tokensEnviron 27 000 tokens
Gestion de l’instantanéRenvoyé en ligne dans chaque réponseEnregistré sur le disque sous forme de fichier YAML
Par interaction (retours de praticiens)Charges d’instantanés volumineusesEnviron 1 000 à 2 000 tokens après réglage
Schémas d’outilsChargés dans le contexte au démarrage de la sessionAucun, il s’exécute sous forme de commandes shell
Usage idéalÉtat persistant et raisonnement itératifLongues sessions de code et haut débit

Ces chiffres proviennent de comptes rendus du benchmark de l’équipe de Playwright et de praticiens, et non d’un test que j’aurais réalisé. Mesurez donc votre propre tâche avant de bâtir un workflow autour d’eux.

Quand MCP reste le meilleur choix

  • Inspections courtes à forte valeur. Une page, une question, une réponse.
  • Déboguer un parcours instable. L’agent doit choisir chaque étape suivante à partir de ce qu’il voit.
  • Hôtes sans accès shell. Quand un serveur MCP est la seule façon de donner au modèle des outils de navigation.

Une règle simple fonctionne bien : testez avec MCP, puis figez le parcours dans un script et lancez ce script depuis la CLI.

Deux établis côte à côte dans un atelier ensoleillé, l’un encombré d’outils et l’autre ne portant qu’un seul tournevis

Playwright MCP est-il vraiment sûr ?

La réponse honnête comporte deux volets. Il est suffisamment sûr pour le développement local sur des sites de confiance, avec un profil isolé. Il n’est pas sûr comme agent non supervisé dans le navigateur que vous utilisez pour vos opérations bancaires. Le README le dit clairement : « Playwright MCP n’est pas une frontière de sécurité. »

Un lourd cadenas en laiton fermé par une chaîne sur un portail en bois patiné, avec des gouttes de pluie sur le métal

L’injection de prompt depuis les pages web

Tout ce que l’agent lit devient une entrée du modèle. Une page peut cacher du texte en blanc sur fond blanc, dans un commentaire HTML ou dans un attribut alt d’image, pour demander à l’agent d’ignorer vos instructions et d’ouvrir une autre URL. L’arbre d’accessibilité aplatit tout cela en texte brut, juste à côté de votre propre prompt. Les modèles résistent à certaines de ces attaques et en manquent d’autres.

Ce qui aide :

  • Ne naviguez que sur des pages de confiance ou que vous contrôlez.
  • Gardez activée l’approbation outil par outil dans votre hôte pendant vos tests.
  • N’associez pas le navigateur à d’autres outils puissants, comme un shell, la messagerie ou l’écriture de fichiers, dans la même session.

Les profils connectés augmentent les enjeux

Par défaut, le navigateur conserve un profil persistant sur le disque, et --user-data-dir définit son emplacement, afin que les cookies survivent d’une session à l’autre. L’option --extension va plus loin : elle se connecte à une instance d’Edge ou de Chrome que vous avez déjà ouverte. Un agent détourné dans ce mode agit en votre nom, sur chaque site où vous êtes connecté. Pour tout ce qui touche à une connexion, utilisez --isolated avec un compte jetable.

Pourquoi les filtres d’origine ne sont pas des murs

--allowed-origins et --blocked-origins acceptent des listes séparées par des points-virgules, et la valeur par défaut autorise tout. Ils réduisent le bruit et les requêtes parasites, mais ce ne sont pas une frontière de sécurité. Il en va de même pour --secrets, qui pointe vers un fichier dotenv afin de masquer les chaînes sensibles dans les réponses : pratique, mais sans garantie. Laissez --allow-unrestricted-file-access désactivé, car il autorise les URL file:// et l’accès en dehors de votre espace de travail.

RisqueCe qui peut se produireCorrectif
Injection de promptLe texte de la page dirige l’agentSites de confiance et approbations d’outils
Profil persistantLes cookies restent sur le disque et sont réutilisés--isolated
Mode extensionL’agent agit dans vos sessions réellesÉvitez-le pour les comptes sensibles
Accès aux fichiersLes fichiers locaux deviennent accessiblesGardez l’accès sans restriction désactivé
Port ouvertQuiconque sur le réseau atteint le serveurLiez-le à localhost et gardez --allowed-hosts à sa valeur par défaut

Liste de contrôle de durcissement pour un usage quotidien

D’abord un profil isolé

  • Commencez par --isolated pour que rien ne persiste.
  • Besoin d’une connexion ? Créez un compte de test, enregistrez son état et chargez-le avec --storage-state.
  • Ne mettez pas de mots de passe dans vos prompts. Utilisez --secrets avec un fichier dotenv pour que les valeurs soient masquées.
  • Épinglez une version exacte au lieu de @latest, afin qu’une nouvelle publication ne modifie pas le comportement à votre insu.

Un terrarium en verre scellé sur un rebord de fenêtre, abritant un petit jardin de mousse vivante avec des gouttelettes sur la paroi intérieure

Docker sans exposer de ports

Pour un navigateur jetable qui ne touche jamais à votre profil hôte, le README propose cette commande :

docker run -i --rm --init --pull=always mcr.microsoft.com/playwright/mcp

Pour un service HTTP de longue durée, l’exemple du README publie le port 8931 et lie --host 0.0.0.0 à l’intérieur du conteneur. Publiez-le uniquement sur la boucle locale, afin que les autres machines de votre réseau ne puissent pas l’atteindre :

docker run -d -i --rm --init --pull=always \
  --entrypoint node --name playwright -p 127.0.0.1:8931:8931 \
  mcr.microsoft.com/playwright/mcp \
  /app/cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0

L’option --no-sandbox désactive le propre bac à sable de Chromium, si bien que le conteneur devient votre frontière de sécurité. Ne montez pas de dossiers sensibles de l’hôte à l’intérieur.

Une rangée de conteneurs maritimes en acier patiné sur un port à l’heure dorée, dont une porte est légèrement entrouverte

💡 Verdict : faites travailler Playwright MCP comme un artisan chez vous, pas comme un membre de la famille. Donnez-lui une seule pièce (un profil isolé), une tâche courte et quelqu’un qui le surveille.

Comment utiliser Sonnet 5 sur PicassoIA

Un modèle de langage fait office de second regard peu coûteux pour une configuration MCP. Claude Sonnet 5 sur PicassoIA est référencé pour les tâches de code, ce qui convient bien à une relecture de configuration.

  1. Ouvrez la page de Claude Sonnet 5 sur PicassoIA.
  2. Collez votre configuration MCP en remplaçant les valeurs réelles par des placeholders, et décrivez la tâche en une phrase, par exemple « lire un tableau de tarifs une fois par semaine ».
  3. Demandez : « Quelles options puis-je retirer pour réduire les tokens, et quels risques subsistent ? »
  4. Demandez le même parcours sous forme de script de test Playwright, pour le lancer depuis la CLI au lieu de payer des instantanés à chaque étape.
  5. Vérifiez chaque option suggérée dans le README de Playwright MCP avant de l’ajouter. Les modèles inventent parfois des options.

Si la page du modèle propose un réglage de température, gardez-le bas pour les relectures de configuration, car vous voulez des réponses constantes plutôt que créatives.

D’autres modèles valent la peine d’être essayés pour la même tâche :

💡 Attention : ne collez jamais de fichiers .env, de tokens d’API ou de cookies dans une zone de discussion. Remplacez-les d’abord par des placeholders.

Le MCP ne sert pas qu’aux navigateurs, d’ailleurs. PicassoIA propose son propre connecteur pour Claude, qui expose la génération d’images, l’édition d’images et la génération de vidéos à travers quelques outils, ce qui limite le poids des schémas par rapport à un serveur qui expose une longue liste d’outils de navigation.

Créez ensuite vos propres images

Les agents de navigation lisent le web, mais vos articles, produits et publications ont toujours besoin d’images qui arrêtent le défilement. Picasso IA met des modèles de génération d’images photoréalistes à un clic, afin de passer d’une idée à un visuel abouti en quelques minutes.

Commencez avec PicassoIA Image pour un premier jet rapide, puis lancez le même prompt sur Seedream 5 Pro et comparez les résultats côte à côte.

Une formule de prompt qui fonctionne : sujet + décor + lumière + objectif. Par exemple :

Un développeur examinant l’écran de son ordinateur portable à un bureau près d’une fenêtre ensoleillée, lumière du matin venant de la gauche, objectif 85 mm, faible profondeur de champ, grain de film naturel.

Modifiez un seul détail à la fois, comme la lumière ou l’objectif, et observez comment le résultat change. Dix minutes de petites expériences affineront vos prompts mieux que n’importe quelle liste de contrôle. Ouvrez Picasso IA, collez le prompt ci-dessus et créez votre première image dès aujourd’hui.

Un designer debout devant un bureau réglable, examinant un grand tirage d’un paysage de montagne à côté d’une tablette, sous une lumière chaude d’après-midi

Partager cet article

Choisissez votre langue