A Model Context Protocol (MCP) server implementation for Selenium WebDriver, enabling browser automation through standardized MCP clients.
- 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
Copy and paste the link below into a browser address bar to add this extension to goose desktop:
goose://extension?cmd=npx&arg=-y&arg=%40angiejones%2Fmcp-selenium&id=selenium-mcp&name=Selenium%20MCP&description=automates%20browser%20interactions - Name:
Selenium MCP - Description:
automates browser interactions - Command:
npx -y @angiejones/mcp-selenium
{"mcpServers":{"selenium":{"command": "npx", "args": ["-y", "@angiejones/mcp-selenium"] } } }To work on this project:
- Clone the repository
- Install dependencies:
npm install - Run the server:
npm start
To install MCP Selenium for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @angiejones/mcp-selenium --client claudenpm install -g @angiejones/mcp-seleniumStart the server by running:
mcp-seleniumOr use with NPX in your MCP configuration:
{"mcpServers":{"selenium":{"command": "npx", "args": [ "-y", "@angiejones/mcp-selenium" ] } } }Launches a browser session.
Parameters:
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
Example:
{"tool": "start_browser", "parameters":{"browser": "chrome", "options":{"headless": true, "arguments": ["--no-sandbox"] } } }Navigates to a URL.
Parameters:
url(required): URL to navigate to- Type: string
Example:
{"tool": "navigate", "parameters":{"url": "https://www.example.com" } }Finds an element on the page.
Parameters:
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
Example:
{"tool": "find_element", "parameters":{"by": "id", "value": "search-input", "timeout": 5000 } }Clicks an element.
Parameters:
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
Example:
{"tool": "click_element", "parameters":{"by": "css", "value": ".submit-button" } }Sends keys to an element (typing).
Parameters:
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
Example:
{"tool": "send_keys", "parameters":{"by": "name", "value": "username", "text": "testuser" } }Gets the text() of an element.
Parameters:
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
Example:
{"tool": "get_element_text", "parameters":{"by": "css", "value": ".message" } }Moves the mouse to hover over an element.
Parameters:
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
Example:
{"tool": "hover", "parameters":{"by": "css", "value": ".dropdown-menu" } }Drags an element and drops it onto another element.
Parameters:
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
Example:
{"tool": "drag_and_drop", "parameters":{"by": "id", "value": "draggable", "targetBy": "id", "targetValue": "droppable" } }Performs a double click on an element.
Parameters:
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
Example:
{"tool": "double_click", "parameters":{"by": "css", "value": ".editable-text" } }Performs a right click (context click) on an element.
Parameters:
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
Example:
{"tool": "right_click", "parameters":{"by": "css", "value": ".context-menu-trigger" } }Simulates pressing a keyboard key.
Parameters:
key(required): Key to press (e.g., 'Enter', 'Tab', 'a', etc.)- Type: string
Example:
{"tool": "press_key", "parameters":{"key": "Enter" } }Uploads a file using a file input element.
Parameters:
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
Example:
{"tool": "upload_file", "parameters":{"by": "id", "value": "file-input", "filePath": "/path/to/file.pdf" } }Captures a screenshot of the current page.
Parameters:
outputPath(optional): Path where to save the screenshot. If not provided, returns base64 data.- Type: string
Example:
{"tool": "take_screenshot", "parameters":{"outputPath": "/path/to/screenshot.png" } }Closes the current browser session and cleans up resources.
Parameters: None required
Example:
{"tool": "close_session", "parameters":{} }MIT

