écrits/tutorial/2026/06
Tutorial13 juin 2026·24 min

Chrome DevTools MCP : laissez votre agent IA déboguer des applis web en direct

Connectez votre agent de code IA à un vrai navigateur Chrome avec Chrome DevTools MCP. Apprenez à configurer le serveur, inspecter le DOM, tracer les performances, lire les requêtes réseau et les erreurs de console, et exécuter des boucles de débogage automatisées dans Claude, Cursor ou Gemini CLI.

Les agents de code IA excellent à écrire du code, mais ils ont toujours été aveugles à une chose : ce que le code fait réellement dans un vrai navigateur. Quand votre agent corrige un bug de mise en page ou traque une page lente, il devine — il ne peut voir ni le DOM rendu, ni la cascade réseau, ni les erreurs de console.

Chrome DevTools MCP ferme cette boucle. C'est un serveur officiel Model Context Protocol de l'équipe Chrome qui donne à votre agent IA un contrôle programmatique direct sur une vraie instance Chrome : naviguer entre les pages, cliquer sur des éléments, enregistrer des traces de performance, inspecter les requêtes réseau, lire les messages de console et prendre des captures d'écran — le tout depuis Claude, Cursor, Gemini CLI ou tout client compatible MCP.

Dans ce tutoriel, vous allez configurer Chrome DevTools MCP, le connecter à votre agent et exécuter de vrais flux de débogage : diagnostiquer une page lente avec une trace de performance, reproduire un appel réseau défaillant et corriger une erreur de console de bout en bout.

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Node.js (version LTS actuelle) et npm installés
  • Un navigateur Chrome stable récent (ou plus récent)
  • Un client IA compatible MCP : Claude Code, Cursor, VS Code Copilot ou Gemini CLI
  • Une connaissance de base des fichiers de configuration JSON et des concepts des DevTools (réseau, console, performance)

Aucune installation globale n'est requise — le serveur s'exécute via npx.

Ce que vous allez apprendre

À la fin de ce guide, vous saurez :

  • Installer et configurer Chrome DevTools MCP dans votre client IA
  • Comprendre l'ensemble des outils : navigation, automatisation des saisies, performance, réseau et débogage
  • Lancer un audit de performance guidé et lire les analyses que votre agent fait remonter
  • Reproduire et corriger des erreurs réseau et de console dans une boucle automatisée
  • Connecter le serveur à une instance Chrome déjà en cours d'exécution pour déboguer votre propre session de développement

Comment ça marche

Chrome DevTools MCP expose le Chrome DevTools Protocol (CDP) sous forme d'outils MCP. En coulisses, il utilise Puppeteer pour piloter une instance Chrome, puis traduit les appels d'outils de l'agent en commandes CDP.

Le flux est simple :

  1. Votre agent IA décide qu'il a besoin de voir quelque chose dans le navigateur.
  2. Il appelle un outil MCP comme navigate_page ou performance_start_trace.
  3. Le serveur exécute l'action dans Chrome et renvoie des résultats structurés — un instantané du DOM, un résumé de trace, une liste de requêtes réseau.
  4. L'agent lit ces résultats et décide de l'étape suivante.

Parce que l'agent travaille sur une page en direct, il peut vérifier ses propres corrections au lieu de deviner.

Étape 1 : ajouter le serveur MCP à votre client

Le serveur est publié sous le nom chrome-devtools-mcp sur npm. Vous ne l'installez jamais globalement — le client le lance à la demande avec npx.

Claude Code

Ajoutez-le avec une seule commande :

claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest

Ou modifiez manuellement votre configuration MCP (~/.claude.json ou le .mcp.json du projet) :

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp@latest"]
    }
  }
}

Cursor / VS Code / Gemini CLI

Tous les clients MCP utilisent la même structure. Placez ceci dans le fichier de configuration MCP du client (pour Cursor c'est ~/.cursor/mcp.json, pour Gemini CLI c'est ~/.gemini/settings.json) :

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp@latest"]
    }
  }
}

Le premier lancement télécharge le paquet et peut démarrer une nouvelle instance Chrome, donc le premier appel d'outil peut prendre quelques secondes. Les appels suivants sont rapides car la session du navigateur reste ouverte.

Vérifier la connexion

Redémarrez votre client, puis demandez à l'agent une instruction simple :

Ouvre une nouvelle page, navigue vers https://example.com et dis-moi le titre de la page.

Si le serveur est correctement câblé, l'agent appellera new_page, puis navigate_page, puis vous lira le titre. Une fenêtre Chrome apparaîtra également.

Étape 2 : comprendre l'ensemble des outils

Chrome DevTools MCP expose un large ensemble d'outils (environ 58). Vous les appelez rarement à la main — c'est l'agent qui choisit — mais connaître les catégories vous aide à écrire de meilleures instructions.

CatégorieOutils représentatifsRôle
Navigationnew_page, navigate_page, list_pages, select_page, close_page, wait_forOuvrir, basculer et gérer les onglets
Automatisation des saisiesclick, fill, fill_form, hover, type_text, press_key, upload_file, handle_dialogPiloter la page comme un utilisateur
Performanceperformance_start_trace, performance_stop_trace, performance_analyze_insightEnregistrer et analyser des traces de performance
Réseaulist_network_requests, get_network_requestInspecter chaque requête émise par la page
Débogagetake_snapshot, take_screenshot, evaluate_script, list_console_messages, lighthouse_auditLire le DOM, exécuter du JS, lire la console, auditer la qualité
Émulationemulate, resize_pageLimiter le CPU/réseau, redimensionner la fenêtre
Mémoiretake_heapsnapshot et outils d'inspection du tasTraquer les fuites mémoire

Deux outils méritent une attention particulière :

  • take_snapshot renvoie une représentation textuelle structurée de l'arbre d'accessibilité de la page. C'est ce que l'agent lit pour comprendre la mise en page et trouver les éléments — bien moins coûteux qu'une capture d'écran et fournit des références d'éléments stables pour cliquer.
  • evaluate_script exécute du JavaScript arbitraire dans le contexte de la page et renvoie le résultat. C'est la porte de sortie de l'agent pour lire tout état que les outils dédiés ne couvrent pas.

Étape 3 : lancer un audit de performance

C'est là que Chrome DevTools MCP brille. Au lieu d'ouvrir les DevTools, d'enregistrer une trace et de scruter le graphique en flamme, votre agent le fait et explique le résultat.

Essayez cette instruction sur une page à profiler :

Navigue vers http://localhost:3000, enregistre une trace de performance pendant
le rechargement de la page, puis indique-moi le Largest Contentful Paint et les
principales pistes pour accélérer la page.

L'agent exécute généralement cette séquence :

1. navigate_page  → http://localhost:3000
2. performance_start_trace (reload: true)
3. performance_stop_trace
4. performance_analyze_insight  → "LCPBreakdown"

L'outil performance_analyze_insight est la clé. Il ne déverse pas les données brutes de trace — il renvoie des analyses nommées (décomposition du LCP, requêtes bloquant le rendu, décalages de mise en page, longues tâches du thread principal) avec des chiffres concrets. Votre agent les lit et produit une liste priorisée, par exemple :

  • Le LCP est de 4,2 s, dominé par une feuille de style bloquant le rendu
  • Une longue tâche de 600 ms bloque le thread principal pendant l'hydratation
  • Trois images manquent de dimensions explicites, provoquant un décalage de mise en page

Vous pouvez alors enchaîner : « Corrige la feuille de style bloquant le rendu et relance la trace pour confirmer l'amélioration du LCP. » L'agent modifie votre code, recharge, retrace et vérifie — une boucle complète et fermée.

Combinez le traçage de performance avec emulate pour simuler un appareil lent. Demandez à l'agent de « limiter le CPU 4x et le réseau à Slow 4G avant de tracer » pour détecter les problèmes que votre ordinateur rapide masque.

Étape 4 : déboguer les requêtes réseau

Quand un appel d'API échoue ou renvoie les mauvaises données, votre agent peut inspecter les vraies requêtes au lieu de deviner.

Navigue vers http://localhost:3000/dashboard, puis liste toutes les requêtes
réseau échouées et montre-moi le corps de réponse de celles renvoyant un statut 4xx ou 5xx.

L'agent appelle list_network_requests pour obtenir la liste complète, filtre les échecs, puis appelle get_network_request sur chaque requête suspecte pour lire les en-têtes, le statut et le corps de réponse. Une découverte typique :

GET /api/user/profile → 401 Unauthorized
En-tête manquant dans la requête : Authorization
Réponse : { "error": "Missing bearer token" }

À partir de là, l'agent peut remonter le bug jusqu'à votre code — peut-être le jeton d'authentification n'est-il pas attaché côté client — le corriger, recharger et confirmer que la requête renvoie désormais 200.

Étape 5 : corriger une erreur de console de bout en bout

Les erreurs de console sont le signal le plus courant auquel un agent était auparavant aveugle. Désormais il les lit directement.

Ouvre http://localhost:3000, liste les erreurs de console, trouve la cause
racine dans le code, corrige-la, puis recharge et confirme que la console est propre.

La boucle exécutée par l'agent :

1. navigate_page → localhost:3000
2. list_console_messages → trouve : "TypeError: Cannot read properties of
   undefined (reading 'map') at ProductList.tsx:24"
3. (lit ProductList.tsx, constate que products peut être undefined avant la
   résolution du fetch)
4. (modifie le fichier pour protéger avec `products?.map(...)`)
5. navigate_page (rechargement)
6. list_console_messages → propre

Ce cycle observer → corriger → vérifier est tout l'intérêt de donner des yeux à un agent dans le navigateur. L'agent ne déclare jamais victoire sur la base d'une supposition ; il vérifie sur la page en direct.

Étape 6 : se connecter à votre session Chrome existante

Par défaut, le serveur lance sa propre instance Chrome isolée. Parfois, vous voulez que l'agent débogue la session exacte où vous êtes déjà connecté — votre environnement de développement avec cookies, stockage local et authentification en place.

D'abord, lancez Chrome avec le débogage à distance activé :

# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --remote-debugging-port=9222
 
# Linux
google-chrome --remote-debugging-port=9222

Puis pointez le serveur vers lui avec l'option --browser-url :

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "-y",
        "chrome-devtools-mcp@latest",
        "--browser-url",
        "http://127.0.0.1:9222"
      ]
    }
  }
}

L'agent opère maintenant sur votre vrai navigateur authentifié. Utilisez ceci avec prudence — l'agent peut interagir avec tout ce qui se trouve dans ces onglets.

Options de ligne de commande utiles

Passez celles-ci dans le tableau args pour ajuster le comportement du serveur :

OptionRôle
--headlessExécuter Chrome sans fenêtre visible (idéal pour la CI)
--isolatedUtiliser un profil temporaire neuf nettoyé à la sortie
--channel canaryUtiliser Chrome Canary, Dev, Beta ou Stable
--browser-url <url>Se connecter à une instance Chrome déjà en cours
--executable-path <chemin>Pointer vers un binaire Chrome personnalisé
--viewport 1280x720Définir une taille de fenêtre fixe
--slimN'exposer que les trois outils les plus basiques (coût en jetons réduit)
--no-usage-statisticsSe désinscrire de la télémétrie anonyme

Une configuration pratique adaptée à la CI :

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "-y",
        "chrome-devtools-mcp@latest",
        "--headless",
        "--isolated"
      ]
    }
  }
}

Tester votre configuration

Vérifiez tout le pipeline avec une seule instruction de bout en bout :

Ouvre https://web.dev, prends un instantané de la page, lance un audit Lighthouse
et résume les scores de performance et d'accessibilité.

Une configuration correcte produit : une fenêtre Chrome qui s'ouvre, un instantané structuré du DOM, un appel lighthouse_audit et un résumé lisible avec des scores numériques. Si rien ne se passe, passez au dépannage.

Dépannage

L'agent dit qu'il n'a pas d'outils de navigateur. Confirmez que le serveur MCP est listé et connecté. Dans Claude Code, exécutez claude mcp list ; l'entrée doit apparaître comme connectée. Redémarrez le client après avoir modifié la configuration.

npx échoue ou se bloque au premier lancement. Exécutez npx -y chrome-devtools-mcp@latest --help directement dans votre terminal pour faire remonter la vraie erreur. Souvent il s'agit d'une version de Node trop ancienne — utilisez une version LTS actuelle.

Chrome ne se lance pas. Assurez-vous que Chrome est installé et dans une version stable récente. Si vous avez plusieurs versions, épinglez-en une avec --channel ou --executable-path.

--browser-url : connexion refusée. Chrome doit être démarré avec --remote-debugging-port=9222 avant que l'agent se connecte, et vous devez utiliser le même port dans l'option.

Consommation de jetons élevée. Les instantanés et les traces sont volumineux. Utilisez --slim pour l'automatisation simple, préférez take_snapshot à take_screenshot quand vous n'avez besoin que de la structure, et demandez à l'agent d'inspecter des requêtes spécifiques plutôt que de déverser la liste réseau complète.

Étapes suivantes

Conclusion

Chrome DevTools MCP transforme votre agent IA d'un générateur de code en un générateur de code qui peut voir son propre travail. En exposant la navigation, le traçage de performance, l'inspection réseau et la console sous forme d'outils MCP, il permet à l'agent de fermer la boucle observer → corriger → vérifier sans que vous n'ouvriez jamais les DevTools manuellement.

Commencez petit : câblez-le dans votre client, demandez-lui de profiler une seule page lente et regardez-le faire remonter des analyses concrètes. Une fois que votre agent peut lire le navigateur, le débogage cesse d'être un jeu de devinettes.