Chrome DevTools MCP place le panneau DevTools que vous connaissez déjà devant un agent IA. Là où la plupart des serveurs de navigateur servent à cliquer et à taper, celui-ci sert à découvrir pourquoi une page est lente, ce qu'elle journalise, ce qu'elle requête et ce qu'elle conserve en mémoire. Il est publié par l'organisation ChromeDevTools sur GitHub, compte 55 670 étoiles et est sous licence Apache-2.0.
Nous avons installé la version 1.13.0, publiée le 11 novembre 2026, et fait deux choses le 14 novembre 2026 : lister ses outils avec différentes options via MCP Inspector, et le piloter avec un petit client MCP pour enregistrer une trace de performance et exécuter Lighthouse sur hostedmcp.org, notre propre site. Les chiffres ci-dessous proviennent de ces exécutions.
Installation
Vous avez besoin de Node.js 20.19 ou d'une version plus récente, ainsi que de Chrome. Le navigateur démarre au premier appel d'outil qui en a besoin, et non au démarrage du serveur.
Claude Code :
claude mcp add chrome-devtools -- npx chrome-devtools-mcp@latest --isolated --no-usage-statistics
Cursor, Claude Desktop, Windsurf et les autres clients configurés via JSON :
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["chrome-devtools-mcp@latest", "--isolated", "--no-usage-statistics"]
}
}
}
Codex :
codex mcp add chrome-devtools -- npx chrome-devtools-mcp@latest --isolated --no-usage-statistics
Ces deux options sont notre recommandation, pas des valeurs par défaut. --isolated attribue un profil temporaire à chaque session ; sans elle, le serveur conserve un profil persistant sous ~/.cache/chrome-devtools-mcp/chrome-profile qui n'est pas réinitialisé entre les exécutions. --no-usage-statistics désactive les statistiques d'utilisation que le serveur envoie à Google par défaut. Notre générateur de configuration produit la même entrée pour plusieurs clients.
Le premier prompt suggéré dans le README constitue un bon test : « Check the performance of https://developers.chrome.com ».
Les outils, en chiffres
tools/list sur la version 1.13.0 a renvoyé 33 outils sans aucune option, et les définitions d'outils représentaient 31 498 octets. Avec --slim, il n'en a renvoyé que trois : navigate, evaluate et screenshot, pour 1 042 octets.
| Groupe | Outils |
|---|---|
| Pages et navigation | list_pages, new_page, select_page, close_page, navigate_page, wait_for, resize_page |
| Saisie | click, hover, drag, fill, fill_form, type_text, press_key, upload_file, handle_dialog |
| Performances | performance_start_trace, performance_stop_trace, performance_analyze_insight, lighthouse_audit |
| Réseau | list_network_requests, get_network_request |
| Débogage | list_console_messages, get_console_message, evaluate_script, take_snapshot, take_screenshot, get_css_styles, set_logpoints, screencast_start, screencast_stop |
| Mémoire | take_heapsnapshot |
| Émulation | emulate |
Chaque groupe peut être désactivé par un flag du type --categoryEmulation=false. D'autres sont désactivés tant que vous ne les activez pas : le mocking réseau, les extensions, l'automatisation PWA, les authentificateurs WebAuthn virtuels et les outils qu'une page expose elle-même via WebMCP. N'activez que ce dont une tâche a besoin ; 31 Ko de définitions, c'est peu à côté de certains serveurs, mais c'est envoyé à chaque requête.
Ce que renvoie une trace
Nous avons démarré le serveur en mode headless, ouvert https://hostedmcp.org/ avec new_page, puis appelé performance_start_trace avec reload et autoStop activés, et enfin lighthouse_audit.
L'appel de trace a pris environ 6 secondes et renvoyé 9 436 octets de texte. Il indiquait :
| Métrique | Valeur |
|---|---|
| LCP | 169 ms |
| dont time to first byte | 0,8 ms |
| dont render delay | 169 ms |
| CLS | 0,00 |
Il listait ensuite les insights détectés, chacun avec une explication et, le cas échéant, une économie estimée : décomposition du LCP, requêtes bloquant le rendu (25 ms de FCP et de LCP), arbre de dépendances réseau, livraison des images, tiers, durées de cache et JavaScript hérité. L'agent peut appeler performance_analyze_insight sur chacun d'eux pour obtenir le détail. La réponse se termine par une description de son propre format d'arbre d'appels, afin que le modèle puisse lire les données de flame chart qui suivent.
lighthouse_audit a pris environ 7 secondes et renvoyé 6 687 octets : accessibilité 94, bonnes pratiques 100, SEO 100, et une quatrième catégorie, la navigation agentique, à 67. Quatre audits ont échoué. Le premier était le contraste des couleurs : douze éléments, dont le libellé de recherche de notre en-tête, à un ratio de 4,33 là où 4,5 est requis. L'outil a donc fait son travail ; nous avons un correctif à apporter.
Deux remarques sur ces chiffres. Le time to first byte de 0,8 ms signifie que la page provenait d'un cache edge chaud ; une requête à froid serait plus lente. Et comme nous avons passé --no-performance-crux, la trace n'a rapporté aucune donnée terrain provenant d'utilisateurs réels ; par défaut, le serveur recherche l'URL de la page dans le jeu de données CrUX de Google.
Le piège du pageId
Notre premier lancement a mesuré about:blank. Dans la version 1.13.0, les outils de page prennent un pageId, et une nouvelle session démarre avec une page blanche comme numéro 1. Notre appel new_page a ouvert le site comme page 2 et l'a marquée comme sélectionnée, mais nous avons passé 1. La trace a consciencieusement rapporté un CLS de 0 pour une page vide. Les agents appellent généralement list_pages d'abord et évitent cette erreur ; si une trace rapporte about:blank, c'est la raison.
Utiliser votre propre Chrome
Par défaut, le serveur démarre son propre Chrome. Il peut aussi se connecter à une instance déjà en cours d'exécution :
--autoConnectse connecte à Chrome 144 ou une version ultérieure après que vous avez activé le débogage à distance surchrome://inspect/#remote-debugging.--browserUrl http://127.0.0.1:9222se connecte à un Chrome démarré avec--remote-debugging-port=9222.
Se connecter à votre navigateur du quotidien donne à l'agent vos identifiants, vos cookies et vos onglets ouverts. C'est l'intérêt même lorsque vous voulez qu'il débogue une page derrière une authentification, et le risque à tout autre moment. Utilisez pour cela un profil Chrome distinct.
Confidentialité et sécurité
Le serveur affiche un avertissement au démarrage : il « expose le contenu de l'instance de navigateur aux clients MCP, leur permettant d'inspecter, de déboguer et de modifier toutes les données du navigateur ou de DevTools ». Prenez-le au pied de la lettre. Trois réglages par défaut méritent d'être modifiés :
- Statistiques d'utilisation : elles sont envoyées à Google sauf si vous passez
--no-usage-statistics. Elles sont également désactivées lorsque la variable d'environnementCIest définie. - Requêtes CrUX : les outils de performance peuvent envoyer les URL que vous tracez à l'API CrUX de Google. Utilisez
--no-performance-cruxpour les URL internes ou de staging. - Profil : le profil par défaut est persistant. Utilisez
--isolatedsauf si vous avez besoin de conserver l'état entre les sessions.
evaluate_script exécute du JavaScript dans la page, et les pages peuvent contenir du texte destiné au modèle. Validez vous-même la navigation vers des sites inconnus. Nous avons également remarqué que la version 1.13.0 limite la lecture et l'écriture de fichiers, comme les traces et captures d'écran enregistrées, au dossier temporaire du système lorsque le client ne partage pas ses racines d'espace de travail ; --allow-unrestricted-paths lève cette restriction. Laissez-le en place. Pour en savoir plus, consultez Sécurité MCP.
Chrome DevTools MCP ou Playwright MCP
| Chrome DevTools MCP | Playwright MCP | |
|---|---|---|
| Version au 14 novembre 2026 | 1.13.0 | 0.0.85 |
| Moteur | Puppeteer | Playwright |
| Navigateurs | Chrome officiellement | Chromium, Chrome, Edge, Firefox, WebKit |
| Outils par défaut | 33 | 25 |
| Atouts spécifiques | Traces, Lighthouse, snapshots de tas, styles CSS, logpoints | Snapshots d'accessibilité, multi-navigateurs, agents de test |
| Télémétrie | Statistiques d'utilisation activées par défaut | Aucune mentionnée |
Aucun des deux projets n'a publié de comparatif : ce partage est donc le nôtre. Playwright MCP lorsque le travail de l'agent consiste à utiliser le site, Chrome DevTools MCP lorsqu'il s'agit de comprendre pourquoi le site se comporte comme il le fait. Les deux fonctionnent côte à côte ; notre guide Playwright MCP couvre l'autre moitié.
Quand cela ne fonctionne pas
| Ce que vous voyez | Cause | Correction |
|---|---|---|
pageId: expected number |
Les outils de page nécessitent un numéro de page dans la version 1.13.0 | Appelez d'abord list_pages ou new_page |
Une trace de about:blank |
Mauvaise page sélectionnée | Passez le pageId de la page que vous avez ouverte |
| Lighthouse refuse la page | Il ne peut pas auditer about:blank |
Naviguez d'abord, ou utilisez le mode snapshot |
| Chrome ne démarre pas | Chrome absent, ou pas d'affichage pour un navigateur avec interface | Installez Chrome ; ajoutez --headless sur les serveurs |
--autoConnect ne trouve rien |
Débogage à distance non activé, ou Chrome antérieur à la version 144 | Activez-le sur chrome://inspect/#remote-debugging |
| Trace enregistrée pas où vous l'attendez | Le client n'a pas partagé les racines de l'espace de travail | Les fichiers vont dans le dossier temporaire ; vérifiez là |
| Identifiants de connexion d'hier toujours présents | Profil par défaut persistant | Utilisez --isolated |
Les serveurs Chrome DevTools de notre catalogue, avec leurs scores de vérification, sont listés en haut de cette page.