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â
| Variable | Type | Par défaut | Description |
|---|---|---|---|
APPIUM_URL | string | 127.0.0.1 | Nom d'hĂŽte du serveur Appium |
APPIUM_URL_PORT | number | 4723 | Port du serveur Appium |
APPIUM_PATH | string | / | 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.
navigationUrlâ
- 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 devicesdans 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
appPathpour 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 automatisations300- 5 minutes, pour le débogage ou les opérations plus lentes600- 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
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 cliquablesvisual: Images, SVGs et Ă©lĂ©ments visuelsall: Ă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,LinearLayoutRelativeLayout,ConstraintLayoutScrollView,RecyclerView
Conteneurs iOS inclus:
View,StackView,CollectionViewScrollView,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:
| Optimisation | Valeur | Description |
|---|---|---|
| Dimension max | 2000px | Les images plus grandes que 2000px sont redimensionnées |
| Taille max de fichier | 1MB | Les images sont compressées pour rester sous 1MB |
| Format | PNG/JPEG | PNG 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:
| Type | Description | Auto-Détachement |
|---|---|---|
browser | Session de navigateur Chrome | Non |
ios | Session d'application iOS | Oui (si noReset: true ou pas d'appPath) |
android | Session d'application Android | Oui (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â
| Action | detach: false (Fermer) | detach: true (Détacher) |
|---|---|---|
| Navigateur | Ferme complÚtement Chrome | Garde Chrome en cours d'exécution, déconnecte WebDriver |
| Application mobile | Termine l'application | Garde l'application en cours d'exécution dans son état actuel |
| Cas d'utilisation | Départ propre pour la prochaine session | Pré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 (
limitetoffset) 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Ăštre | Impact |
|---|---|
inViewportOnly: true | Filtre les éléments hors écran, réduisant la taille de la réponse |
includeContainers: false | Exclut les éléments de mise en page (ViewGroup, etc.) |
includeBounds: false | Omet les données x/y/largeur/hauteur |
limit avec pagination | Traite 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â
- Vérifiez que npm/npx est installé:
npm --version - Essayez de l'exécuter manuellement:
npx @wdio/mcp - Vérifiez les journaux de Claude Desktop pour les erreurs
ProblĂšmes de connexion Appiumâ
- Vérifiez qu'Appium est en cours d'exécution:
curl http://localhost:4723/status - Vérifiez que les variables d'environnement correspondent aux paramÚtres du serveur Appium
- Assurez-vous que le pare-feu autorise les connexions sur le port Appium
La session ne dĂ©marre pasâ
- Navigateur: Assurez-vous que Chrome est installé
- iOS: Vérifiez que Xcode et les simulateurs sont disponibles
- Android: Vérifiez
ANDROID_HOMEet que l'émulateur est en cours d'exécution - 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:
- Augmentez
newCommandTimeoutlors du démarrage de la session - Utilisez
noReset: truepour préserver l'état entre les sessions - Utilisez
detach: truelors de la fermeture pour maintenir l'application en cours d'exécution