{"_id":"@iosifnicolae22/mcp-selenium","_rev":"4-65a2366b67cec0b8ab28c10e422c5e26","name":"@iosifnicolae22/mcp-selenium","dist-tags":{"latest":"1.2.4"},"versions":{"1.1.0":{"name":"@iosifnicolae22/mcp-selenium","version":"1.1.0","keywords":["selenium","webdriver","mcp","modelcontextprotocol","automation","browser-automation"],"author":{"name":"SirBlobby"},"license":"MIT","_id":"@iosifnicolae22/mcp-selenium@1.1.0","maintainers":[{"name":"iosifnicolae22","email":"iosifnicolae2@gmail.com"}],"homepage":"https://github.com/SirBlobby/mcp-selenium#readme","bugs":{"url":"https://github.com/SirBlobby/mcp-selenium/issues"},"bin":{"mcp-selenium":"dist/bin/mcp-selenium.js"},"dist":{"shasum":"1a7397333b07f578ed16ecdb1dd0113673f4aa0a","tarball":"https://registry.npmjs.org/@iosifnicolae22/mcp-selenium/-/mcp-selenium-1.1.0.tgz","fileCount":22,"integrity":"sha512-3QeBqBZwPB2pPTpkPelUi8SNsfmklPqAE6fgXXowXFfAFJKJQV/owpBhzSoseaj8GMNx2A6skOMds20XaegDdw==","signatures":[{"sig":"MEYCIQCULYc2NlF2W5FMcfVFbEBgrNHFZTqQa8jaqlCYn5k48wIhAMPKOXlpxe6tvFUZhagNdKzcQe0jdKhEIgPRoYLeOWc4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121139},"main":"dist/src/server.js","type":"module","gitHead":"87b4f29141a8068409615cf04f54ebdcf3a8f6bc","scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf dist","start":"node dist/src/server.js"},"_npmUser":{"name":"iosifnicolae22","email":"iosifnicolae2@gmail.com"},"repository":{"url":"git+https://github.com/SirBlobby/mcp-selenium.git","type":"git"},"_npmVersion":"10.9.2","description":"Selenium WebDriver MCP Server","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.76","selenium-webdriver":"^4.34.0","@modelcontextprotocol/sdk":"^1.16.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.14","@types/selenium-webdriver":"^4.1.28"},"_npmOperationalInternal":{"tmp":"tmp/mcp-selenium_1.1.0_1754736442753_0.7081376536652622","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@iosifnicolae22/mcp-selenium","version":"1.2.2","keywords":["selenium","webdriver","mcp","modelcontextprotocol","automation","browser-automation"],"author":{"name":"SirBlobby"},"license":"MIT","_id":"@iosifnicolae22/mcp-selenium@1.2.2","maintainers":[{"name":"iosifnicolae22","email":"iosifnicolae2@gmail.com"}],"homepage":"https://github.com/SirBlobby/mcp-selenium#readme","bugs":{"url":"https://github.com/SirBlobby/mcp-selenium/issues"},"bin":{"mcp-selenium":"dist/bin/mcp-selenium.js"},"dist":{"shasum":"deff671c94dd1f88adeda599303dc070ab290c7e","tarball":"https://registry.npmjs.org/@iosifnicolae22/mcp-selenium/-/mcp-selenium-1.2.2.tgz","fileCount":22,"integrity":"sha512-y1aUDLlDQR4NKZzirAvlaFh3+pv5FZTeXrkE0qR9eiLOhEWjvrAK9F/99NdwQhL6+TgkkvVkN4SnKG92Mtz0qw==","signatures":[{"sig":"MEYCIQCI8SQOakxMndXz71zVlsl0GX9dqngwxY4kSkhag96LwQIhAPf0rfAL1soXaZaxghvbwrKeKFSHddmpasFfMxQQIELP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124372},"main":"dist/src/server.js","type":"module","gitHead":"24d201503ca9518d510543546aa1523f64bc0950","scripts":{"dev":"tsc --watch","test":"jest","build":"tsc","clean":"rm -rf dist","start":"node dist/src/server.js","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"iosifnicolae22","email":"iosifnicolae2@gmail.com"},"repository":{"url":"git+https://github.com/SirBlobby/mcp-selenium.git","type":"git"},"_npmVersion":"10.9.2","description":"Selenium WebDriver MCP Server","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@types/express":"^5.0.3","selenium-webdriver":"^4.34.0","http-proxy-middleware":"^3.0.5","@modelcontextprotocol/sdk":"^1.16.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","ts-jest":"^29.4.1","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.14","@types/selenium-webdriver":"^4.1.28"},"_npmOperationalInternal":{"tmp":"tmp/mcp-selenium_1.2.2_1754745462331_0.3111042771496184","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@iosifnicolae22/mcp-selenium","version":"1.2.3","keywords":["selenium","webdriver","mcp","modelcontextprotocol","automation","browser-automation"],"author":{"name":"SirBlobby"},"license":"MIT","_id":"@iosifnicolae22/mcp-selenium@1.2.3","maintainers":[{"name":"iosifnicolae22","email":"iosifnicolae2@gmail.com"}],"homepage":"https://github.com/SirBlobby/mcp-selenium#readme","bugs":{"url":"https://github.com/SirBlobby/mcp-selenium/issues"},"bin":{"mcp-selenium":"dist/bin/mcp-selenium.js"},"dist":{"shasum":"637391b1e40f2ba127ebdb0f8ebf2fe844a795c8","tarball":"https://registry.npmjs.org/@iosifnicolae22/mcp-selenium/-/mcp-selenium-1.2.3.tgz","fileCount":22,"integrity":"sha512-LXKKqVWt9JwtyMrjm1BrstttXj/eYDkCT+YxEiW2dLwKXIlKEn9YuoBLu/7Zs8x0+37KrAaEddNMxIwIudI5kw==","signatures":[{"sig":"MEQCIHTOIoMqiKIUYx+EeWu0tpIDf7/YGNYFVYAgUIJKsgV8AiB+louCkvqyos0UxYcyUo05rzhlLnWpnWiH0qDdkfPPRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126346},"main":"dist/src/server.js","type":"module","gitHead":"adebecca874778a2648041f39519aa58c42ad839","scripts":{"dev":"tsc --watch","test":"jest","build":"tsc","clean":"rm -rf dist","start":"node dist/src/server.js","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"iosifnicolae22","email":"iosifnicolae2@gmail.com"},"repository":{"url":"git+https://github.com/SirBlobby/mcp-selenium.git","type":"git"},"_npmVersion":"10.9.2","description":"Selenium WebDriver MCP Server","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@types/express":"^5.0.3","selenium-webdriver":"^4.34.0","http-proxy-middleware":"^3.0.5","@modelcontextprotocol/sdk":"^1.16.0","@iosifnicolae22/mcp-selenium":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","ts-jest":"^29.4.1","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.14","@types/selenium-webdriver":"^4.1.28"},"_npmOperationalInternal":{"tmp":"tmp/mcp-selenium_1.2.3_1754746367293_0.48904354185489907","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@iosifnicolae22/mcp-selenium","version":"1.2.4","description":"Selenium WebDriver MCP Server","author":{"name":"SirBlobby"},"license":"MIT","type":"module","main":"dist/src/server.js","bin":{"mcp-selenium":"dist/bin/mcp-selenium.js"},"scripts":{"build":"tsc","start":"node dist/src/server.js","dev":"tsc --watch","clean":"rm -rf dist","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","debug":"npm run build && npx @modelcontextprotocol/inspector node dist/src/server.js","inspect":"npx @modelcontextprotocol/inspector node dist/src/server.js"},"dependencies":{"@iosifnicolae22/mcp-selenium":"^1.2.2","@modelcontextprotocol/sdk":"^1.16.0","@types/express":"^5.0.3","@types/js-beautify":"^1.14.3","express":"^5.1.0","http-proxy-middleware":"^3.0.5","js-beautify":"^1.15.4","selenium-webdriver":"^4.34.0","zod":"^3.25.76"},"devDependencies":{"@modelcontextprotocol/inspector":"^0.2.5","@types/jest":"^30.0.0","@types/node":"^24.0.14","@types/selenium-webdriver":"^4.1.28","jest":"^30.0.5","ts-jest":"^29.4.1","typescript":"^5.8.3"},"homepage":"https://github.com/SirBlobby/mcp-selenium#readme","repository":{"type":"git","url":"git+https://github.com/SirBlobby/mcp-selenium.git"},"bugs":{"url":"https://github.com/SirBlobby/mcp-selenium/issues"},"keywords":["selenium","webdriver","mcp","modelcontextprotocol","automation","browser-automation"],"_id":"@iosifnicolae22/mcp-selenium@1.2.4","gitHead":"5dc8b89a1e495654ab391693accd99d2bd40498e","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-q2147zcvJwRn0z2YxxLCpovQbOwtW7n4suXNmzvyOR6DMfNiyXZIzRTgRDnGXJTFlYmv0s9a27iLd7FGwgWpLw==","shasum":"81caa7cb281c6e8d4dfaa040794c5d94400b6248","tarball":"https://registry.npmjs.org/@iosifnicolae22/mcp-selenium/-/mcp-selenium-1.2.4.tgz","fileCount":22,"unpackedSize":153319,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCDaUeMGc3WHyZnG64MOLtFZU/CB7mCbZD3LQLbdHVUXAIgSojaPEXGqtZ+AagKk0oXnOODpgYJYQSMB7juBVxrbRs="}]},"_npmUser":{"name":"iosifnicolae22","email":"iosifnicolae2@gmail.com"},"directories":{},"maintainers":[{"name":"iosifnicolae22","email":"iosifnicolae2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-selenium_1.2.4_1754751044147_0.8454621554253048"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-09T10:47:22.700Z","modified":"2025-08-09T14:50:44.527Z","1.1.0":"2025-08-09T10:47:22.917Z","1.2.2":"2025-08-09T13:17:42.527Z","1.2.3":"2025-08-09T13:32:47.467Z","1.2.4":"2025-08-09T14:50:44.347Z"},"bugs":{"url":"https://github.com/SirBlobby/mcp-selenium/issues"},"author":{"name":"SirBlobby"},"license":"MIT","homepage":"https://github.com/SirBlobby/mcp-selenium#readme","keywords":["selenium","webdriver","mcp","modelcontextprotocol","automation","browser-automation"],"repository":{"type":"git","url":"git+https://github.com/SirBlobby/mcp-selenium.git"},"description":"Selenium WebDriver MCP Server","maintainers":[{"name":"iosifnicolae22","email":"iosifnicolae2@gmail.com"}],"readme":"# MCP Selenium\r\n\r\nA comprehensive Model Context Protocol (MCP) server implementation for Selenium WebDriver, enabling advanced browser automation through standardized MCP clients like Claude Desktop and other MCP-compatible applications.\r\n\r\n**This allows AI assistants to control web browsers programmatically with 80+ automation tools.**\r\n\r\n<img style=\"display: inline-block;\" src=\"https://img.shields.io/npm/v/@sirblob/mcp-selenium\">\r\n<img style=\"display: inline-block;\" src=\"https://img.shields.io/npm/dt/@sirblob/mcp-selenium\" >\r\n<img style=\"display: inline-block;\" src=\"https://img.shields.io/github/issues/SirBlobby/mcp-selenium\" >\r\n\r\n## Installation\r\n\r\nInstall the package using npm:\r\n```bash\r\nnpm install @sirblob/mcp-selenium\r\n```\r\n\r\nInstall the package using pnpm:\r\n```bash\r\npnpm install @sirblob/mcp-selenium\r\n```\r\n\r\n## Usage\r\n\r\nAdd to your MCP client configuration:\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"selenium\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"-y\", \"@sirblob/mcp-selenium\"]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n## Supported Browsers\r\n- **Chrome** - Full feature support including headless mode and network logging\r\n- **Firefox** - Full feature support including headless mode (network logging not supported)\r\n- **Edge** - Full feature support including headless mode and network logging\r\n- **Safari** - Basic feature support (limited options, network logging not supported)\r\n\r\n### Network Request Logging\r\nNetwork request logging is available **only for Chromium-based browsers** (Chrome and Edge). This feature automatically captures all HTTP/HTTPS requests made by the page and saves them to log files for analysis.\r\n\r\n**Supported browsers for network logging:**\r\n- ✅ **Chrome** - Full network logging support via Chrome DevTools Protocol\r\n- ✅ **Edge** - Full network logging support via Chrome DevTools Protocol  \r\n- ❌ **Firefox** - Network logging not supported\r\n- ❌ **Safari** - Network logging not supported\r\n\r\n**Network Logging Tools:**\r\n- `get_network_log_directory` - Gets the directory where network logs are saved\r\n- `get_page_requests` - Gets all network requests captured for the current page\r\n- `search_network_logs` - Searches through network logs using regex patterns or plain text\r\n\r\n## Available Tools\r\n\r\n### Browser Management\r\n- **start_browser** - Launches a browser (Chrome, Firefox, Edge, or Safari) with optional configuration\r\n- **navigate** - Navigates to a specified URL\r\n- **close_session** - Closes the current browser session\r\n- **get_browser_status** - Gets the status of the current browser session\r\n- **get_network_log_directory** - Gets the directory where network logs are saved (Chrome/Edge only)\r\n- **get_page_requests** - Gets all network requests captured for the current page (Chrome/Edge only)\r\n- **search_network_logs** - Searches through network logs with regex support (Chrome/Edge only)\r\n\r\n### Element Finding and Interaction\r\n- **find_element** - Finds an element using various locator strategies\r\n- **click_element** - Clicks on an element\r\n- **send_keys** - Sends text input to an element (typing)\r\n- **get_element_text** - Gets the text content of an element\r\n- **get_element_source** - Gets the HTML source code of an element and all its child elements\r\n- **upload_file** - Uploads a file using a file input element\r\n- **find_elements_by_xpath** - Finds multiple elements using XPath\r\n- **scroll_to_element** - Scrolls to bring an element into view\r\n- **highlight_element** - Highlights an element with a colored border for debugging\r\n- **find_parent_element** - Finds the parent element of a given element\r\n- **find_sibling_element** - Finds sibling elements of a given element\r\n\r\n### Select Element Tools\r\n- **select_option_by_text** - Selects an option in a select element by its visible text\r\n- **select_option_by_value** - Selects an option in a select element by its value attribute\r\n- **select_option_by_index** - Selects an option in a select element by its index\r\n- **get_select_options** - Gets all available options from a select element\r\n- **get_selected_option** - Gets the currently selected option from a select element\r\n\r\n### Table Element Tools\r\n- **get_table_data** - Extracts all data from a table element\r\n- **get_table_cell** - Gets the content of a specific table cell by row and column\r\n- **click_table_cell** - Clicks on a specific table cell by row and column\r\n- **get_table_row_count** - Gets the number of rows in a table\r\n- **get_table_column_count** - Gets the number of columns in a table\r\n- **find_table_row_by_text** - Finds a table row that contains specific text\r\n\r\n### List Element Tools\r\n- **get_list_items** - Gets all items from a list element (ul or ol)\r\n- **get_list_item** - Gets a specific list item by index\r\n- **click_list_item** - Clicks on a specific list item by index\r\n- **click_list_item_by_text** - Clicks on a list item that contains specific text\r\n- **find_list_item_by_text** - Finds the index of a list item that contains specific text\r\n- **get_list_item_count** - Gets the number of items in a list\r\n- **get_nested_lists** - Gets information about nested lists within a list\r\n- **filter_list_items** - Filters list items based on text criteria\r\n\r\n### Element State and Properties\r\n- **get_element_attribute** - Gets an attribute value from an element\r\n- **get_element_css_property** - Gets a CSS property value from an element\r\n- **is_element_displayed** - Checks if an element is visible\r\n- **is_element_enabled** - Checks if an element is enabled/interactive\r\n- **is_element_selected** - Checks if an element is selected (for checkboxes, radio buttons)\r\n\r\n### Mouse and Keyboard Interactions\r\n- **hover** - Moves the mouse to hover over an element\r\n- **hover_element** - Alternative hover command for element interaction\r\n- **drag_and_drop** - Drags an element to another location\r\n- **double_click** - Double-clicks an element\r\n- **right_click** - Right-clicks an element (context menu)\r\n- **send_key_combination** - Sends keyboard combinations (Ctrl+C, Alt+Tab, etc.)\r\n- **press_key** - Simulates pressing a single keyboard key\r\n\r\n### Page Actions\r\n- **take_screenshot** - Captures a screenshot of the current page and saves it to the current directory with timestamp\r\n- **get_page_title** - Gets the current page title\r\n- **get_title** - Alternative method to get the current page title\r\n- **get_current_url** - Gets the current page URL\r\n- **get_page_source** - Gets the complete HTML source of the page\r\n- **page_source** - Alternative method to get the complete HTML source of the page\r\n- **refresh_page** - Refreshes the current page\r\n- **go_back** - Navigates back in browser history\r\n- **go_forward** - Navigates forward in browser history\r\n\r\n### JavaScript Execution\r\n- **execute_javascript** - Executes JavaScript code in the browser\r\n- **execute_async_javascript** - Executes asynchronous JavaScript with callback support\r\n\r\n### Scrolling\r\n- **scroll_to_element** - Scrolls to bring an element into view\r\n- **scroll_element_into_view** - Alternative method to scroll an element into view\r\n- **scroll_by_pixels** - Scrolls by a specified number of pixels\r\n- **scroll_to_coordinates** - Scrolls to specific coordinates on the page\r\n- **scroll_to_top** - Scrolls to the top of the page\r\n- **scroll_to_bottom** - Scrolls to the bottom of the page\r\n\r\n### Window Management\r\n- **get_window_size** - Gets the current window dimensions\r\n- **set_window_size** - Sets the window size\r\n- **maximize_window** - Maximizes the browser window\r\n- **get_window_handles** - Gets all open window handles\r\n- **switch_to_window** - Switches to a specific window by handle\r\n- **switch_to_window_by_title** - Switches to a window/tab by its title\r\n- **switch_to_window_by_url** - Switches to a window/tab by its URL\r\n- **close_window** - Closes the current window\r\n- **switch_to_frame** - Switches to a frame by ID or name\r\n- **switch_to_default_content** - Switches back to the main document\r\n\r\n### Cookie Management\r\n- **get_cookies** - Gets all cookies for the current domain\r\n- **add_cookie** - Adds a new cookie\r\n- **delete_cookie** - Deletes a specific cookie\r\n- **delete_all_cookies** - Deletes all cookies\r\n\r\n### XPath Tools\r\n- **evaluate_xpath** - Evaluates an XPath expression and returns the result\r\n- **count_elements_by_xpath** - Counts elements matching an XPath expression\r\n- **get_xpath_text_content** - Gets text content from elements matching XPath\r\n- **get_element_source_by_xpath** - Gets HTML source of elements matching XPath\r\n- **get_element_xpath** - Gets the XPath of an element\r\n- **get_elements_xpath** - Gets XPath expressions for multiple elements\r\n- **get_element_attribute_by_xpath** - Gets an attribute value from an element using XPath\r\n- **find_element_by_xpath_attribute** - Finds elements by XPath and attribute values\r\n- **find_element_by_xpath_index** - Finds an element by XPath at a specific index\r\n- **click_element_by_xpath_text** - Clicks an element found by XPath containing specific text\r\n\r\n## Advanced Element Operations\r\n\r\n### Element State and Properties\r\n- **get_element_attribute** - Gets an attribute value from an element\r\n- **get_element_css_property** - Gets a CSS property value from an element\r\n- **is_element_displayed** - Checks if an element is visible\r\n- **is_element_enabled** - Checks if an element is enabled/interactive\r\n- **is_element_selected** - Checks if an element is selected (for checkboxes, radio buttons)\r\n\r\n## Configuration Parameters\r\n\r\n### Browser Options\r\nConfigure browser behavior with optional parameters:\r\n```json\r\n{\r\n  \"headless\": false,\r\n  \"arguments\": [\"--window-size=1920,1080\", \"--disable-web-security\", \"--disable-dev-shm-usage\"],\r\n  \"logNetworkRequests\": true,\r\n  \"networkLogDir\": \"/custom/path/to/logs\"\r\n}\r\n```\r\n\r\n**Network Logging Options (Chrome/Edge only):**\r\n- `logNetworkRequests` - Enable/disable network request logging (default: `true` for Chrome/Edge)\r\n- `networkLogDir` - Custom directory for network logs (default: OS temp directory)\r\n\r\n**Common Browser Arguments:**\r\n- `--headless=new` - Run in headless mode (Chrome/Edge)\r\n- `--window-size=width,height` - Set initial window size\r\n- `--disable-web-security` - Disable CORS restrictions\r\n- `--disable-dev-shm-usage` - Overcome limited resource problems\r\n- `--no-sandbox` - Disable sandbox (useful in containerized environments)\r\n- `--disable-gpu` - Disable GPU hardware acceleration\r\n\r\n### Locator Strategies\r\nMultiple ways to find elements on the page:\r\n- **id** - Find by element ID (`<div id=\"myElement\">`)\r\n- **css** - Find by CSS selector (`div.class-name`, `#id-name`)\r\n- **xpath** - Find by XPath expression (`//div[@class='example']`)\r\n- **name** - Find by name attribute (`<input name=\"username\">`)\r\n- **tag** - Find by HTML tag name (`div`, `span`, `input`)\r\n- **class** - Find by class name (`class-name`)\r\n\r\n### Timeout Configuration\r\nMost tools accept an optional `timeout` parameter (default: 10000ms):\r\n```json\r\n{\r\n  \"by\": \"id\",\r\n  \"value\": \"submit-button\",\r\n  \"timeout\": 15000\r\n}\r\n```\r\n\r\n### Requirements\r\n- **Node.js** 22+ \r\n- **npm** or **pnpm**\r\n- **Browser drivers** (automatically managed by Selenium)\r\n- **TypeScript** 5.0+ (dev dependency)\r\n\r\n## Testing\r\n\r\nRun all tests:\r\n```bash\r\nnpm test\r\n```\r\n\r\nRun specific test:\r\n```bash\r\nnpm test -- tests/network-logging.test.ts\r\n```\r\n\r\nThe test suite includes:\r\n- **Network Logging Test**: Launches Chrome, navigates to google.com, and captures all network requests via Chrome DevTools Protocol\r\n\r\n## Troubleshooting\r\n\r\n### Common Issues\r\n- **Driver not found**: Selenium automatically downloads drivers, but ensure you have the target browser installed\r\n- **Permission errors**: On Linux, you may need to install browser packages (`chromium-browser`, `firefox`, etc.)\r\n- **Timeout errors**: Increase timeout values for slow-loading pages\r\n- **Headless mode issues**: Some features may not work in headless mode (file uploads, certain interactions)\r\n\r\n### Platform-Specific Notes\r\n- **macOS**: Safari requires enabling automation in Safari preferences\r\n- **Linux**: May require additional dependencies for GUI browsers\r\n- **Windows**: Should work out of the box with standard browser installations\r\n\r\n## License\r\nMIT License - see [LICENSE](LICENSE) file for details.\r\n\r\n## Acknowledgements\r\nInspired by [@angiejones/mcp-selenium](https://github.com/angiejones/mcp-selenium)\r\n","readmeFilename":"README.md"}