Mcp Selenium Haskell
@albertov
About Mcp Selenium Haskell
A Haskell implementation of MCP Selenium Server using WebDriver, enabling browser automation through standardized MCP clients like Claude.
Basic information
Config
Add this server to your MCP-compatible client using the configuration below.
{
"mcpServers": {
"selenium": {
"command": "mcp-selenium-hs",
"args": [],
"env": {
"SELENIUM_HOST": "some.tailscale.host",
"SELENIUM_PORT": "1234"
}
}
}
}Tools
No tools detected
We auto-extract tools from the README. The maintainer can list them under a ## Tools heading to populate this section.
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.
More Browser Automation MCP servers
BrowserTools MCP
AgentDeskAIMonitor browser logs directly from Cursor and other MCP compatible IDEs.
fetch-mcp
egoistAn MCP server for fetching URLs / Youtube video transcript.
Fastcrw
usFast, lightweight Firecrawl/Tavily alternative in Rust. Web scraper, crawler & search API with MCP server for AI agents. Drop-in Firecrawl-compatible API (/scrape, /crawl, /search). 2.3x faster than Tavily, 1.5x faster than Firecrawl in 1K-URL benchmarks. 6 MB RAM, single binary.
mcp-browser-use: MCP server for browser-use
vinayak-mehtaMCP server for browser-use
Puppeteer MCP Server
merajmehrabiThis MCP server provides browser automation capabilities through Puppeteer, allowing interaction with both new browser instances and existing Chrome windows.
Comments