The MCP Selenium Server is an implementation of the Model Context Protocol for Selenium WebDriver, allowing you to automate browser interactions through standardized MCP clients. It provides a comprehensive set of browser automation capabilities through a consistent API.
You can easily add this extension to Goose Desktop by copying and pasting this link into your browser's address bar:
goose://extension?cmd=npx&arg=-y&arg=%40angiejones%2Fmcp-selenium&id=selenium-mcp&name=Selenium%20MCP&description=automates%20browser%20interactions
Alternatively, you can add it manually with these settings:
Selenium MCP
automates browser interactions
npx -y @angiejones/mcp-selenium
For Claude Desktop or other MCP clients, add this configuration to your settings:
{
"mcpServers": {
"selenium": {
"command": "npx",
"args": ["-y", "@angiejones/mcp-selenium"]
}
}
}
If you use Smithery:
npx -y @smithery/cli install @angiejones/mcp-selenium --client claude
You can also install the package globally:
npm install -g @angiejones/mcp-selenium
Start the server by running:
mcp-selenium
The MCP server currently supports:
{
"tool": "start_browser",
"parameters": {
"browser": "chrome",
"options": {
"headless": true,
"arguments": ["--no-sandbox"]
}
}
}
Parameters:
browser
(required): Either "chrome" or "firefox"options
: Browser configuration options
headless
: Run browser without UI (boolean)arguments
: Additional browser-specific arguments{
"tool": "close_session",
"parameters": {}
}
{
"tool": "navigate",
"parameters": {
"url": "https://www.example.com"
}
}
Parameters:
url
(required): The URL to navigate to{
"tool": "find_element",
"parameters": {
"by": "id",
"value": "search-input",
"timeout": 5000
}
}
Parameters:
by
(required): Locator strategy ("id", "css", "xpath", "name", "tag", "class")value
(required): Value for the locatortimeout
: Maximum wait time in milliseconds (default: 10000){
"tool": "click_element",
"parameters": {
"by": "css",
"value": ".submit-button"
}
}
Parameters:
by
(required): Locator strategyvalue
(required): Value for the locatortimeout
: Maximum wait time in milliseconds (default: 10000){
"tool": "send_keys",
"parameters": {
"by": "name",
"value": "username",
"text": "testuser"
}
}
Parameters:
by
(required): Locator strategyvalue
(required): Value for the locatortext
(required): Text to entertimeout
: Maximum wait time in milliseconds (default: 10000){
"tool": "get_element_text",
"parameters": {
"by": "css",
"value": ".message"
}
}
Parameters:
by
(required): Locator strategyvalue
(required): Value for the locatortimeout
: Maximum wait time in milliseconds (default: 10000){
"tool": "hover",
"parameters": {
"by": "css",
"value": ".dropdown-menu"
}
}
Parameters:
by
(required): Locator strategyvalue
(required): Value for the locatortimeout
: Maximum wait time in milliseconds (default: 10000){
"tool": "drag_and_drop",
"parameters": {
"by": "id",
"value": "draggable",
"targetBy": "id",
"targetValue": "droppable"
}
}
Parameters:
by
(required): Locator strategy for source elementvalue
(required): Value for source locatortargetBy
(required): Locator strategy for target elementtargetValue
(required): Value for target locatortimeout
: Maximum wait time in milliseconds (default: 10000){
"tool": "double_click",
"parameters": {
"by": "css",
"value": ".editable-text"
}
}
Parameters:
by
(required): Locator strategyvalue
(required): Value for the locatortimeout
: Maximum wait time in milliseconds (default: 10000){
"tool": "right_click",
"parameters": {
"by": "css",
"value": ".context-menu-trigger"
}
}
Parameters:
by
(required): Locator strategyvalue
(required): Value for the locatortimeout
: Maximum wait time in milliseconds (default: 10000){
"tool": "press_key",
"parameters": {
"key": "Enter"
}
}
Parameters:
key
(required): Key to press (e.g., 'Enter', 'Tab', 'a'){
"tool": "upload_file",
"parameters": {
"by": "id",
"value": "file-input",
"filePath": "/path/to/file.pdf"
}
}
Parameters:
by
(required): Locator strategyvalue
(required): Value for the locatorfilePath
(required): Absolute path to the filetimeout
: Maximum wait time in milliseconds (default: 10000){
"tool": "take_screenshot",
"parameters": {
"outputPath": "/path/to/screenshot.png"
}
}
Parameters:
outputPath
(optional): Path to save the screenshot (returns base64 data if not provided)There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json
file so that it is available in all of your projects.
If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json
file.
To add a global MCP server go to Cursor Settings > MCP and click "Add new global MCP server".
When you click that button the ~/.cursor/mcp.json
file will be opened and you can add your server like this:
{
"mcpServers": {
"cursor-rules-mcp": {
"command": "npx",
"args": [
"-y",
"cursor-rules-mcp"
]
}
}
}
To add an MCP server to a project you can create a new .cursor/mcp.json
file or add it to the existing one. This will look exactly the same as the global MCP server example above.
Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.
The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.
You can also explictly ask the agent to use the tool by mentioning the tool name and describing what the function does.