Aller au contenu principal

Configuration

Cette page documente toutes les options de configuration pour le serveur WebdriverIO MCP.

Configuration du serveur MCP​

Le serveur MCP est configuré via les fichiers de configuration de Claude Desktop ou Claude Code.

Configuration de base​

macOS​

Modifiez ~/Library/Application Support/Claude/claude_desktop_config.json :

{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"]
}
}
}

Windows​

Modifiez %APPDATA%\Claude\claude_desktop_config.json :

{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"]
}
}
}

Claude Code​

Modifiez le fichier .claude/settings.json de votre projet :

{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"]
}
}
}

Variables d'environnement​

Configurez la connexion au serveur Appium et autres paramĂštres via des variables d'environnement.

Connexion Appium​

VariableTypePar défautDescription
APPIUM_URLstring127.0.0.1Nom d'hĂŽte du serveur Appium
APPIUM_URL_PORTnumber4723Port du serveur Appium
APPIUM_PATHstring/Chemin du serveur Appium

Exemple avec variables d'environnement​

{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"],
"env": {
"APPIUM_URL": "192.168.1.100",
"APPIUM_URL_PORT": "4724",
"APPIUM_PATH": "/wd/hub"
}
}
}
}

Options de session de navigateur​

Options disponibles lors du démarrage d'une session de navigateur via l'outil start_browser.

headless​

  • Type: boolean
  • Obligatoire: Non
  • Par dĂ©faut: false

ExĂ©cuter Chrome en mode headless (sans fenĂȘtre de navigateur visible). Utile pour les environnements CI/CD ou lorsque vous n'avez pas besoin de voir le navigateur.

windowWidth​

  • Type: number
  • Obligatoire: Non
  • Par dĂ©faut: 1920
  • Plage: 400 - 3840

Largeur initiale de la fenĂȘtre du navigateur en pixels.

windowHeight​

  • Type: number
  • Obligatoire: Non
  • Par dĂ©faut: 1080
  • Plage: 400 - 2160

Hauteur initiale de la fenĂȘtre du navigateur en pixels.

  • Type: string
  • Obligatoire: Non

URL vers laquelle naviguer immédiatement aprÚs le démarrage du navigateur. C'est plus efficace que d'appeler start_browser suivi de navigate séparément.

Exemple: Démarrer le navigateur et naviguer en un seul appel:

Start Chrome and navigate to https://webdriver.io

Options de session mobile​

Options disponibles lors du démarrage d'une session d'application mobile via l'outil start_app_session.

Options de plateforme​

platform​

  • Type: string
  • Obligatoire: Oui
  • Valeurs: iOS | Android

La plateforme mobile Ă  automatiser.

platformVersion​

  • Type: string
  • Obligatoire: Non

La version du systÚme d'exploitation de l'appareil/simulateur/émulateur (par ex., 17.0 pour iOS, 14 pour Android).

automationName​

  • Type: string
  • Obligatoire: Non
  • Valeurs: XCUITest (iOS), UiAutomator2 | Espresso (Android)

Le pilote d'automatisation à utiliser. Par défaut, XCUITest pour iOS et UiAutomator2 pour Android.

Options d'appareil​

deviceName​

  • Type: string
  • Obligatoire: Oui

Nom de l'appareil, du simulateur ou de l'émulateur à utiliser.

Exemples:

  • Simulateur iOS: iPhone 15 Pro, iPad Air (5th generation)
  • Émulateur Android: Pixel 7, Nexus 5X
  • Appareil rĂ©el: Le nom de l'appareil tel qu'affichĂ© dans votre systĂšme

udid​

  • Type: string
  • Obligatoire: Non (Requis pour les appareils iOS rĂ©els)

Identifiant unique d'appareil. Requis pour les appareils iOS réels (identifiant de 40 caractÚres) et recommandé pour les appareils Android réels.

Pour trouver l'UDID:

  • iOS: Connectez l'appareil, ouvrez Finder/iTunes, cliquez sur l'appareil → NumĂ©ro de sĂ©rie (cliquez pour rĂ©vĂ©ler l'UDID)
  • Android: ExĂ©cutez adb devices dans le terminal

Options d'application​

appPath​

  • Type: string
  • Obligatoire: Non*

Chemin vers le fichier d'application Ă  installer et lancer.

Formats pris en charge:

  • Simulateur iOS: rĂ©pertoire .app
  • Appareil iOS rĂ©el: fichier .ipa
  • Android: fichier .apk

*Soit appPath doit ĂȘtre fourni, soit noReset: true pour se connecter Ă  une application dĂ©jĂ  en cours d'exĂ©cution.

appWaitActivity​

  • Type: string
  • Obligatoire: Non (Android uniquement)

Activité à attendre au lancement de l'application. Si non spécifié, l'activité principale/de lancement de l'application est utilisée.

Exemple: com.example.app.MainActivity

Options d'Ă©tat de session​

noReset​

  • Type: boolean
  • Obligatoire: Non
  • Par dĂ©faut: false

Préserver l'état de l'application entre les sessions. Quand true:

  • Les donnĂ©es de l'application sont prĂ©servĂ©es (Ă©tat de connexion, prĂ©fĂ©rences, etc.)
  • La session se dĂ©tachera au lieu de se fermer (garde l'application en cours d'exĂ©cution)
  • Utile pour tester les parcours utilisateur sur plusieurs sessions
  • Peut ĂȘtre utilisĂ© sans appPath pour se connecter Ă  une application dĂ©jĂ  en cours d'exĂ©cution

fullReset​

  • Type: boolean
  • Obligatoire: Non
  • Par dĂ©faut: true

Réinitialise complÚtement l'application avant la session. Quand true:

  • iOS: DĂ©sinstalle et rĂ©installe l'application
  • Android: Efface les donnĂ©es et le cache de l'application
  • Utile pour commencer avec un Ă©tat propre

Définissez fullReset: false avec noReset: true pour préserver complÚtement l'état de l'application.

DĂ©lai d'expiration de session​

newCommandTimeout​

  • Type: number
  • Obligatoire: Non
  • Par dĂ©faut: 60

Combien de temps (en secondes) Appium attendra une nouvelle commande avant de supposer que le client a quitté et de mettre fin à la session. Augmentez cette valeur pour des sessions de débogage plus longues.

Exemples:

  • 60 - Par dĂ©faut, convient Ă  la plupart des automatisations
  • 300 - 5 minutes, pour le dĂ©bogage ou les opĂ©rations plus lentes
  • 600 - 10 minutes, pour les tests trĂšs longs

Options de gestion automatique​

autoGrantPermissions​

  • Type: boolean
  • Obligatoire: Non
  • Par dĂ©faut: true

Accorde automatiquement les permissions de l'application lors de l'installation/du lancement. Quand true:

  • Les permissions pour camĂ©ra, microphone, localisation, etc. sont accordĂ©es automatiquement
  • Aucune gestion manuelle des boĂźtes de dialogue de permission n'est nĂ©cessaire
  • Simplifie l'automatisation en Ă©vitant les popups de permission
Android uniquement

Cette option affecte principalement Android. Les permissions iOS doivent ĂȘtre gĂ©rĂ©es diffĂ©remment en raison des restrictions du systĂšme.

autoAcceptAlerts​

  • Type: boolean
  • Obligatoire: Non
  • Par dĂ©faut: true

Accepte automatiquement les alertes systĂšme (boĂźtes de dialogue) qui apparaissent pendant l'automatisation.

Exemples d'alertes auto-acceptées:

  • "Autoriser les notifications ?"
  • "L'application souhaite accĂ©der Ă  votre localisation"
  • "Autoriser l'application Ă  accĂ©der aux photos ?"

autoDismissAlerts​

  • Type: boolean
  • Obligatoire: Non
  • Par dĂ©faut: false

Rejette (annule) les alertes systÚme au lieu de les accepter. A priorité sur autoAcceptAlerts quand défini à true.

Remplacement du serveur Appium​

Vous pouvez remplacer la connexion au serveur Appium pour chaque session:

appiumHost​

  • Type: string
  • Obligatoire: Non

Nom d'hĂŽte du serveur Appium. Remplace la variable d'environnement APPIUM_URL.

appiumPort​

  • Type: number
  • Obligatoire: Non

Port du serveur Appium. Remplace la variable d'environnement APPIUM_URL_PORT.

appiumPath​

  • Type: string
  • Obligatoire: Non

Chemin du serveur Appium. Remplace la variable d'environnement APPIUM_PATH.


Options de dĂ©tection d'Ă©lĂ©ments​

Options pour l'outil get_visible_elements.

elementType​

  • Type: string
  • Obligatoire: Non
  • Par dĂ©faut: interactable
  • Valeurs: interactable | visual | all

Type d'éléments à retourner:

  • interactable: Boutons, liens, champs de saisie et autres Ă©lĂ©ments cliquables
  • visual: Images, SVGs et Ă©lĂ©ments visuels
  • all: ÉlĂ©ments interactifs et visuels

inViewportOnly​

  • Type: boolean
  • Obligatoire: Non
  • Par dĂ©faut: true

Retourne uniquement les Ă©lĂ©ments visibles dans la fenĂȘtre actuelle. Quand false, retourne tous les Ă©lĂ©ments dans la hiĂ©rarchie de vue (utile pour trouver des Ă©lĂ©ments hors Ă©cran).

includeContainers​

  • Type: boolean
  • Obligatoire: Non
  • Par dĂ©faut: false

Inclut les éléments conteneurs/de mise en page dans les résultats. Quand true:

Conteneurs Android inclus:

  • ViewGroup, FrameLayout, LinearLayout
  • RelativeLayout, ConstraintLayout
  • ScrollView, RecyclerView

Conteneurs iOS inclus:

  • View, StackView, CollectionView
  • ScrollView, TableView

Utile pour déboguer les problÚmes de mise en page ou comprendre la hiérarchie des vues.

includeBounds​

  • Type: boolean
  • Obligatoire: Non
  • Par dĂ©faut: false

Inclut les limites/coordonnées des éléments (x, y, largeur, hauteur) dans la réponse. Définissez à true pour:

  • Interactions basĂ©es sur les coordonnĂ©es
  • DĂ©bogage de mise en page
  • Positionnement des Ă©lĂ©ments visuels

Options de pagination​

Pour les grandes pages avec de nombreux éléments, utilisez la pagination pour réduire l'utilisation de tokens:

limit​

  • Type: number
  • Obligatoire: Non
  • Par dĂ©faut: 0 (illimitĂ©)

Nombre maximum d'éléments à retourner.

offset​

  • Type: number
  • Obligatoire: Non
  • Par dĂ©faut: 0

Nombre d'éléments à ignorer avant de retourner les résultats.

Exemple: Obtenir les éléments 21 à 40:

Get visible elements with limit 20 and offset 20

Options d'arborescence d'accessibilité​

Options pour l'outil get_accessibility (navigateur uniquement).

limit​

  • Type: number
  • Obligatoire: Non
  • Par dĂ©faut: 100

Nombre maximum de nƓuds Ă  retourner. Utilisez 0 pour illimitĂ© (non recommandĂ© pour les grandes pages).

offset​

  • Type: number
  • Obligatoire: Non
  • Par dĂ©faut: 0

Nombre de nƓuds à ignorer pour la pagination.

roles​

  • Type: string[]
  • Obligatoire: Non
  • Par dĂ©faut: Tous les rĂŽles

Filtrer par rÎles d'accessibilité spécifiques.

RĂŽles courants: button, link, textbox, checkbox, radio, heading, img, listitem

Exemple: Obtenir uniquement les boutons et liens:

Get accessibility tree filtered to button and link roles

namedOnly​

  • Type: boolean
  • Obligatoire: Non
  • Par dĂ©faut: true

Retourne uniquement les nƓuds qui ont un nom/Ă©tiquette. Filtre les conteneurs anonymes et rĂ©duit le bruit dans les rĂ©sultats.


Options de capture d'Ă©cran​

Options pour l'outil take_screenshot.

outputPath​

  • Type: string
  • Obligatoire: Non

Chemin oĂč enregistrer le fichier de capture d'Ă©cran. Si non fourni, retourne les donnĂ©es d'image encodĂ©es en base64.

Optimisation automatique​

Les captures d'écran sont automatiquement traitées pour optimiser la consommation par le LLM:

OptimisationValeurDescription
Dimension max2000pxLes images plus grandes que 2000px sont redimensionnées
Taille max de fichier1MBLes images sont compressées pour rester sous 1MB
FormatPNG/JPEGPNG avec compression maximale; JPEG si nécessaire pour la taille

Cette optimisation garantit que les captures d'Ă©cran peuvent ĂȘtre traitĂ©es efficacement sans dĂ©passer les limites de tokens.


Comportement de session​

Types de session​

Le serveur MCP suit les types de sessions pour fournir des outils et comportements appropriés:

TypeDescriptionAuto-Détachement
browserSession de navigateur ChromeNon
iosSession d'application iOSOui (si noReset: true ou pas d'appPath)
androidSession d'application AndroidOui (si noReset: true ou pas d'appPath)

Modùle à session unique​

Le serveur MCP fonctionne avec un modĂšle Ă  session unique:

  • Une seule session de navigateur OU d'application peut ĂȘtre active Ă  la fois
  • DĂ©marrer une nouvelle session fermera/dĂ©tachera la session actuelle
  • L'Ă©tat de la session est maintenu globalement Ă  travers les appels d'outils

DĂ©tacher vs Fermer​

Actiondetach: false (Fermer)detach: true (Détacher)
NavigateurFerme complÚtement ChromeGarde Chrome en cours d'exécution, déconnecte WebDriver
Application mobileTermine l'applicationGarde l'application en cours d'exécution dans son état actuel
Cas d'utilisationDépart propre pour la prochaine sessionPréserve l'état, inspection manuelle

ConsidĂ©rations de performance​

Le serveur MCP est optimisé pour une communication LLM efficace en utilisant le format TOON (Token-Oriented Object Notation), qui minimise l'utilisation de tokens lors de l'envoi de données à Claude.

Automatisation de navigateur​

  • Le mode headless est plus rapide mais ne rend pas les Ă©lĂ©ments visuels
  • Les tailles de fenĂȘtre plus petites rĂ©duisent le temps de capture d'Ă©cran
  • La dĂ©tection d'Ă©lĂ©ments est optimisĂ©e avec une seule exĂ©cution de script
  • L'optimisation des captures d'Ă©cran maintient les images sous 1MB pour un traitement efficace
  • inViewportOnly: true (par dĂ©faut) filtre pour n'avoir que les Ă©lĂ©ments visibles

Automatisation mobile​

  • L'analyse de la source de page XML utilise seulement 2 appels HTTP (contre 600+ pour les requĂȘtes d'Ă©lĂ©ments traditionnelles)
  • Les sĂ©lecteurs d'ID d'accessibilitĂ© sont les plus rapides et les plus fiables
  • Les sĂ©lecteurs XPath sont les plus lents - Ă  n'utiliser qu'en dernier recours
  • inViewportOnly: true (par dĂ©faut) rĂ©duit significativement le nombre d'Ă©lĂ©ments
  • La pagination (limit et offset) rĂ©duit l'utilisation de tokens pour les Ă©crans avec de nombreux Ă©lĂ©ments
  • includeBounds: false (par dĂ©faut) omet les donnĂ©es de coordonnĂ©es sauf si nĂ©cessaire

Conseils d'utilisation des tokens​

ParamĂštreImpact
inViewportOnly: trueFiltre les éléments hors écran, réduisant la taille de la réponse
includeContainers: falseExclut les éléments de mise en page (ViewGroup, etc.)
includeBounds: falseOmet les données x/y/largeur/hauteur
limit avec paginationTraite les éléments par lots au lieu de tous à la fois
namedOnly: true (accessibilitĂ©)Filtre les nƓuds anonymes

Configuration du serveur Appium​

Avant d'utiliser l'automatisation mobile, assurez-vous que Appium est correctement configuré.

Configuration de base​

# Installer Appium globalement
npm install -g appium

# Installer les pilotes
appium driver install xcuitest # iOS
appium driver install uiautomator2 # Android

# Démarrer le serveur
appium

Configuration de serveur personnalisĂ©e​

# Démarrer avec un hÎte et un port personnalisés
appium --address 0.0.0.0 --port 4724

# Démarrer avec journalisation
appium --log-level debug

# Démarrer avec un chemin de base spécifique
appium --base-path /wd/hub

VĂ©rifier l'installation​

# Vérifier les pilotes installés
appium driver list --installed

# Vérifier la version d'Appium
appium --version

# Tester la connexion
curl http://localhost:4723/status

DĂ©pannage de la configuration​

Le serveur MCP ne dĂ©marre pas​

  1. Vérifiez que npm/npx est installé: npm --version
  2. Essayez de l'exécuter manuellement: npx @wdio/mcp
  3. Vérifiez les journaux de Claude Desktop pour les erreurs

Problùmes de connexion Appium​

  1. Vérifiez qu'Appium est en cours d'exécution: curl http://localhost:4723/status
  2. Vérifiez que les variables d'environnement correspondent aux paramÚtres du serveur Appium
  3. Assurez-vous que le pare-feu autorise les connexions sur le port Appium

La session ne dĂ©marre pas​

  1. Navigateur: Assurez-vous que Chrome est installé
  2. iOS: Vérifiez que Xcode et les simulateurs sont disponibles
  3. Android: Vérifiez ANDROID_HOME et que l'émulateur est en cours d'exécution
  4. Consultez les journaux du serveur Appium pour des messages d'erreur détaillés

DĂ©lais d'expiration de session​

Si les sessions expirent pendant le débogage:

  1. Augmentez newCommandTimeout lors du démarrage de la session
  2. Utilisez noReset: true pour préserver l'état entre les sessions
  3. Utilisez detach: true lors de la fermeture pour maintenir l'application en cours d'exécution

Welcome! How can I help?

WebdriverIO AI Copilot