MCP server
by angiejones
Automate web browser actions efficiently using Selenium WebDriver for robust testing with Selenium on Python and seamles
Automates web browsers through Selenium WebDriver, allowing AI agents to click buttons, fill forms, navigate pages, and interact with websites programmatically.
Selenium is a community-built MCP server published by angiejones that provides AI assistants with tools and capabilities via the Model Context Protocol. Automate web browser actions efficiently using Selenium WebDriver for robust testing with Selenium on Python and seamles It is categorized under browser automation. This server exposes 14 tools that AI clients can invoke during conversations and coding sessions.
You can install Selenium in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.
MIT
Selenium is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.
Fetch and extract information from websites automatically
Example
Research competitor pricing, scrape product reviews, monitor news mentions
Automate 5-10 hours/week of manual web research
Track website changes, new content, price updates
Example
Monitor competitor blog for new posts, track stock availability, watch for pricing changes
Stay informed without manual checking, never miss important updates
Extract structured data from multiple websites
Example
Compile product listings from 10 e-commerce sites, aggregate job postings, collect real estate data
Build datasets 100x faster than manual copying
Share your MCP server with the developer community
I recommend Selenium for teams standardizing on MCP; the explainx.ai page compares cleanly with sibling servers.
We evaluated Selenium against two servers with overlapping tools; this profile had the clearer scope statement.
I recommend Selenium for teams standardizing on MCP; the explainx.ai page compares cleanly with sibling servers.
Strong directory entry: Selenium surfaces stars and publisher context so we could sanity-check maintenance before adopting.
Useful MCP listing: Selenium is the kind of server we cite when onboarding engineers to host + tool permissions.
Selenium is a well-scoped MCP server in the explainx.ai directory — install snippets and categories matched our Claude Code setup.
Selenium reduced integration guesswork — categories and install configs on the listing matched the upstream repo.
Selenium is among the better-indexed MCP projects we tried; the explainx.ai summary tracks the official description.
We wired Selenium into a staging workspace; the listing’s GitHub and npm pointers saved time versus hunting across READMEs.
Selenium has been reliable for tool-calling workflows; the MCP profile page is a good permalink for internal docs.
showing 1-10 of 52
A Model Context Protocol (MCP) server for Selenium WebDriver — browser automation for AI agents.
<a href="https://glama.ai/mcp/servers/@angiejones/mcp-selenium"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@angiejones/mcp-selenium/badge" alt="Selenium MCP server" /> </a>Paste into your browser address bar:
goose://extension?cmd=npx&arg=-y&arg=%40angiejones%2Fmcp-selenium%40latest&id=selenium-mcp&name=Selenium%20MCP&description=automates%20browser%20interactions
</details>
<details>
<summary><strong>Goose (CLI)</strong></summary>
goose session --with-extension "npx -y @angiejones/mcp-selenium@latest"
</details>
<details>
<summary><strong>Claude Code</strong></summary>
claude mcp add selenium -- npx -y @angiejones/mcp-selenium@latest
</details>
<details>
<summary><strong>Cursor / Windsurf / other MCP clients</strong></summary>
{
"mcpServers": {
"selenium": {
"command": "npx",
"args": ["-y", "@angiejones/mcp-selenium@latest"]
}
}
}
</details>
Tell the AI agent of your choice:
Open Chrome, go to github.com/angiejones, and take a screenshot.
The agent will call Selenium's APIs to start_browser, navigate, and take_screenshot. No manual scripting or explicit directions needed.
Chrome, Firefox, Edge, and Safari.
Safari note: Requires macOS. Run
sudo safaridriver --enableonce and enable "Allow Remote Automation" in Safari → Settings → Developer. No headless mode.
Launches a browser session.
| Parameter | Type | Required | Description |
|---|---|---|---|
| browser | string | Yes | chrome, firefox, edge, or safari |
| options | object | No | { headless: boolean, arguments: string[] } |
Navigates to a URL.
| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL to navigate to |
Performs a mouse action on an element.
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | Yes | click, doubleclick, rightclick, or hover |
| by | string | Yes | Locator strategy: id, css, xpath, name, tag, class |
| value | string | Yes | Value for the locator strategy |
| timeout | number | No | Max wait in ms (default: 10000) |
Types text into an element. Clears the field first.
| Parameter | Type | Required | Description |
|---|---|---|---|
| by | string | Yes | Locator strategy |
| value | string | Yes | Locator value |
| text | string | Yes | Text to enter |
| timeout | number | No | Max wait in ms (default: 10000) |
Gets the text content of an element.
| Parameter | Type | Required | Description |
|---|---|---|---|
| by | string | Yes | Locator strategy |
| value | string | Yes | Locator value |
| timeout | number | No | Max wait in ms (default: 10000) |
Gets an attribute value from an element.
| Parameter | Type | Required | Description |
|---|---|---|---|
| by | string | Yes | Locator strategy |
| value | string | Yes | Locator value |
| attribute | string | Yes | Attribute name (e.g., href, value, class) |
| timeout | number | No | Max wait in ms (default: 10000) |
Presses a keyboard key.
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | string | Yes | Key to press (e.g., Enter, Tab, a) |
Uploads a file via a file input element.
| Parameter | Type | Required | Description |
|---|---|---|---|
| by | string | Yes | Locator strategy |
| value | string | Yes | Locator value |
| filePath | string | Yes | Absolute path to the file |
| timeout | number | No | Max wait in ms (default: 10000) |
Captures a screenshot of the current page.
| Parameter | Type | Required | Description |
|---|---|---|---|
| outputPath | string | No | Save path. If omitted, returns base64 image data. |
Closes the current browser session. No parameters.
Executes JavaScript in the browser. Use for advanced interactions not covered by other tools (e.g., drag and drop, scrolling, reading computed styles, DOM manipulation).
| Parameter | Type | Required | Description |
|---|---|---|---|
| script | string | Yes | JavaScript code to execute |
| args | array | No | Arguments accessible via arguments[0], etc. |
Manages browser windows and tabs.
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | Yes | list, switch, switch_latest, or close |
| handle | string | No | Window handle (required for switch) |
Switches focus to a frame or back to the main page.
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | Yes | switch or default |
| by | string | No | Locator strategy (for switch) |
| value | string | No | Locator value (for switch) |
| index | number | No | Frame index, 0-based (for switch) |
| timeout | number | No | Max wait in ms (default: 10000) |
Handles browser alert, confirm, or prompt dialogs.
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | Yes | accept, dismiss, get_text, or send_text |
| text | string | No | Text to send (required for send_text) |
| timeout | number | No | Max wait in ms (default: 5000) |
Adds a cookie. Browser must be on a page from the cookie's domain.
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Cookie name |
| value | string | Yes | Cookie value |
| domain | string | No | Cookie domain |
| path | string | No | Cookie path |
| secure | boolean | No | Secure flag |
| httpOnly | boolean | No | HTTP-only flag |
| expiry | number | No | Unix timestamp |
Gets cookies. Returns all or a specific one by name.
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | No | Cookie name. Omit for all cookies. |
Deletes cookies. Deletes all or a specific one by name.
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | No | Cookie name. Omit to delete all. |
Gets browser diagnostics captured via WebDriver BiDi (auto-enabled when supported).
| Parameter | Type | Required | Description |
|---|---|---|---|
| type | string | Yes | console, errors, or network |
| clear | boolean | No | Clear buffer after returning (default: false) |
MCP resources provide read-only data that clients can access without calling a tool.
Returns the current browser session status (active session ID or "no active session").
| Property | Value |
|---|---|
| MIME type | text/plain |
| Requires browser | No |
Returns an accessibility tree snapshot of the current page — a compact, structured JSON representation of interactive elements and text content. Much smaller than full HTML. Useful for understanding page layout and finding elements to interact with.
| Property | Value |
|---|---|
| MIME type | application/json |
| Requires browser | Yes |
git clone https://github.com/angiejones/mcp-selenium.git
cd mcp-selenium
npm install
npm test
Requires Chrome + chromedriver on PATH. Tests run headless.
npx -y @smithery/cli install @angiejones/mcp-selenium --client claude
npm install -g @angiejones/mcp-selenium
mcp-selenium
</details>
MIT
Interact with services that don't offer APIs
Example
Check form submissions, validate website functionality, test user flows
Automate interactions with any website, even without API
Prerequisites
Time Estimate
20-40 minutes including configuration and testing
Steps
Troubleshooting
✓ Do
✗ Don't
💡 Pro Tips
Architecture
MCP server handles HTTP requests, HTML parsing, JavaScript rendering (if headless browser), and returns structured data to Claude.
Protocols
Compatibility
✓ Use when
Use for research automation, content monitoring, data aggregation from multiple sources, and when official APIs don't exist. Best for read-only information gathering.
✗ Avoid when
Avoid for sites with APIs (use API instead), sites that explicitly forbid scraping, when data is copyrighted, or for login-required content without proper authorization.