SeleniumBase MCP
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| start_browserA | Launch a Pure CDP Mode browser session. Must be called before any other tool. The browser is driven entirely over CDP (no WebDriver), which is SeleniumBase's most stealth/bot-detection-resistant mode. Args: url: Optional URL to open immediately on launch. headless: Run without a visible window. incognito: Launch in a private/incognito window. guest: Launch in Chrome guest mode. proxy: Proxy string, e.g. "USER:PASS@SERVER:PORT" or "SERVER:PORT". ad_block: Block ads. |
| close_browserA | Close the browser and end the session. |
| navigateA | Navigate to the given URL in the web browser.
If the URL doesn't start with a protocol (eg: |
| reload_pageA | Reload the current page. Same as clicking the Reload button in the web browser. By default, ignores the browser cache on reload. |
| go_backA | Go back one page in browser history. Same as clicking the Back button in the web browser. |
| go_forwardA | Go forward one page in browser history. Same as clicking the Forward button in the web browser. |
| get_navigation_historyB | Get the browser's navigation history. |
| get_current_urlA | Get the URL of the current page. |
| get_titleA | Get the title of the current page. |
| get_originA | Get the origin (scheme + host) of the current page. |
| find_element_infoA | Find one element and return its tag name, text, and outer HTML. Args: selector: CSS selector, or text to search for (CDP mode can match elements by visible text as well as by selector). best_match: When matching by text and multiple elements qualify, pick the one whose text length is closest to the search text. timeout: Seconds to wait for the element to appear. |
| find_all_infoA | Find all matching elements and return tag name + text for each. |
| get_textA | Get the visible text within an element (default: whole page body). Raises an exception if the element isn't found within the default timeout. |
| get_html_sourceC | Get the full HTML source of the current page. |
| get_element_htmlB | Get the outer HTML of a specific element. |
| get_element_attributeA | Get one attribute's value from an element. |
| get_element_attributesB | Get all attributes of an element as a dict. |
| find_elements_countB | Get the count of how many elements on the page match the selector. |
| is_element_presentB | Return whether an element matching the selector exists in the DOM. |
| is_element_visibleC | Return whether an element matching the selector is visible. |
| is_text_visibleC | Return whether the specific text is visible within an element. |
| get_all_urlsB | Get all linked URLs (a, link, img, script, meta) on the page. |
| clickA | Click an element matched by a CSS selector (or by text, e.g.
'a:contains("Sign in")').
If no |
| click_if_visibleA | Click an element only if it's currently visible; no-op otherwise.
If a |
| click_visible_elementsA | Click every currently-visible element matching a selector, in order (e.g. checking every checkbox on a page). limit=0 means no limit. |
| click_nth_elementB | Click the Nth element (1-indexed) matching a selector. |
| click_linkA | Click a link ( tag) by its visible text. |
| type_textA | Clear a field and type text into it.
If no |
| send_keysA | Send keystrokes to an element without clearing it first.
If no |
| set_valueA | Set an input's value directly (e.g. for sliders, fast form fills).
If no |
| clear_inputA | Clear an input field.
If no |
| submitB | Submit a form via a selector inside it. |
| select_option_by_textA | Select a dropdown option by its visible text. Raises an exception if the element or option aren't found within the default timeout, which is 7 seconds. |
| select_option_by_valueA | Select a dropdown option by its value attribute. Raises an exception if the element or option aren't found within the default timeout, which is 7 seconds. |
| select_option_by_indexA | Select a dropdown option by its 0-based index. Raises an exception if the element or option aren't found within the default timeout, which is 7 seconds. |
| focusB | Move focus to an element. Raises an exception if the element isn't found within the default timeout. |
| highlightA | Briefly highlight an element (useful when narrating actions on a visible/headed browser). Raises an exception if the element isn't found within the default timeout. |
| nested_clickA | Click an element nested inside another (e.g. inside an iframe). Raises an exception if the element isn't found within the default timeout. |
| wait_for_element_presentA | Wait until the element is present in the DOM.
If no |
| wait_for_element_visibleA | Wait until the element is visible on the page.
If no |
| wait_for_element_not_visibleA | Wait until an element is no longer visible on the page.
If no |
| wait_for_element_absentA | Wait until an element is removed from the DOM.
If no |
| wait_for_textA | Wait until the text substring appears within an element.
If no |
| assert_elementA | Assert that an element is present in the DOM.
If no |
| assert_element_visibleB | Assert that an element is visible on the page.
If no |
| assert_textA | Assert that the text substring appears within the given element
(with the matching selector) in the given timeout (seconds),
with leading and trailing whitespace automatically ignored.
If no |
| assert_exact_textA | Assert that the text matches the element's text exactly
(with leading/trailing whitespace automatically ignored)
in the given timeout (seconds).
If no |
| assert_titleA | Assert that the title matches the page title exactly, with leading and trailing whitespace ignored. Raises an exception if the expected title doesn't match the actual title within 7 seconds. |
| assert_urlA | Assert that the url matches the current URL exactly. Raises an exception if the expected url doesn't match the actual url within 7 seconds. |
| assert_url_containsA | Assert that the current URL contains the given substring. Raises an exception if the expected substring isn't found in the actual url within 7 seconds. |
| get_all_cookiesA | Get all cookies for the current session. |
| clear_cookiesB | Clear all cookies. |
| save_cookiesC | Save current cookies to a file. |
| load_cookiesB | Load cookies from a previously saved file. |
| get_local_storage_itemB | Get a value from the page's localStorage. |
| set_local_storage_itemA | Set a value in the page's localStorage. |
| get_session_storage_itemB | Get a value from the page's sessionStorage. |
| set_session_storage_itemA | Set a value in the page's sessionStorage. |
| scroll_into_viewC | Scroll an element into view. |
| scroll_to_topA | Scroll to the top of the page. |
| scroll_to_bottomA | Scroll to the bottom of the page. |
| scroll_upC | Scroll up by a relative amount. |
| scroll_downB | Scroll down by a relative amount. |
| get_window_rectA | Get the current window's position and size. |
| set_window_rectA | Set the current window's position and size. |
| maximizeA | Maximize the browser window. |
| minimizeB | Minimize the browser window. |
| open_new_tabA | Open a new browser tab, optionally navigating and switching to it. |
| switch_to_tabA | Switch to a tab by its index (as returned by get_tabs). |
| switch_to_newest_tabA | Switch to the most recently opened tab. |
| close_active_tabA | Close the currently active tab. |
| get_tabs_countA | Get how many tabs are currently open. |
| solve_captchaB | Attempt to solve a captcha (e.g. Cloudflare Turnstile) on the page. |
| save_screenshotC | Save a screenshot of the current page. |
| save_page_sourceB | Save the current page's HTML source to a file. |
| save_as_pdfB | Print the current page to a PDF file. |
| evaluateA | Evaluate a JavaScript expression in the page context and return the result. Equivalent to execute_script. This method can run any arbitrary JavaScript on any site, so take any necessary precautions to prevent AI harnesses from running scripts that you don't want them to run. |
| sleepA | Pause execution for a number of seconds. |
| get_user_agentA | Get the browser's current user agent string. |
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/seleniumbase/SeleniumBase'
If you have feedback or need assistance with the MCP directory API, please join our Discord server