MCP (Model Context Protocol)
Was kann es tun?â
WebdriverIO MCP ist ein Model Context Protocol (MCP) Server, der es KI-Assistenten wie Claude Desktop und Claude Code ermöglicht, Webbrowser und mobile Anwendungen zu automatisieren und mit ihnen zu interagieren.
Warum WebdriverIO MCP?â
- Mobile-First: Im Gegensatz zu reinen Browser-MCP-Servern unterstĂŒtzt WebdriverIO MCP die Automatisierung von iOS- und Android-Apps ĂŒber Appium
- PlattformĂŒbergreifende Selektoren: Intelligente Elementerfassung generiert automatisch mehrere Lokalisierungsstrategien (Accessibility ID, XPath, UiAutomator, iOS Predicates)
- WebdriverIO-Ăkosystem: Aufgebaut auf dem bewĂ€hrten WebdriverIO-Framework mit seinem reichhaltigen Ăkosystem an Services und Reportern
Es bietet eine einheitliche Schnittstelle fĂŒr:
- đ„ïž Desktop-Browser (Chrome - im sichtbaren oder Headless-Modus)
- đ± Native Mobile Apps (iOS-Simulatoren / Android-Emulatoren / Echte GerĂ€te ĂŒber Appium)
- đł Hybride Mobile Apps (Wechsel zwischen nativem und WebView-Kontext ĂŒber Appium)
ĂŒber das @wdio/mcp Paket.
Dies ermöglicht KI-Assistenten:
- Browser zu starten und zu steuern mit konfigurierbaren Abmessungen, Headless-Modus und optionaler initialer Navigation
- Websites zu navigieren und mit Elementen zu interagieren (Klicken, Tippen, Scrollen)
- Seiteninhalt zu analysieren ĂŒber Accessibility-Tree und Erkennung sichtbarer Elemente mit PaginierungsunterstĂŒtzung
- Screenshots zu erstellen, die automatisch optimiert werden (angepasste GröĂe, komprimiert auf max. 1MB)
- Cookies zu verwalten fĂŒr Session-Handling
- Mobile GerĂ€te zu steuern einschlieĂlich Gesten (Tippen, Wischen, Drag and Drop)
- Kontexte zu wechseln in Hybrid-Apps zwischen nativem und WebView-Kontext
- Skripte auszufĂŒhren - JavaScript in Browsern, Appium mobile Befehle auf GerĂ€ten
- GerÀtefunktionen zu verwalten wie Rotation, Tastatur, Geolokalisierung
- und vieles mehr, siehe die Tools und Konfigurationsmöglichkeiten
HINWEIS fĂŒr Mobile Apps Mobile Automatisierung erfordert einen laufenden Appium-Server mit den entsprechenden Treibern. Siehe Voraussetzungen fĂŒr Installationsanweisungen.
Installationâ
Der einfachste Weg, @wdio/mcp zu nutzen, ist ĂŒber npx ohne lokale Installation:
npx @wdio/mcp
Oder installieren Sie es global:
npm install -g @wdio/mcp
Verwendung mit Claudeâ
Um WebdriverIO MCP mit Claude zu verwenden, modifizieren Sie die Konfigurationsdatei:
{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"]
}
}
}
Nach dem HinzufĂŒgen der Konfiguration starten Sie Claude neu. Die WebdriverIO MCP-Tools werden fĂŒr Browser- und mobile Automatisierungsaufgaben verfĂŒgbar sein.
Verwendung mit Claude Codeâ
Claude Code erkennt MCP-Server automatisch. Sie können ihn in der .claude/settings.json oder .mcp.json Ihres Projekts konfigurieren.
Oder fĂŒgen Sie ihn global in .claude.json hinzu, indem Sie ausfĂŒhren:
claude mcp add --transport stdio wdio-mcp -- npx -y @wdio/mcp
ĂberprĂŒfen Sie es, indem Sie den Befehl /mcp in Claude Code ausfĂŒhren.
Schnellstart-Beispieleâ
Browser-Automatisierungâ
Bitten Sie Claude, Browser-Aufgaben zu automatisieren:
"Ăffne Chrome und navigiere zu https://webdriver.io"
"Klicke auf den 'Get Started' Button"
"Mache einen Screenshot der Seite"
"Finde alle sichtbaren Links auf der Seite"
Mobile App-Automatisierungâ
Bitten Sie Claude, mobile Apps zu automatisieren:
"Starte meine iOS-App auf dem iPhone 15 Simulator"
"Tippe auf den Login-Button"
"Wische nach oben, um nach unten zu scrollen"
"Mache einen Screenshot des aktuellen Bildschirms"
FĂ€higkeitenâ
Browser-Automatisierung (Chrome)â
| Funktion | Beschreibung |
|---|---|
| Session-Management | Chrome im sichtbaren/Headless-Modus mit benutzerdefinierten Abmessungen und optionaler Navigations-URL starten |
| Navigation | Zu URLs navigieren |
| Element-Interaktion | Elemente anklicken, Text eingeben, Elemente mit verschiedenen Selektoren finden |
| Seitenanalyse | Sichtbare Elemente abrufen (mit Paginierung), Accessibility-Tree (mit Filterung) |
| Screenshots | Screenshots aufnehmen (automatisch optimiert auf max. 1MB) |
| Scrollen | Nach oben/unten scrollen mit konfigurierbaren Pixelwerten |
| Cookie-Management | Cookies abrufen, setzen und löschen |
| SkriptausfĂŒhrung | Benutzerdefiniertes JavaScript im Browser-Kontext ausfĂŒhren |
Mobile App-Automatisierung (iOS/Android)â
| Funktion | Beschreibung |
|---|---|
| Session-Management | Apps auf Simulatoren, Emulatoren oder echten GerÀten starten |
| Touch-Gesten | Tippen, Wischen, Ziehen und Ablegen |
| Element-Erkennung | Intelligente Elementerkennung mit mehreren Lokalisierungsstrategien und Paginierung |
| App-Lebenszyklus | App-Status abrufen (ĂŒber execute_script fĂŒr Aktivieren/Beenden) |
| Kontextwechsel | Zwischen nativem und WebView-Kontext in Hybrid-Apps wechseln |
| GerÀtesteuerung | GerÀt drehen, Tastatursteuerung |
| Geolokalisierung | GPS-Koordinaten des GerÀts abrufen und setzen |
| Berechtigungen | Automatisches Berechtigungs- und Benachrichtigungshandling |
| SkriptausfĂŒhrung | Appium mobile Befehle ausfĂŒhren (pressKey, deepLink, shell, etc.) |
Voraussetzungenâ
Browser-Automatisierungâ
- Chrome muss auf Ihrem System installiert sein
- WebdriverIO ĂŒbernimmt die automatische ChromeDriver-Verwaltung
Mobile Automatisierungâ
iOSâ
- Xcode installieren aus dem Mac App Store
- Xcode Command Line Tools installieren:
xcode-select --install - Appium installieren:
npm install -g appium - XCUITest-Treiber installieren:
appium driver install xcuitest - Appium-Server starten:
appium - FĂŒr Simulatoren: Xcode öffnen â Fenster â GerĂ€te und Simulatoren, um Simulatoren zu erstellen/verwalten
- FĂŒr echte GerĂ€te: Sie benötigen die UDID des GerĂ€ts (40-stellige eindeutige Kennung)
Androidâ
- Android Studio installieren und Android SDK einrichten
- Umgebungsvariablen setzen:
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/platform-tools - Appium installieren:
npm install -g appium - UiAutomator2-Treiber installieren:
appium driver install uiautomator2 - Appium-Server starten:
appium - Emulator erstellen ĂŒber Android Studio â Virtual Device Manager
- Emulator starten vor dem AusfĂŒhren von Tests
Architekturâ
Wie es funktioniertâ
WebdriverIO MCP fungiert als BrĂŒcke zwischen KI-Assistenten und Browser-/MobilgerĂ€t-Automatisierung:
âââââââââââââââââââ MCP Protocol âââââââââââââââââââ
â Claude Desktop â ââââââââââââââââââââș â @wdio/mcp â
â or Claude Code â (stdio) â Server â
âââââââââââââââââââ ââââââââââŹâââââââââ
â
WebDriverIO API
â
ââââââââââââââââââââââââââââââââŒâââââââââââââââââââââââââââââââ
â â â
âââââââââŒââââââââ âââââââââŒââââââââ âââââââââŒââââââââ
â Chrome â â Appium â â Appium â
â (Browser) â â (iOS) â â (Android) â
âââââââââââââââââ âââââââââââââââââ âââââââââââââââââ
Session-Managementâ
- Einzel-Session-Modell: Nur eine Browser- ODER App-Session kann gleichzeitig aktiv sein
- Session-Status wird global ĂŒber Tool-Aufrufe hinweg beibehalten
- Auto-Detach: Sessions mit bewahrtem Status (
noReset: true) trennen sich beim SchlieĂen automatisch
Element-Erkennungâ
Browser (Web)â
- Verwendet ein optimiertes Browser-Skript, um alle sichtbaren, interagierbaren Elemente zu finden
- Gibt Elemente mit CSS-Selektoren, IDs, Klassen und ARIA-Informationen zurĂŒck
- Filtert standardmĂ€Ăig auf im Viewport sichtbare Elemente
Mobile (Native Apps)â
- Verwendet effiziente XML-Quellcode-Analyse (2 HTTP-Aufrufe vs. 600+ fĂŒr traditionelle Abfragen)
- Plattformspezifische Elementklassifizierung fĂŒr Android und iOS
- Generiert mehrere Lokalisierungsstrategien pro Element:
- Accessibility ID (plattformĂŒbergreifend, am stabilsten)
- Resource ID / Name-Attribut
- Text- / Label-Ăbereinstimmung
- XPath (vollstÀndig und vereinfacht)
- UiAutomator (Android) / Predicates (iOS)
Selektor-Syntaxâ
Der MCP-Server unterstĂŒtzt mehrere Selektor-Strategien. Siehe Selektoren fĂŒr detaillierte Dokumentation.
Web (CSS/XPath)â
# CSS Selectors
button.my-class
#element-id
[data-testid="login"]
# XPath
//button[@class='submit']
//a[contains(text(), 'Click')]
# Text Selectors (WebdriverIO specific)
button=Exact Button Text
a*=Partial Link Text
Mobile (PlattformĂŒbergreifend)â
# Accessibility ID (empfohlen - funktioniert auf iOS & Android)
~loginButton
# Android UiAutomator
android=new UiSelector().text("Login")
# iOS Predicate String
-ios predicate string:label == "Login"
# iOS Class Chain
-ios class chain:**/XCUIElementTypeButton[`label == "Login"`]
# XPath (funktioniert auf beiden Plattformen)
//android.widget.Button[@text="Login"]
//XCUIElementTypeButton[@label="Login"]
VerfĂŒgbare Toolsâ
Der MCP-Server bietet 25 Tools fĂŒr Browser- und Mobile-Automatisierung. Siehe Tools fĂŒr die vollstĂ€ndige Referenz.
Browser-Toolsâ
| Tool | Beschreibung |
|---|---|
start_browser | Chrome-Browser starten (mit optionaler Start-URL) |
close_session | Session schlieĂen oder trennen |
navigate | Zu einer URL navigieren |
click_element | Element anklicken |
set_value | Text in Eingabefeld eingeben |
get_visible_elements | Sichtbare/interagierbare Elemente abrufen (mit Paginierung) |
get_accessibility | Accessibility-Tree abrufen (mit Filterung) |
take_screenshot | Screenshot aufnehmen (automatisch optimiert) |
scroll | Seite nach oben oder unten scrollen |
get_cookies / set_cookie / delete_cookies | Cookie-Verwaltung |
execute_script | JavaScript im Browser ausfĂŒhren |
Mobile Toolsâ
| Tool | Beschreibung |
|---|---|
start_app_session | iOS/Android-App starten |
tap_element | Element oder Koordinaten antippen |
swipe | In eine Richtung wischen |
drag_and_drop | Zwischen Positionen ziehen |
get_app_state | PrĂŒfen, ob App lĂ€uft |
get_contexts / switch_context | Kontextwechsel in Hybrid-Apps |
rotate_device | In Hochformat/Querformat drehen |
get_geolocation / set_geolocation | GPS-Koordinaten abrufen oder setzen |
hide_keyboard | Bildschirmtastatur ausblenden |
execute_script | Appium mobile Befehle ausfĂŒhren |
Automatisches Handlingâ
Berechtigungenâ
StandardmĂ€Ăig gewĂ€hrt der MCP-Server automatisch App-Berechtigungen (autoGrantPermissions: true), wodurch die manuelle Behandlung von Berechtigungsdialogen wĂ€hrend der Automatisierung entfĂ€llt.
System-Benachrichtigungenâ
System-Benachrichtigungen (wie "Benachrichtigungen zulassen?") werden standardmĂ€Ăig automatisch akzeptiert (autoAcceptAlerts: true). Dies kann mit autoDismissAlerts: true konfiguriert werden, um stattdessen Benachrichtigungen abzulehnen.
Konfigurationâ
Umgebungsvariablenâ
Konfigurieren Sie die Appium-Server-Verbindung:
| Variable | Standard | Beschreibung |
|---|---|---|
APPIUM_URL | 127.0.0.1 | Appium-Server-Hostname |
APPIUM_URL_PORT | 4723 | Appium-Server-Port |
APPIUM_PATH | / | Appium-Server-Pfad |
Beispiel mit benutzerdefiniertem Appium-Serverâ
{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"],
"env": {
"APPIUM_URL": "192.168.1.100",
"APPIUM_URL_PORT": "4724"
}
}
}
}
Leistungsoptimierungâ
Der MCP-Server ist fĂŒr effiziente KI-Assistenten-Kommunikation optimiert:
- TOON-Format: Verwendet Token-Oriented Object Notation fĂŒr minimale Token-Nutzung
- XML-Analyse: Mobile Elementerkennung verwendet 2 HTTP-Aufrufe (vs. traditionell 600+)
- Screenshot-Komprimierung: Bilder werden automatisch auf max. 1MB mit Sharp komprimiert
- Viewport-Filterung: StandardmĂ€Ăig werden nur sichtbare Elemente zurĂŒckgegeben
- Paginierung: GroĂe Elementlisten können paginiert werden, um die AntwortgröĂe zu reduzieren
TypeScript-UnterstĂŒtzungâ
Der MCP-Server ist in TypeScript geschrieben und enthÀlt vollstÀndige Typdefinitionen. Wenn Sie den Server programmatisch erweitern oder integrieren, profitieren Sie von Auto-VervollstÀndigung und Typsicherheit.
Fehlerbehandlungâ
Alle Tools sind mit robuster Fehlerbehandlung konzipiert:
- Fehler werden als Textinhalt zurĂŒckgegeben (niemals geworfen), um die MCP-ProtokollstabilitĂ€t aufrechtzuerhalten
- Beschreibende Fehlermeldungen helfen bei der Diagnose von Problemen
- Der Session-Status bleibt erhalten, auch wenn einzelne Operationen fehlschlagen
AnwendungsfĂ€lleâ
QualitĂ€tssicherungâ
- KI-gestĂŒtzte TestfallausfĂŒhrung
- Visuelle Regressionstests mit Screenshots
- ZugĂ€nglichkeitsprĂŒfung ĂŒber Accessibility-Tree-Analyse
Web-Scraping & Datenextraktionâ
- Komplexe mehrseitige AblÀufe navigieren
- Strukturierte Daten aus dynamischen Inhalten extrahieren
- Authentifizierung und Session-Management verwalten
Mobile App-Testsâ
- PlattformĂŒbergreifende Testautomatisierung (iOS + Android)
- Validierung des Onboarding-Prozesses
- Deep-Linking- und Navigationstest
Integrationstestsâ
- End-to-End-Workflow-Tests
- API + UI-Integrationsverifikation
- PlattformĂŒbergreifende KonsistenzprĂŒfungen
Fehlerbehebungâ
Browser startet nichtâ
- Stellen Sie sicher, dass Chrome installiert ist
- ĂberprĂŒfen Sie, dass kein anderer Prozess den Standard-Debug-Port (9222) verwendet
- Versuchen Sie den Headless-Modus, wenn Anzeigeprobleme auftreten
Appium-Verbindung fehlgeschlagenâ
- ĂberprĂŒfen Sie, ob der Appium-Server lĂ€uft (
appium) - Kontrollieren Sie die Appium-URL und Port-Konfiguration
- Stellen Sie sicher, dass der entsprechende Treiber installiert ist (
appium driver list)
iOS-Simulator-Problemeâ
- Stellen Sie sicher, dass Xcode installiert und aktuell ist
- PrĂŒfen Sie, ob Simulatoren verfĂŒgbar sind (
xcrun simctl list devices) - Bei echten GerĂ€ten ĂŒberprĂŒfen Sie, ob die UDID korrekt ist
Android-Emulator-Problemeâ
- Stellen Sie sicher, dass das Android SDK korrekt konfiguriert ist
- ĂberprĂŒfen Sie, ob der Emulator lĂ€uft (
adb devices) - PrĂŒfen Sie, ob die Umgebungsvariable
ANDROID_HOMEgesetzt ist
Ressourcenâ
- Tools-Referenz - VollstĂ€ndige Liste verfĂŒgbarer Tools
- Selektoren-Guide - Selektor-Syntax-Dokumentation
- Konfiguration - Konfigurationsoptionen
- FAQ - HĂ€ufig gestellte Fragen
- GitHub-Repository - Quellcode und Issues
- NPM-Paket - Paket auf npm
- Model Context Protocol - MCP-Spezifikation