Browser Automation · MODEL CONTEXT PROTOCOL
angiejones mcp selenium
An MCP implementation for Selenium WebDriver
WHAT IT CONNECTS
What angiejones mcp selenium gives an AI Agent
- Start browser sessions with customizable options
- Navigate to URLs
- Find elements using various locator strategies
- Click, type, and interact with elements
- Perform mouse actions (hover, drag and drop)
- Handle keyboard input
- Take screenshots
- Upload files
- Support for headless mode
- Chrome
- Firefox
- Name: `Selenium MCP`
- Description: `automates browser interactions`
- Command: `npx -y @angiejones/mcp-selenium`
- Clone the repository
- Install dependencies: `npm install`
- Run the server: `npm start`
- `browser` (required): Browser to launch
- Type: string
- Enum: ["chrome", "firefox"]
- `options`: Browser configuration options
- Type: object
- Properties:
- `headless`: Run browser in headless mode
- Type: boolean
- `arguments`: Additional browser arguments
- Type: array of strings
- `url` (required): URL to navigate to
- Type: string
- `by` (required): Locator strategy
- Type: string
- Enum: ["id", "css", "xpath", "name", "tag", "class"]
- `value` (required): Value for the locator strategy
- Type: string
- `timeout`: Maximum time to wait for element in milliseconds
- Type: number
- Default: 10000
- `by` (required): Locator strategy
- Type: string
- Enum: ["id", "css", "xpath", "name", "tag", "class"]
- `value` (required): Value for the locator strategy
- Type: string
- `timeout`: Maximum time to wait for element in milliseconds
- Type: number
- Default: 10000
- `by` (required): Locator strategy
- Type: string
- Enum: ["id", "css", "xpath", "name", "tag", "class"]
- `value` (required): Value for the locator strategy
- Type: string
- `text` (required): Text to enter into the element
- Type: string
- `timeout`: Maximum time to wait for element in milliseconds
- Type: number
- Default: 10000
- `by` (required): Locator strategy
- Type: string
- Enum: ["id", "css", "xpath", "name", "tag", "class"]
- `value` (required): Value for the locator strategy
- Type: string
- `timeout`: Maximum time to wait for element in milliseconds
- Type: number
- Default: 10000
- `by` (required): Locator strategy
- Type: string
- Enum: ["id", "css", "xpath", "name", "tag", "class"]
- `value` (required): Value for the locator strategy
- Type: string
- `timeout`: Maximum time to wait for element in milliseconds
- Type: number
- Default: 10000
- `by` (required): Locator strategy for source element
- Type: string
- Enum: ["id", "css", "xpath", "name", "tag", "class"]
- `value` (required): Value for the source locator strategy
- Type: string
- `targetBy` (required): Locator strategy for target element
- Type: string
- Enum: ["id", "css", "xpath", "name", "tag", "class"]
- `targetValue` (required): Value for the target locator strategy
- Type: string
- `timeout`: Maximum time to wait for elements in milliseconds
- Type: number
- Default: 10000
- `by` (required): Locator strategy
- Type: string
- Enum: ["id", "css", "xpath", "name", "tag", "class"]
- `value` (required): Value for the locator strategy
- Type: string
- `timeout`: Maximum time to wait for element in milliseconds
- Type: number
- Default: 10000
- `by` (required): Locator strategy
- Type: string
- Enum: ["id", "css", "xpath", "name", "tag", "class"]
- `value` (required): Value for the locator strategy
- Type: string
- `timeout`: Maximum time to wait for element in milliseconds
- Type: number
- Default: 10000
- `key` (required): Key to press (e.g., 'Enter', 'Tab', 'a', etc.)
- Type: string
- `by` (required): Locator strategy
- Type: string
- Enum: ["id", "css", "xpath", "name", "tag", "class"]
- `value` (required): Value for the locator strategy
- Type: string
- `filePath` (required): Absolute path to the file to upload
- Type: string
- `timeout`: Maximum time to wait for element in milliseconds
- Type: number
- Default: 10000
- `outputPath` (optional): Path where to save the screenshot. If not provided, returns base64 data.
- Type: string
SECURITY
An MCP listing is not a security review
An MCP server may receive model context, credentials, local files, or permission to call external systems. Review its code, requested environment variables, network behavior, package provenance, and maintenance status before connecting it to an agent.
README
Repository documentation
A Model Context Protocol (MCP) server for Selenium WebDriver — browser automation for AI agents.
Goose (Desktop)
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
Goose (CLI)
goose session --with-extension "npx -y @angiejones/mcp-selenium@latest"Claude Code
claude mcp add selenium -- npx -y @angiejones/mcp-selenium@latestCursor / Windsurf / other MCP clients
{
"mcpServers": {
"selenium": {
"command": "npx",
"args": ["-y", "@angiejones/mcp-selenium@latest"]
}
}
}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.
Tools
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) |
Resources
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 |
Development
git clone https://github.com/angiejones/mcp-selenium.git
cd mcp-selenium
npm installnpm testRequires Chrome + chromedriver on PATH. Tests run headless.
npx -y @smithery/cli install @angiejones/mcp-selenium --client claudenpm install -g @angiejones/mcp-selenium
mcp-seleniumMIT
COMMUNITY