Mcp Selenium Haskell
@albertov
A Haskell implementation of MCP Selenium Server using WebDriver, enabling browser automation through standardized MCP clients like Claude.
Overview
What is Mcp Selenium Haskell?
Mcp Selenium Haskell is a Haskell implementation of an MCP (Model Context Protocol) Selenium server that uses WebDriver to enable browser automation through standardized MCP clients like Claude. It provides multi-session browser management with UUID-based session isolation and connects to a Selenium Grid.
How to use Mcp Selenium Haskell?
Run the statically-linked executable mcp-selenium-hs after setting environment variables SELENIUM_HOST (default 127.0.0.1) and SELENIUM_PORT (default 4444) to point to a Selenium server. Configure Claude Desktop by adding a JSON entry with the command and environment variables, or expose the server over HTTP/SSE using mcp-proxy for remote access.
Key features of Mcp Selenium Haskell
- Multi-session browser management with UUID-based session IDs
- Element interaction: click, type, hover, drag and drop
- Element location via CSS, XPath, ID, name, class, tag
- JavaScript console logging with injection and monitoring
- Screenshot capture and page source retrieval
- File upload and keyboard input simulation
- Chrome and Firefox support with headless mode
- Statically-linked executable with zero runtime dependencies
Use cases of Mcp Selenium Haskell
- Automate browser tasks through MCP clients like Claude
- Run multiple concurrent browser sessions for parallel testing
- Integrate with existing Selenium Grid infrastructure
- Perform headless browser automation without a graphical display
FAQ from Mcp Selenium Haskell
How does Mcp Selenium Haskell differ from the Node.js mcp-selenium?
This Haskell version supports multiple concurrent sessions (Node.js uses a single implicit session), connects to Selenium Grid, provides additional tools (console logging, page source), and is delivered as a static binary. It requires a separate Selenium server whereas the Node.js version includes browser management.
What environment variables are required?
Set SELENIUM_HOST (default 127.0.0.1) and SELENIUM_PORT (default 4444) to point to your Selenium WebDriver server. For local use no configuration is needed if using defaults.
How do I configure Claude Desktop to use this server?
Add a JSON entry to claude_desktop_config.json with "command": "mcp-selenium-hs" and the required environment variables under "env". The configuration file location varies by OS.
Can I run multiple browser sessions at once?
Yes, Mcp Selenium Haskell explicitly manages multiple concurrent sessions using UUID-based session IDs, unlike the single-session model of the Node.js version.
How can I expose the server remotely?
Use mcp-proxy to serve the MCP server over SSE (e.g., mcp-proxy --port=8080 mcp-selenium-hs). Bind to a specific private interface (Tailscale IP, localhost with SSH forwarding) and never use 0.0.0.0 in production.