Skip to main content
Glama
VitexSoftware

mcp-server-webdriver

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FIREFOX_BINARYNoPath to a custom Firefox executable
GECKODRIVER_PATHNoAbsolute path to geckodriver binary (highest priority)
GECKODRIVER_AUTO_INSTALLNoSet to false to disable webdriver-manager fallbacktrue

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
browser_openA

Open URL in Firefox. Starts a new browser session if none is running.

With enable_bidi=True (default) the session automatically captures: • All JavaScript exceptions (file, line, column, stack trace) • All console.* output (log / warn / error / info / debug) • All network requests with status codes and durations

To test responsive / mobile layouts pass width + height (and optionally user_agent): width=390 height=844 — iPhone 14 width=375 height=667 — iPhone SE width=360 height=800 — Samsung Galaxy S21 width=768 height=1024 — iPad width=1280 height=800 — laptop

geckodriver sources (priority order):

  1. GECKODRIVER_PATH env → 2. apt install gecko-driver → 3. webdriver-manager

browser_closeA

Close the browser session. All buffered DevTools data is discarded.

browser_statusA

Session state, geckodriver info, BiDi status and buffer sizes.

browser_set_viewportA

Resize the browser viewport to test responsive / mobile layouts.

Call this at any point during a session to switch between breakpoints.

Common presets: 390×844 — iPhone 14 375×667 — iPhone SE 360×800 — Samsung Galaxy S21 768×1024 — iPad 1280×800 — laptop 1920×1080 — desktop full-HD

devtools_reportA

MAIN DIAGNOSTIC TOOL — returns a complete DevTools report in one call:

• js_errors — all JavaScript exceptions with file, line, column, stack • console_errors — console.error() and console.warn() output • failed_resources — CSS / JS / images / fonts that returned 4xx/5xx or failed to load • slow_resources — requests that took longer than 2 s

Use this after navigating to a page or after triggering a UI action. Equivalent to opening DevTools and checking the Console + Network tabs.

devtools_js_errorsA

Return all JavaScript exceptions captured since browser_open.

Each entry contains: ts — ISO 8601 timestamp type — error type (e.g. 'TypeError', 'ReferenceError') text — error message url — source file URL line — line number in source file column — column number stack — full stack trace

This is the primary tool for finding which JS file and line causes a bug.

devtools_consoleA

Return buffered browser console messages.

Each entry: ts, level, text, url (source file), line. Covers console.log / warn / error / info / debug.

devtools_network_failedA

Return network requests that FAILED — 4xx / 5xx status or DNS / connection errors.

This is how the agent detects broken CSS files, missing JS bundles, unavailable fonts, or failed API calls that cause layout or functionality issues.

Each entry: ts, method, url, type, status (0 = connection failed), duration_ms, failed (bool), error (error description).

devtools_network_allA

Return all captured network requests with filtering options.

Useful for auditing which CSS/JS files are loaded, checking API response times, or finding resources that are unexpectedly missing from the page. Use limit= to avoid overwhelming the context window on busy pages.

devtools_clearA

Clear all buffered console, JS error, and network entries.

Call this before navigating to a new page to get a clean baseline, so subsequent devtools_* calls only reflect the new page's activity.

devtools_enable_bidiA

Attach (or re-attach) WebDriver BiDi listeners to the running session.

Use if the session was opened with enable_bidi=False, or if listeners were lost after a page crash.

browser_screenshotA

Take a PNG screenshot for visual / layout / CSS diagnosis.

Capture the full page to spot broken layout, or pass a CSS selector to isolate a specific component (header, nav, modal…). The agent can use this to identify misaligned elements, invisible text, broken flex/grid layouts, or unstyled components.

devtools_computed_cssA

Return computed (final applied) CSS properties of an element.

Use this to understand why an element looks wrong: • Is it display:none or visibility:hidden? • What color / font is actually applied? • Is a CSS variable resolving correctly? • Are grid/flex dimensions what you expect?

Returns a dict of {property: computed_value}.

devtools_element_infoA

Return detailed info about a DOM element for debugging:

• outerHTML — the element's markup (first 4000 chars) • bounding_box — position and size on screen (x, y, width, height) • visible — whether the element is actually visible • in_viewport — whether it's within the visible scroll area • attributes — all HTML attributes • aria — ARIA role, name, label, disabled, hidden • child_count — number of child elements • text_content — visible text (first 500 chars)

Use this to diagnose elements that should be visible but aren't, or to understand the structure around a broken component.

devtools_css_variablesA

Return CSS custom properties (variables) defined on :root.

Helps diagnose theming issues: missing tokens, wrong colour values, variables that weren't loaded because a CSS file failed to fetch.

devtools_performanceA

Return page performance timing from the browser Navigation Timing API.

navigation — key milestones for the current page load: ttfb_ms — Time to First Byte (server latency) dom_loaded_ms — DOMContentLoaded (page parsed, defer scripts done) load_ms — full load event (all resources fetched) dns_ms — DNS lookup duration connect_ms — TCP/TLS connection duration request_ms — time from request sent to last response byte transfer_size — response body size in bytes

resources (when include_resources=True) — per-asset breakdown: name, type, duration_ms, transfer_size, start_time

Use this to identify slow pages, expensive assets, or server latency. Complements devtools_network_all which captures requests via BiDi listeners.

browser_get_titleA

Return the of the current page.

browser_get_urlA

Return the current URL.

browser_get_sourceA

Return the full HTML source of the current page.

browser_get_textA

Get visible text content of the page or a specific element.

browser_get_attributeA

Return the value of an HTML attribute on an element.

browser_clickC

Click an element.

browser_fillC

Type text into an input field.

browser_upload_fileA

Upload a local file through a element.

Works even when the file input is visually hidden (the common pattern of hiding the native input and styling a custom button over it). The file must exist on the machine running the MCP server.

browser_selectA

Select an in a dropdown.

browser_execute_jsA

Execute JavaScript and return the result as JSON (falls back to str for non-serialisable values).

browser_waitA

Wait until an element satisfies a condition: visible, clickable, present in DOM, or contains text.

browser_navigateA

Navigate to a URL in the existing session (keeps BiDi listeners active).

browser_backA

Navigate back.

browser_forwardB

Navigate forward.

browser_refreshA

Reload the current page.

browser_switch_frameB

Switch into an or back to the main document.

browser_scrollA

Scroll the page or scroll an element into view.

• Pass a CSS selector to scroll that element into view (smoothly). • Pass x/y to jump the page to absolute scroll coordinates. • Pass by=true with x/y to scroll relative to the current position (e.g. y=500 scrolls down 500 px). • No arguments scrolls to the top of the page.

browser_press_keyA

Send a keyboard key press to an element or the currently focused element.

Useful for submitting forms (enter), moving focus (tab), closing modals (escape), or triggering keyboard-driven UI components.

browser_hoverA

Move the mouse over an element (hover).

Triggers CSS :hover states and any mouseenter/mouseover event listeners — essential for dropdown menus, tooltips, and hover-activated controls.

browser_find_elementsA

Return a list of all elements matching a CSS selector.

Each entry contains: index, tag, text (first 200 chars), id, class, href, src, value, type, name, visible, and aria-label.

Useful for enumerating links, buttons, inputs, or any repeated component.

browser_accept_dialogA

Accept (click OK on) a JavaScript dialog: alert(), confirm(), or prompt().

Call this when a browser action triggers a dialog that blocks further interaction.

browser_dismiss_dialogA

Dismiss (click Cancel on) a JavaScript confirm() or prompt() dialog, or close an alert().

browser_get_cookiesA

Return all cookies for the current page as a list of dicts.

Each entry: name, value, domain, path, secure, httpOnly, expiry. Useful for inspecting authentication state or session tokens.

browser_set_cookieA

Set a cookie on the current page.

Useful for injecting auth tokens or session cookies without going through a login flow. The browser must already be on a page in the target domain.

browser_get_storageA

Read from localStorage or sessionStorage.

Returns all key→value pairs when no key is given, or {key: value} for a single key (value is null if the key does not exist).

Useful for inspecting auth tokens, cached API responses, feature flags, or any client-side state stored in web storage rather than cookies.

browser_set_storageA

Write a key→value pair to localStorage or sessionStorage.

Useful for injecting auth tokens, feature flags, or test fixtures directly into web storage without going through a login or setup flow.

browser_clear_storageA

Remove one key or clear all entries from localStorage or sessionStorage.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/VitexSoftware/mcp-server-webdriver'

If you have feedback or need assistance with the MCP directory API, please join our Discord server