Automate Firefox browser interactions through Model Context Protocol for web testing, debugging, and automation tasks.
Core Capabilities:
Page Management: List, open, navigate, select (by index, URL, or title), and close browser tabs; navigate browser history backward and forward
Element Interaction: Click, hover, fill forms, drag-and-drop, and upload files using stable UIDs from DOM snapshots that survive minor DOM changes
DOM Inspection: Capture page snapshots with unique element identifiers for reliable automation
Network Monitoring: Always-on capture of all HTTP requests with filtering by URL, method, status code, resource type, XHR, and timing; detailed request inspection with headers and response data
Console Debugging: Capture, filter (by level, time range, source, content), and clear browser console messages
Visual Capture: Screenshot full pages or specific elements by UID as base64 PNGs
Dialog Handling: Accept or dismiss browser alerts, confirms, and prompts with optional text input
Browser Control: Set viewport dimensions, headless mode, custom Firefox profiles, and TLS certificate handling
Multi-format Output: Text (human-readable) and JSON (structured) formats
Cross-platform Support: Works with Firefox 100+ on macOS, Linux, and Windows via WebDriver BiDi
Enables browser automation and web interaction through Firefox via WebDriver BiDi, providing tools for page navigation, element interaction, network monitoring, screenshot capture, and console message access.
Firefox DevTools MCP
Model Context Protocol server for automating Firefox via WebDriver BiDi (through Selenium WebDriver). Works with Claude Code, Claude Desktop, Cursor, Cline and other MCP clients.
Repository: https://github.com/freema/firefox-devtools-mcp
Note: This MCP server requires a local Firefox browser installation and cannot run on cloud hosting services like glama.ai. Use
npx firefox-devtools-mcp@latestto run locally, or use Docker with the provided Dockerfile.
Requirements
Node.js ≥ 20.19.0
Firefox 100+ installed (auto‑detected, or pass
--firefox-path)
Install and use with Claude Code (npx)
Recommended: use npx so you always run the latest published version from npm.
Option A — Claude Code CLI
Pass options either as args or env vars. Examples:
Option B — Edit Claude Code settings JSON
Add to your Claude Code config file:
macOS:
~/Library/Application Support/Claude/Code/mcp_settings.jsonLinux:
~/.config/claude/code/mcp_settings.jsonWindows:
%APPDATA%\Claude\Code\mcp_settings.json
Option C — Helper script (local dev build)
Try it with MCP Inspector
Then call tools like:
list_pages,select_page,navigate_pagetake_snapshotthenclick_by_uid/fill_by_uidlist_network_requests(always‑on capture),get_network_requestscreenshot_page,list_console_messages
CLI options
You can pass flags or environment variables (names on the right):
--firefox-path— absolute path to Firefox binary--headless— run without UI (FIREFOX_HEADLESS=true)--viewport 1280x720— initial window size--profile-path— use a specific Firefox profile--firefox-arg— extra Firefox arguments (repeatable)--start-url— open this URL on start (START_URL)--accept-insecure-certs— ignore TLS errors (ACCEPT_INSECURE_CERTS=true)
Tool overview
Pages: list/new/navigate/select/close
Snapshot/UID: take/resolve/clear
Input: click/hover/fill/drag/upload/form fill
Network: list/get (ID‑first, filters, always‑on capture)
Console: list/clear
Screenshot: page/by uid
Utilities: accept/dismiss dialog, history back/forward, set viewport
Local development
Troubleshooting
Firefox not found: pass
--firefox-path "/Applications/Firefox.app/Contents/MacOS/firefox"(macOS) or the correct path on your OS.First run is slow: Selenium sets up the BiDi session; subsequent runs are faster.
Stale UIDs after navigation: take a fresh snapshot (
take_snapshot) before using UID tools.
Versioning
Pre‑1.0 API: versions start at
0.x. Use@latestwith npx for the newest release.
CI and Release
GitHub Actions for CI, Release, and npm publish are included. See docs/ci-and-release.md for details and required secrets.