The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Selenium MCP listing page.
Selenium MCP server for AI agents — 39 tools for real-browser automation: navigation, clicking, typing, assertions, screenshots, multi-session management, page snapshots with stable element refs, persistent selector hints, and batched multi-step execution.
Built with TypeScript, the official MCP SDK, and Selenium WebDriver — strict zod input validation, explicit waits, and structured responses designed for LLM agents.
Add to your client's MCP config (e.g. claude_desktop_config.json or .cursor/mcp.json):
Settings → Tools → AI Assistant → Model Context Protocol → Add, with command npx and arguments -y @gaforov/selenium-mcp@latest. Full walkthrough in docs/CLIENT_INTEGRATION.md.
Then point your MCP client at node /absolute/path/to/selenium-mcp/dist/server.js.
Ask your AI agent:
Use selenium-mcp to open Chrome, go to https://example.com, read the page title, take a screenshot, and close the browser.
The agent chains start_browser → navigate → get_title → take_screenshot → stop_browser on its own — no scripting needed.
Most Selenium MCP servers wrap WebDriver's basic commands. This one adds the layer that makes agents reliable:
| Capability | selenium-mcp | Typical Selenium MCP servers |
|---|---|---|
Page snapshot with stable element refs (capture_page) | ✅ | rare |
Persistent per-domain selector memory (selector_hint_*) | ✅ | ❌ |
| Parallel multi-session browsing | ✅ | rare |
| Batched multi-step execution in one call | ✅ | ❌ |
| Built-in test assertions | ✅ | some |
| Tool-call tracing (NDJSON audit log) | ✅ | ❌ |
| Strict input validation + structured errors | ✅ | varies |
capture_page returns a page snapshot with stable element refs the agent can act on directly, no brittle selector guessingbatch_execute runs constrained multi-step sequences in a single tool call, cutting round-trips| Category | Tools |
|---|---|
| Browser lifecycle | start_browser, stop_browser, session_create, session_select, session_list, session_destroy |
| Navigation | open_url, navigate, get_current_url, get_title |
| Element discovery | find_element, wait_for_element, wait_until_visible, capture_page, get_page_source |
| Interaction | click, retry_click, interact (hover/double/right-click), type, press_key, upload_file |
| Reading | get_text, get_attribute |
| Assertions | assert_text, assert_visible, assert_attribute |
| Scripting | execute_script, batch_execute |
| Selector hints | selector_hint_save, selector_hint_get, selector_hint_list, selector_hint_delete |
| Windows & context | window, frame, alert |
| Cookies | add_cookie, get_cookies, delete_cookie |
| Capture | take_screenshot |
Full parameter documentation: docs/TOOL_REFERENCE.md
browser-status://current — live browser/session statusaccessibility://current — accessibility snapshot of the current pageEnable lightweight NDJSON tracing of all tool calls:
If SELENIUM_MCP_TRACE_PATH is omitted, the default is logs/selenium-mcp-trace.ndjson.
Contributions are welcome — bug reports, feature requests, and pull requests. See CONTRIBUTING.md to get started.
MIT. See LICENSE.