by david-strejc
Provides a modern MCP server and companion browser extensions that enable reliable, multi‑instance automation across Chrome and Firefox through a single WebSocket daemon.
LaskoBOT delivers a unified automation platform built on the Model Context Protocol (MCP). It runs a WebSocket daemon (default port 8765) that can host many independent sessions—each mapped to its own browser tab—allowing concurrent interactions without cross‑talk. Chrome and Firefox extensions expose a rich set of tools (navigation, DOM actions, snapshots, JavaScript execution, tab management, etc.) that can be invoked from any MCP‑compatible client such as Claude Desktop.
git clone https://github.com/david-strejc/browsermcp-enhanced.git
cd browsermcp-enhanced
./scripts/deploy
npm install
npm run build
chrome://extensions → Load unpacked → chrome-extension/about:debugging#/runtime/this-firefox → Load Temporary Add‑on → firefox-extension/manifest.jsonhttp://127.0.0.1:3000/mcp (HTTP front‑end) and let it communicate with the WS daemon on port 8765.await browser_navigate({url: "https://example.com"})
await js.execute({code: "return document.title"})
Q: Do I need to run separate servers for Chrome and Firefox? A: No. The single daemon handles both browsers; the extensions negotiate the correct engine per session.
Q: How are sessions isolated? A: Each session is tied to a unique browser tab. The daemon routes MCP calls to the owning tab, preventing cross‑talk.
Q: Can I change the WebSocket port?
A: Yes. Set BROWSER_MCP_PORT environment variable before starting the daemon.
Q: What if a site blocks script injection? A: Enable the unsafe mode in the Firefox extension options; use it only for trusted sites.
Q: Is there support for Safari? A: Safari support is planned for the upcoming v2.0.0 release.
LaskoBOT v1.30.7
Modern MCP server + browser extensions for reliable, multi‑instance automation over a single WebSocket daemon.
git clone https://github.com/david-strejc/browsermcp-enhanced.git
cd browsermcp-enhanced
./scripts/deploy
Option A: User services (recommended for nvm users, no sudo required):
./scripts/systemd-user-install.sh
Option B: System services (requires sudo):
sudo ./scripts/systemd-install.sh --user "$USER" \
--install-dir "/home/$USER/.local/lib/browsermcp-enhanced" \
--http-port 3000 --ws-port 8765
chrome://extensions → Developer mode → Load unpacked → chrome-extension/about:debugging#/runtime/this-firefox → Load Temporary Add‑on → firefox-extension/manifest.json {
"mcpServers": {
"browsermcp": {
"type": "http",
"url": "http://127.0.0.1:3000/mcp"
}
}
}
For detailed architecture and troubleshooting information, see ADVANCE_INFO.md
NO_PROXY=localhost,127.0.0.1 to allow local connections// Navigate to a URL
await browser_navigate({ url: "https://example.com" })
// Snapshot
await snapshot.accessibility({ mode: 'scaffold' })
// Click an element
await browser_click({ ref: "button-1", element: "Submit button" })
// Plain DOM
await js.execute({ code: "return document.title" })
// Safe operation (no code)
await js.execute({ method: 'query', args: ['h3', { attrs: ['textContent'], limit: 10 }] })
// Unsafe (enable in extension options first)
await js.execute({ code: "(function(){ return location.href })()", unsafe: true })
// Multi-step form filling
await browser_multitool({
intent: "form_fill",
snapshot: snapshotData,
fields: {
"username": "john.doe",
"email": "john@example.com",
"message": "Hello world"
}
})
Daemon: /tmp/browsermcp-daemon.log, /tmp/browsermcp-events.log
Chrome: chrome://extensions → Inspect (background)
Firefox: about:debugging → Inspect (background)
# Allow all origins (development)
BROWSER_MCP_ALLOWED_ORIGINS="*"
# Specific origins (production)
BROWSER_MCP_ALLOWED_ORIGINS="https://example.com,https://app.example.com"
# Custom WebSocket port
BROWSER_MCP_PORT=8765
unsafe: true)browser_navigate, browser_go_back, browser_go_forwarddom.click, dom.type, dom.hover, dom.selectsnapshot.accessibilitytabs.list, tabs.select, tabs.new, tabs.closeconsole.get, screenshot.capture, js.execute# Run tests
npm test
# Quick test
npm run test:quick
# With coverage
npm run test:coverage
# Watch mode
npm run watch
# Type checking
npm run typecheck
# Inspector
npm run inspector
See CHANGELOG.md for detailed version history.
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by the LaskoBOT Contributors
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by headroomlabs-ai
Compress tool outputs, logs, files, RAG chunks, and conversation history before they reach the LLM, keeping answers identical while saving up to 95% of tokens for JSON payloads.
by modelcontextprotocol
A Model Context Protocol server for Git repository interaction and automation.
by zed-industries
A high‑performance, multiplayer code editor designed for speed and collaboration.
by modelcontextprotocol
Model Context Protocol Servers
by modelcontextprotocol
A Model Context Protocol server that provides time and timezone conversion capabilities.
by cline
An autonomous coding assistant that can create and edit files, execute terminal commands, and interact with a browser directly from your IDE, operating step‑by‑step with explicit user permission.
by upstash
Provides up-to-date, version‑specific library documentation and code examples directly inside LLM prompts, eliminating outdated information and hallucinated APIs.
by daytonaio
Provides a secure, elastic infrastructure that creates isolated sandboxes for running AI‑generated code with sub‑90 ms startup, unlimited persistence, and OCI/Docker compatibility.
by continuedev
Enables faster shipping of code by integrating continuous AI agents across IDEs, terminals, and CI pipelines, offering chat, edit, autocomplete, and customizable agent workflows.