webdriverio/mcp
MCP server with WebdriverIO for browser and mobile app automation (iOS/Android via Appium)
Connector by webdriverio · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/webdriverio-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: browser-automation, testing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 12 read · 15 write · 8 delete · 7 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 42
Read from the source code; the running server may list different tools.
Read 12 · Look things up without changing anything.
enable_toolsget_accessibility_treeget_app_stateget_contextsget_cookiesget_elementsget_mock_callsget_screenshotget_tabslist_appsquery_docssnapshot
Write 15 · Create, change, send or run things.
attach_sessionclick_elementnavigateopen_web_extensionperform_actionspress_keyscrollselect_optionset_cookieset_geolocationset_valuestart_session
Show 3 more tools
swipetap_elementupload_app
Delete 8 · Delete, drop, revoke or wipe things.
close_sessiondelete_cookiesdrag_and_dropexecute_electron_scriptexecute_scriptmanage_mockmocktrigger_electron_deeplink
Not yet classified 7 · We could not tell from the name and description.
emulate_devicehide_keyboardlaunch_chromerotate_deviceswitch_contextswitch_frameswitch_tab
Network hosts it talks to 14
api-cloud.browserstack.com· found in codeapi.browserstack.com· found in codeapi.eu-central-1.saucelabs.com· found in codeapi.lambdatest.com· found in codeapi.testingbot.com· found in codedownloads.lambdatest.com· found in codegithub.com· found in codeglama.ai· found in codelocal-downloads.browserstack.com· found in codemanual-api.lambdatest.com· found in codeplayer.vibium.dev· found in codesaucelabs.com· found in codetestingbot.com· found in codewebdriver.io· found in code
Files it touches
- Your home directory (~)
- Any path the agent passes to its tools
Tools (42)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
attach_sessionAttach SessionAttaches to an existing remote WebDriver or Appium session by ID without creating a new session. Only one session can be active at a time. The externally managed session is detached, not terminated, by default on close.
click_elementClick ElementClicks an element. On web pages the result lists what changed (new elements with refs, or the new page). In apps it does not: take a snapshot to see the new screen. Several steps in a row: perform_actions.
close_sessionClose Sessioncan change or delete dataCloses the session, or with detach: true disconnects and leaves it running. Attached sessions and Appium sessions with noReset are detached unless detach: false.
delete_cookiesDelete Cookiescan change or delete dataDeletes all cookies or a single cookie by name from the current browser session. Irreversible — deleted cookies cannot be recovered.
drag_and_dropDrag and DropDrags an element to another element or to relative x/y offsets. x and y are offsets from the source element, not absolute screen coordinates (unlike tap_element). Provide targetSelector OR both x and y. Mobile-only.
emulate_deviceEmulate DeviceEmulates a mobile or tablet device in the current browser session by setting viewport, DPR, user-agent, and touch events. Requires a BiDi-enabled session (start_session with capabilities: { webSocketUrl: true }). Omit device to list available presets. Pass "reset" to restore desktop defaults. Changes persist for all subsequent tool calls until reset or session close. Browser-only.
enable_toolsEnable Toolsread-onlyDescription is built at runtime.
execute_electron_scriptExecute Electron Main-Process Scriptcan change or delete dataExecutes arbitrary JavaScript in the Electron main process. This is privileged code execution with access to Electron APIs; use only with trusted scripts.
execute_scriptExecute ScriptRuns JavaScript in the page (`return` a value; string args that match a selector are passed as elements) or, on Appium, a "mobile: <command>" with args. Prefer the dedicated tools for clicks and typing.
get_accessibility_treeGet Accessibility Treeread-onlyReturns the page accessibility tree with roles, names, and selectors. Browser-only. Supports filtering by ARIA roles and pagination via limit/offset.
get_app_stateGet App Stateread-onlyReturns the current state of a mobile app: not installed, not running, background, or foreground. Mobile-only.
get_contextsGet Automation Contextsread-onlyReturns available automation contexts and the currently active one. Use before switch_context to discover NATIVE_APP and WEBVIEW_* targets. Mobile-only.
get_cookiesGet Cookiesread-onlyReturns all cookies for the current session, or a single cookie by name. Use to verify auth state, session tokens, or feature flags after login flows.
get_elementsGet Visible Elementsread-onlyReturns interactable elements on the current page with selectors, text, and bounding boxes. Supports filtering by element type, viewport visibility, and pagination. Use when the wdio://session/current/elements resource does not return desired elements.
get_mock_callsGet Mock Callsread-onlyRead current call arguments for a mock in the active session. Use the same target as mock. mockType defaults to browser in WebDriver sessions and is required in Electron sessions. Electron mocks require apiName and funcName; browser mocks require url and accept method. Appium sessions are unsupported.
Show 27 more tools
get_screenshotGet Screenshotread-onlyTakes a screenshot of the current page or screen and returns a base64-encoded image, resized and compressed for model context limits.
get_tabsGet Browser Tabsread-onlyLists all browser tabs with handle, title, URL, and which is active. Use before switch_tab to find the target handle or index. Browser-only.
hide_keyboardHide KeyboardDismisses the on-screen keyboard on mobile. Call after text entry when the keyboard obscures elements. No-op if already hidden. Mobile-only.
launch_chromeLaunch ChromeLaunches Chrome with remote debugging enabled. Wipes and recreates a temporary profile directory on each call. Mode "newInstance" (default) runs alongside existing Chrome; "freshSession" starts with an empty profile. Set copyProfileFiles to copy cookies/logins from your Default profile — changes do not sync back. After launch, call start_session with attach: true to connect. Spawns a detached Chrome process that persists if the server exits.
list_appsList BrowserStack Appsread-onlyList apps uploaded to BrowserStack App Automate. Reads BROWSERSTACK_USERNAME and BROWSERSTACK_ACCESS_KEY from environment.
manage_mockManage Mockcan change or delete dataManage a mock in the active session. mockType defaults to browser in WebDriver sessions and is required in Electron sessions. Electron mocks require apiName and funcName; browser mocks require url and accept method. Appium sessions are unsupported. clear removes call history, reset also removes configured behavior and queued values, restore reinstates the original and releases the mock.
mockConfigure Mockcan change or delete dataConfigure a session-scoped mock. mockType defaults to browser in WebDriver sessions and is required in Electron sessions. Browser mocks intercept network requests matched by a url glob and require a BiDi-enabled session (start_session with capabilities: { webSocketUrl: true }); in Electron sessions they additionally require the session to have negotiated BiDi. Electron mocks require apiName and funcName. Appium sessions are unsupported. Omit behavior to observe: record matching requests (e.g. url '**/*') without altering them, then read them with get_mock_calls. Repeated calls preserve call hi…
navigateNavigate to URLLoads a URL in the current tab and waits for the page load event. Resets page state — DOM, JS runtime, timers, and frame context are destroyed. Use instead of clicking links when the target URL is known.
open_web_extensionOpen Web ExtensionInstalls a web extension through WebDriver BiDi and opens one of its extension pages so existing MCP tools can inspect and drive its UI. Requires a BiDi-enabled browser session. Use base64 for cloud/remote sessions where the browser driver cannot read the MCP server filesystem.
perform_actionsPerform ActionsRuns several actions in one call, e.g. fill a form and submit it, on the page or app screen, and returns what each one changed on web pages. Steps the current session does not support are rejected before any step runs. Stops at the first failure, when a step loads a new page, or before a key press that follows a click, select, check or uncheck that changed the page (continue with the new refs). value is the text for fill, the option for select and the keys for press.
press_keyPress KeyPresses a key or combination in the focused element, e.g. Enter, Tab, Escape, Control+a. The result lists what changed on the page. Several steps in a row: perform_actions.
query_docsQuery WebdriverIO Docsread-onlySearch the official WebdriverIO documentation and return the most relevant excerpts with page, section and source URL. Use before answering any question about WebdriverIO APIs, configuration, services, reporters, selectors, or debugging. Query with 2-3 distinctive keywords, never a sentence: "appium setup", "devtools trace.zip" and "allure reporter" each return the right page first, while "how do I wire up appium in my config file" does not. A word can also collide with an unrelated page — `wire` matches Wire Protocol — so if a query misses, retry with the exact page title, which beats any pa…
rotate_deviceRotate DeviceRotates a mobile device to portrait or landscape orientation. Waits for the OS rotation animation to complete. Use to test orientation-dependent layouts. Mobile-only; no effect in browser sessions.
scrollScroll PageScrolls the page vertically by a pixel amount. Browser-only — for mobile scrolling use swipe. Only supports up/down; no horizontal scrolling.
select_optionSelect OptionSelects an option of a <select> by its text. The result lists what changed on the page. Several steps in a row: perform_actions.
set_cookieSet CookieSets a browser cookie on the active session. The browser must already be on the target domain — cookies cannot be set cross-domain. Use to inject session tokens or feature flags without login flows.
set_geolocationSet GeolocationOverrides GPS coordinates for the session. Affects navigator.geolocation in browsers and location services on mobile. Location permissions must already be granted to the app.
set_valueSet Input ValueReplaces the text of an input or textarea. On web pages the result lists what changed (new elements with refs, or the new page). In apps it does not: take a snapshot to see the new screen. To fill several fields or fill and then click, use one perform_actions call.
snapshotPage Snapshotread-onlyThe page or app screen as an accessibility tree with refs, e.g. `button "Save" [ref=e3]`. Pass refs to perform_actions for several steps, or to click_element/set_value/select_option for one. Default: interactive elements only, plain text is dropped; full: true shows it. find returns only the parts of the page that contain the text (with their refs); full: true includes all text; viewport: true limits it to what is on screen (not together with find).
start_sessionStart SessionStarts a browser, Electron app or mobile app session (closes the active one). Browsers run headless at 1280x800 by default; pass navigationUrl to open a page right away. attach: true connects to a running Chrome via CDP.
swipeSwipe ScreenPerforms a full-screen swipe gesture. Direction is content movement — "up" scrolls content upward (finger moves down). For browser scrolling use scroll; for dragging a specific element use drag_and_drop. No error if content cannot scroll further. Mobile-only.
switch_contextSwitch ContextSwitches between native and webview automation contexts in a hybrid mobile app. In NATIVE_APP context, use accessibility IDs; in WEBVIEW_* context, use CSS/XPath. Changes persist for all subsequent commands. Accepts context name or 1-based index. Use get_contexts to discover available targets. Mobile-only.
switch_frameSwitch FrameSwitches into an iframe (ref or selector), or back to the top page when selector is omitted. Later tools act inside the frame until you switch back. Returns the frame's elements.
switch_tabSwitch Browser TabSwitches to a tab by handle or 0-based index (see get_tabs). Later tools act on that tab.
tap_elementTap ElementTaps an element (ref from snapshot, or selector) or taps at absolute screen coordinates (x, y). A tap on an element lists what changed on the screen. No scroll-into-view or wait — element must already be visible on screen. Use instead of click_element on iOS where element.click() is ignored. Provide selector OR both x and y. Mobile-only.
trigger_electron_deeplinkTrigger Electron Deeplinkcan change or delete dataTriggers a deeplink through the active Electron application. The Electron session must be started with electronDeeplinkScheme matching the URL scheme. Packaged binaries are required for deeplinks on Windows and Linux.
upload_appUpload App to BrowserStackUpload a local .apk or .ipa to BrowserStack App Automate. Returns a bs:// URL for use in start_session.
Signals
- Stars
- 43
- Forks
- 16
- Open issues
- 2
- Last commit
- Oct 8, 2026 (21 days ago)
- Last release
- Oct 25, 2026 (4 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.webdriverio/mcp- Version
- 4.0.1
- Auth
- No auth
- Packages
- npm @wdio/mcp
- License
- MIT
- Repository
- github.com/webdriverio/mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 26, 2026
More from webdriverio
Cite this page
webdriverio/mcp. Agent Mart. https://agentmart.dev/connectors/webdriverio-mcp (last updated 2026-10-26)