@padenot/firefox-devtools-mcp
v0.6.1
Published
Model Context Protocol (MCP) server for Firefox DevTools automation (fork with Firefox management tools)
Maintainers
Readme
Firefox DevTools MCP
Note: this is a (temporary) fork containing some feature on top of upstream, aimed at making the life of Firefox developers easier. The goal is to upstream what makes sense once we get a sense of the value of our features for the general public (vs. firefox development).
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
claude mcp add firefox-devtools npx firefox-devtools-mcp@latestPass options either as args or env vars. Examples:
# Headless + viewport via args
claude mcp add firefox-devtools npx firefox-devtools-mcp@latest -- --headless --viewport 1280x720
# Or via environment variables
claude mcp add firefox-devtools npx firefox-devtools-mcp@latest \
--env START_URL=https://example.com \
--env FIREFOX_HEADLESS=trueOption B — Edit Claude Code settings JSON
Add to your Claude Code config file:
- macOS:
~/Library/Application Support/Claude/Code/mcp_settings.json - Linux:
~/.config/claude/code/mcp_settings.json - Windows:
%APPDATA%\Claude\Code\mcp_settings.json
{
"mcpServers": {
"firefox-devtools": {
"command": "npx",
"args": ["-y", "firefox-devtools-mcp@latest", "--headless", "--viewport", "1280x720"],
"env": {
"START_URL": "about:home"
}
}
}
}Option C — Helper script (local dev build)
npm run setup
# Choose Claude Code; the script saves JSON to the right pathTry it with MCP Inspector
npx @modelcontextprotocol/inspector npx firefox-devtools-mcp@latest --start-url https://example.com --headlessThen 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)--pref name=value— set Firefox preference at startup (repeatable, requiresMOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1)
Note on
--pref: When Firefox runs in WebDriver BiDi mode, it applies RecommendedPreferences that modify browser behavior for testing. The--prefoption allows overriding these defaults when needed (e.g., for Firefox development, debugging, or testing scenarios that require production-like behavior).Example:
--pref "browser.ml.enable=true"enables Firefox's ML/AI features. This is essential when using this MCP server to develop or test AI-powered features like Smart Window, since RecommendedPreferences disables it by default.
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
- Script: evaluate_script (content), evaluate_chrome_script (privileged)
- Chrome Context: list/select chrome contexts (requires
MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1) - Firefox Management: get_firefox_info, get_firefox_output, restart_firefox, set_firefox_prefs, get_firefox_prefs
- Utilities: accept/dismiss dialog, history back/forward, set viewport
Local development
npm install
npm run build
# Run with Inspector against local build
npx @modelcontextprotocol/inspector node dist/index.js --headless --viewport 1280x720
# Or run in dev with hot reload
npm run inspector:devTroubleshooting
- 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.
Author
Created by Tomáš Grasl
