mcp-server-webdriver
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FIREFOX_BINARY | No | Path to a custom Firefox executable | |
| GECKODRIVER_PATH | No | Absolute path to geckodriver binary (highest priority) | |
| GECKODRIVER_AUTO_INSTALL | No | Set to false to disable webdriver-manager fallback | true |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| 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
| Name | Description |
|---|---|
| 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):
|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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