Selenium MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SELENIUM_BROWSER | No | The default browser to use when launching a session. Example value: 'chrome'. | chrome |
| SELENIUM_HEADLESS | No | Controls whether the browser runs in headless mode by default. Set to 'false' to open visible windows, 'true' to run silently in the background. Defaults to 'true'. | 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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| launch_browserA | Launch a browser instance (Chrome, Firefox, Edge) with optional headless mode, viewport dimensions, proxy, and custom arguments. |
| close_browserA | Close the active Selenium browser session and free resources. |
| navigateA | Navigate the active browser to a specified URL. |
| get_current_urlA | Get current page URL and page title. |
| navigate_historyA | Perform browser navigation actions: back, forward, or refresh. |
| set_window_sizeA | Set browser window width and height in pixels. |
| click_elementC | Click an element matching selector strategy (css, xpath, id, name, text, partialText). |
| fill_elementA | Type text into an input or textarea element. |
| clear_elementA | Clear text from an input or textarea element. |
| hover_elementB | Hover mouse over a target element. |
| select_dropdownB | Select an option in a HTML dropdown by value, visible text, or index. |
| press_keyA | Send special keyboard keys (ENTER, TAB, ESCAPE, BACK_SPACE, ARROWS, etc.) to page or element. |
| get_page_contentA | Retrieve text, full HTML source, or interactive structure outline of current page. |
| find_elementsA | Find and inspect elements matching a selector, returning tag, text, attributes, and visibility. |
| get_element_attributeA | Retrieve specific attribute or property (e.g. href, src, value, class) from an element. |
| take_screenshotA | Take a screenshot of the current page viewport or a specific element and return PNG image data. |
| execute_scriptA | Execute arbitrary JavaScript code in the browser page context and return the result. |
| wait_for_elementB | Wait until an element satisfies condition (present, visible, clickable, invisible). |
| manage_tabsA | Manage browser tabs: list active tabs, switch tab, open new tab, or close tab. |
| manage_cookiesC | Manage browser cookies: get_all, get, set, delete, or delete_all. |
| switch_frameB | Switch execution context to an iframe, parent frame, or default document. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 21 tools
Each tool targets a distinct browser automation action: lifecycle, navigation, element interaction, query, and context management. Even similar tools like get_page_content, find_elements, and get_element_attribute are clearly separated by page-level, element-level, and attribute-level scope.
All tool names follow a consistent snake_case verb_noun pattern, such as launch_browser, click_elament, manage_tabs, and switch_frame. The single deviation, navigate_istory, still preserves the verb-object structure.
With 21 tools, the set falls into the 16-25 heavy range. While each tool represents a real Selenium operation, some could be consolidated (e.g., clear_element into fill_element), making the collection feel slightly over-scoped for an MCP server.
The tool surface covers the full browser lifecycle: launch, navigate, interact, query, and close, plus tabs, cookies, frames, wait conditions, and script execution. Missing advanced features like alert handling or drag-and-drop are workable via execute_cript or represent edge cases, but they are notable omissions.