The element and accessibility-tree tools are what make this workable for a model: it gets selectors and bounding boxes instead of guessing coordinates from a screenshot. The detail worth planning around is the single active session — this drives one target at a time, and attaching to an existing session by id is how you pick up something already running rather than starting over.
WebdriverIO's own automation server covering Chrome, Firefox, Edge and Safari plus iOS and Android through Appium, locally or on a cloud device provider.
- Sessions started for a browser or a device, attached to an existing WebDriver or Appium session by id, and closed either by terminating or by detaching so app state survives on the server
- Page navigation with the load event waited for, tab listing and switching by handle or index, and frame switching into an iframe and back
- Interaction that behaves like a user: click after waiting and scrolling into view, type into a field character by character after clearing it, scroll, and drag and drop to an element or by offset
- Mobile gestures and device state — tap by element or coordinates, full-screen swipe, rotation with the animation waited out, keyboard dismissal, app state, and switching between native and webview contexts in a hybrid app
- Perception for the model rather than raw HTML: interactable elements with selectors, text and bounding boxes, the accessibility tree with roles and names, and compressed screenshots
- Session control that testing needs: cookies read, set and deleted, geolocation overridden, device emulation with viewport, DPR and user agent, and arbitrary JavaScript or Appium mobile commands executed
- Chrome launched with remote debugging on a fresh temporary profile, and web extensions installed through WebDriver BiDi and opened so the other tools can drive them
- Cloud device work: apps listed on a provider, and a local .apk or .ipa uploaded to BrowserStack, Sauce Labs, TestMu, TestingBot or Digital.ai
Runs from npm as @wdio/mcp over stdio. Browser automation needs the browser installed. Mobile work needs Appium — installed globally and running before a session starts — plus the platform SDK, or credentials for a cloud provider when the device lives there. Only one session is active at a time: starting another replaces it.
One command — npx -y @wdio/mcp@latest
