Bridges AI assistants to Selenium WebDriver for full browser automation through MCP. You get the complete toolset: launch Chrome, Firefox, Safari, or Edge, navigate and interact with pages, find and click elements, type text, manage cookies, switch between windows, take screenshots, and execute JavaScript. Built with TypeScript and Zod validation, it exposes around 30+ discrete tools covering everything from basic navigation (browser_navigate, browser_click, browser_type) to advanced operations like drag and drop, file uploads, and wait strategies. Reach for this when you need Claude or another AI to drive actual browser sessions for testing, scraping, or automating complex web workflows that require JavaScript rendering and user interaction.
Public tool metadata for what this MCP can expose to an agent.
browser_openOpen a new browser session2 paramsOpen a new browser session
browserstringchrome · firefox · edge · safarioptionsobjectbrowser_navigateNavigate to a URL1 paramsNavigate to a URL
urlstringbrowser_navigate_backNavigate back in the browserNavigate back in the browser
No parameter schema in public metadata yet.
browser_navigate_forwardNavigate forward in the browserNavigate forward in the browser
No parameter schema in public metadata yet.
browser_titleGet the current page titleGet the current page title
No parameter schema in public metadata yet.
browser_get_urlGet the current page URLGet the current page URL
No parameter schema in public metadata yet.
browser_get_page_sourceGet the current page sourceGet the current page source
No parameter schema in public metadata yet.
browser_maximizeMaximize the browser windowMaximize the browser window
No parameter schema in public metadata yet.
browser_resizeResize the browser window2 paramsResize the browser window
widthnumberheightnumberbrowser_refreshRefresh the current pageRefresh the current page
No parameter schema in public metadata yet.
browser_switch_to_windowSwitch to a different browser window1 paramsSwitch to a different browser window
windowHandlestringbrowser_switch_to_original_windowSwitches back to the original browser windowSwitches back to the original browser window
No parameter schema in public metadata yet.
browser_switch_to_window_by_titleSwitch to a window by its title1 paramsSwitch to a window by its title
titlestringbrowser_switch_window_by_indexSwitch to a window by its index1 paramsSwitch to a window by its index
indexnumberbrowser_switch_to_window_by_urlSwitch to a window by its URL1 paramsSwitch to a window by its URL
urlstringbrowser_closeClose the current browser sessionClose the current browser session
No parameter schema in public metadata yet.
browser_find_elementFind an element3 paramsFind an element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_find_elementsFind multiple elements3 paramsFind multiple elements
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_clickPerform a click on an element3 paramsPerform a click on an element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_typeType into an editable field4 paramsType into an editable field
bystringid · css · xpath · name · tag · classtextstringvaluestringtimeoutnumberbrowser_clearClears the value of an input element3 paramsClears the value of an input element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_get_element_textGets the text of an element3 paramsGets the text of an element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_get_attributeGets the value of an attribute from an element4 paramsGets the value of an attribute from an element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberattributestringbrowser_element_is_displayedChecks if an element is displayed3 paramsChecks if an element is displayed
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_element_is_enabledChecks if an element is enabled3 paramsChecks if an element is enabled
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_element_is_selectedChecks if an element is selected3 paramsChecks if an element is selected
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_switch_to_frameSwitches to an iframe element3 paramsSwitches to an iframe element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_switch_to_default_contentSwitches to the default contentSwitches to the default content
No parameter schema in public metadata yet.
browser_switch_to_parent_frameSwitches to the parent iframeSwitches to the parent iframe
No parameter schema in public metadata yet.
browser_file_uploadUploads a file using a file input element4 paramsUploads a file using a file input element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberfilePathstringbrowser_hoverHover over an element3 paramsHover over an element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_wait_for_elementWait for an element to be present3 paramsWait for an element to be present
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_drag_and_dropPerform drag and drop between two elements5 paramsPerform drag and drop between two elements
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumbertargetBystringid · css · xpath · name · tag · classtargetValuestringbrowser_double_clickPerform double click on an element3 paramsPerform double click on an element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_right_clickPerform right click (context click) on an element3 paramsPerform right click (context click) on an element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_select_dropdown_by_textSelect dropdown by visible text4 paramsSelect dropdown by visible text
bystringid · css · xpath · name · tag · classtextstringvaluestringtimeoutnumberbrowser_select_dropdown_by_valueSelect dropdown by value3 paramsSelect dropdown by value
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_key_pressPress a key on the keyboard1 paramsPress a key on the keyboard
keystringbrowser_execute_scriptExecute JavaScript in the context of the current page1 paramsExecute JavaScript in the context of the current page
scriptstringbrowser_scroll_to_elementScroll to an element3 paramsScroll to an element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_scroll_to_topScroll to the top of the pageScroll to the top of the page
No parameter schema in public metadata yet.
browser_scroll_to_bottomScroll to the bottom of the pageScroll to the bottom of the page
No parameter schema in public metadata yet.
browser_scroll_to_coordinatesScroll to specific coordinates2 paramsScroll to specific coordinates
xnumberynumberbrowser_scroll_by_pixelsScroll by a specific number of pixels2 paramsScroll by a specific number of pixels
xnumberynumberbrowser_select_checkboxSelect a checkbox3 paramsSelect a checkbox
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_unselect_checkboxUnselect a checkbox3 paramsUnselect a checkbox
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_submit_formSubmit a form3 paramsSubmit a form
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_focus_elementFocus on a specific element3 paramsFocus on a specific element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_blur_elementRemove focus from a specific element3 paramsRemove focus from a specific element
bystringid · css · xpath · name · tag · classvaluestringtimeoutnumberbrowser_screenshotTake a screenshot of the current page1 paramsTake a screenshot of the current page
outputPathstringbrowser_get_cookiesGet all cookiesGet all cookies
No parameter schema in public metadata yet.
browser_get_cookie_by_nameGet a cookie by name1 paramsGet a cookie by name
namestringbrowser_add_cookie_by_nameAdd a cookie to the browser2 paramsAdd a cookie to the browser
namestringvaluestringbrowser_set_cookie_objectSet a cookie in the browser1 paramsSet a cookie in the browser
cookiestringbrowser_delete_cookieDelete a cookie from the browser1 paramsDelete a cookie from the browser
namestringbrowser_delete_cookiesDelete cookies from the browserDelete cookies from the browser
No parameter schema in public metadata yet.
This is a server implementation that bridges the gap between MCP clients (AI assistants) and Selenium WebDriver. It exposes Selenium WebDriver's functionalities as MCP tools, allowing AI models to utilize them for tasks like:
In essence, the selenium webdriver mcp setup allows AI assistants to leverage the power of Selenium Webdriver for web automation, by communicating with a dedicated Selenium MCP server via the Model Context Protocol. This facilitates tasks such as automated web interactions, testing, and data extraction, all controlled by AI.
A Model Context Protocol (MCP) server for Selenium that provides comprehensive Selenium WebDriver automation tools for AI assistants and applications. This server enables automated web browser interactions, testing, and scraping through a standardized interface.
Built with TypeScript and modern ES modules, it offers type-safe browser automation capabilities through the Model Context Protocol.
Configure your MCP client to connect to the Selenium server:
{
"servers": {
"selenium-mcp": {
"command": "npx",
"args": ["-y", "selenium-webdriver-mcp@latest"]
}
}
}
Update your mcp.json in VS Code with below configuration
NOTE: If you're new to MCP servers, follow this link Use MCP servers in VS Code
{
"servers": {
"selenium-mcp": {
"command": "npx",
"args": [
"-y",
"selenium-webdriver-mcp@latest"
],
"type": "stdio"
}
},
"inputs": []
}
{
"servers": {
"Selenium": {
"url": "https://smithery.ai/server/@pshivapr/selenium-mcp",
"type": "http"
}
},
"inputs": []
}
After installation, the Selenium MCP server will be available for use with your GitHub Copilot agent in VS Code.
# For VS Code
code --add-mcp '{\"name\":\"selenium-mcp\",\"command\": \"npx\",\"args\": [\"selenium-webdriver-mcp@latest\"]}'
# For VS Code Insiders
vscode-insiders --add-mcp '{\"name\":\"selenium-mcp\",\"command\": \"npx\",\"args\": [\"selenium-webdriver-mcp@latest\"]}'
Using npm:
npm install -g selenium-webdriver-mcp@latest
Using Smithery
To install Selenium MCP for Claude Desktop automatically via
npx @smithery/cli install @pshivapr/selenium-mcp --client claude
Add to your Claude Desktop configuration:
{
"mcpServers": {
"selenium-mcp": {
"command": "npx",
"args": ["-y", "selenium-webdriver-mcp@latest"]
}
}
}

An example prompt to start AI Agent interaction:
Using selenium mcp tools, navigate to <https://parabank.parasoft.com/> click the 'Register' link and signup using dynamic test data and click register. Then generate selenium tests in <YOUR_FAVOURITE_PROGRAMMING_LANGUAGE> using pom, create tests using cucumber features, steps and execute the tests.
Note: For more prompts, look at examples directory of the project
| Tool | Description | Parameters |
|---|---|---|
browser_open | Open a new browser session | browser, options |
browser_navigate | Navigate to a URL | url |
browser_navigate_back | Navigate back in history | None |
browser_navigate_forward | Navigate forward in history | None |
browser_title | Get the current page title | None |
browser_refresh | Refresh the current page | None |
browser_get_url | Get the current page URL | None |
browser_get_page_source | Get the current page HTML source | None |
browser_maximize | Maximize the browser window | None |
browser_resize | Resize browser window | width, height |
browser_close | Close current browser session | None |
| Tool | Description | Parameters |
|---|---|---|
browser_get_cookies | Get all cookies from the current browser session | None |
browser_get_cookie_by_name | Get a specific cookie by name | cookie (cookie name) |
browser_add_cookie_by_name | Add a new cookie to the browser | cookie (cookie name), value |
browser_set_cookie_object | Set a cookie object in the browser | cookie (cookie object as string) |
browser_delete_cookie | Delete a specific cookie by name | value (cookie name to delete) |
browser_delete_cookies | Delete all cookies from the current browser session | None |
| Tool | Description | Parameters |
|---|---|---|
browser_switch_to_window | Switch to a different browser window by handle | windowHandle |
browser_switch_to_original_window | Switch back to the original browser window | None |
browser_switch_to_window_by_title | Switch to a window by its page title | title |
browser_switch_window_by_index | Switch to a window by its index position | index |
browser_switch_to_window_by_url | Switch to a window by its URL | url |
| Tool | Description | Parameters |
|---|---|---|
browser_find_element | Find an element on the page | by, value, timeout |
browser_find_elements | Find multiple elements on the page | by, value, timeout |
browser_click | Click on an element | by, value, timeout |
browser_type | Type text into an element | by, value, text, timeout |
browser_get_element_text | Get text content of element | by, value, timeout |
browser_file_upload | Upload file via input element | by, value, filePath, timeout |
browser_clear | Clear text from an element | by, value, timeout |
browser_get_attribute | Get element attribute value | by, value, attribute, timeout |
| Tool | Description | Parameters |
|---|---|---|
browser_element_is_displayed | Check if an element is visible on the page | by, value, timeout |
browser_element_is_enabled | Check if an element is enabled for interaction | by, value, timeout |
browser_element_is_selected | Check if an element is selected (checkboxes, radio buttons) | by, value, timeout |
| Tool | Description | Parameters |
|---|---|---|
browser_switch_to_frame | Switch to an iframe element | by, value, timeout |
browser_switch_to_parent_frame | Switch to the parent frame (from nested iframe) | None |
browser_switch_to_default_content | Switch back to the main page content | None |
| Tool | Description | Parameters |
|---|---|---|
browser_hover | Hover over an element | by, value, timeout |
browser_double_click | Double-click on an element | by, value, timeout |
browser_right_click | Right-click (context menu) | by, value, timeout |
browser_drag_and_drop | Drag from source to target | by, value, targetBy, targetValue, timeout |
browser_wait_for_element | Wait for element to appear | by, value, timeout |
browser_execute_script | Execute JavaScript code | script, args |
browser_screenshot | Take a screenshot | filename (optional) |
browser_select_dropdown_by_text | Select dropdown option by visible text | by, value, text, timeout |
browser_select_dropdown_by_value | Select dropdown option by value | by, value, dropdownValue, timeout |
browser_key_press | Press a keyboard key in the browser | key, timeout |
| Tool | Description | Parameters |
|---|---|---|
browser_scroll_to_element | Scroll to bring an element into view | by, value, timeout |
browser_scroll_to_top | Scroll to the top of the page | None |
browser_scroll_to_bottom | Scroll to the bottom of the page | None |
browser_scroll_to_coordinates | Scroll to specific coordinates | x, y |
browser_scroll_by_pixels | Scroll by specified number of pixels | x, y |
| Tool | Description | Parameters |
|---|---|---|
browser_select_checkbox | Select/check a checkbox | by, value, timeout |
browser_unselect_checkbox | Unselect/uncheck a checkbox | by, value, timeout |
browser_submit_form | Submit a form element | by, value, timeout |
browser_focus_element | Focus on a specific element | by, value, timeout |
browser_blur_element | Remove focus from a specific element | by, value, timeout |
id: Find by element IDcss: Find by CSS selectorxpath: Find by XPath expressionname: Find by name attributetag: Find by HTML tag nameclass: Find by CSS class namegit clone https://github.com/pshivapr/selenium-mcp.git
cd selenium-mcp
npm install
npm run build
npm start
npm run dev
node dist/index.js
After building, you can use the server as a global command:
npx selenium-webdriver-mcp@latest
MIT License - see LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)YOUR_API_KEYsecretYour API key for the service
therealtimex/browser-use
jae-jae/fetcher-mcp
merajmehrabi/puppeteer-mcp-server
com.thenextgennexus/playwright-mcp-server
saik0s/mcp-browser-use