Mmcp.market

Firefox DevTools MCP server

by mozilla·io.github.mozilla/firefox-devtools-mcp·v0.10.4

Control and debug Firefox: navigate, fill forms, inspect network and console, profile.

A86/100grade A
What users say
No reviews yet
Be the first
Safety scan
A86/100

full report

Adoption
Established

431 stars3.1k downloads/wk

Reviews

Write one

Nobody has reviewed Firefox DevTools MCP yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Firefox DevTools MCP tools (70, 4 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • accept_dialog

    Accept browser dialog. Provide promptText for prompts.

  • clear_console_messages

    Clear collected console messages.

  • clear_downloads

    Clear the tracked downloads buffer.

  • clear_snapshot

    Clear snapshot UIDs. Usually not needed.

  • click_by_uid

    Click element by UID. Set dblClick for double-click.

  • close_firefox_session

    Ends the browser session. If the server connected to your existing Firefox, this releases the connection and leaves Firefox running. If the server started Firefox itself, this closes it. Call this when the browser task is complete and no further browser interaction is expected.

  • close_page

    Close tab by index.

  • console

    Read and clear console messages.

  • debugging

    Inspect scripts and set logpoints (Firefox 153+).

  • dismiss_dialog

    Dismiss browser dialog.

  • downloads

    Monitor and manage file downloads.

  • drag_by_uid_to_uid

    Drag element to another (HTML5 drag events).

  • enable_debugger

    Enable the JS debugger for the current page. Required before set_logpoint works. Requires Firefox 153+.

  • evaluate_privileged_scriptwrite action

    Execute JS function in a privileged (chrome) browsing context. Requires MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1 env var. Get context ids from list_privileged_contexts.

  • evaluate_scriptwrite action

    Run a JS function in the page and return its result. Prefer this for targeted reads (a value, text, computed style, whether an element exists) instead of a full take_snapshot. Use the UID interaction tools for clicking, typing, and filling.

  • fill_by_uid

    Fill text input/textarea by UID.

  • fill_form_by_uid

    Fill multiple form fields at once.

  • get_firefox_info

    Get information about the current Firefox instance configuration, including binary path, environment variables, and output file location.

  • get_firefox_output

    Retrieve Firefox output (stdout/stderr including MOZ_LOG, warnings, crashes, stack traces). Returns recent output from the capture file. Use filters to focus on specific content.

  • get_firefox_prefs

    Get Firefox preference values via a privileged API. Requires MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1 env var.

  • get_logpoint_results

    Get the results collected by a logpoint since it was set.

  • get_network_request

    Get request details by ID, including the response body (and request body when present). Large text bodies are truncated inline; binary bodies are summarized. URL lookup as fallback.

  • get_page_text

    Get the visible text of the page (document.body.innerText). Caps at maxLength (default 20000 chars); saveTo saves the full text to a file.

  • get_script_source

    Get the source code of a JavaScript file loaded in the page. Requires enable_debugger to have been called.

  • hover_by_uid

    Hover over element by UID.

  • input

    Interact with the page via UID-based clicks, typing, key presses, drag, and uploads.

  • install_extension

    Install a Firefox extension using WebDriver BiDi webExtension.install command. Supports installing from archive (.xpi/.zip), base64-encoded data, or unpacked directory.

  • launch

    Restart Firefox under a different launch configuration.

  • list_console_messages

    List console messages, filterable by level, time, text, source. Caps at limit (default 50); saveTo saves all matches to a file.

  • list_downloads

    List downloads tracked since startup, including status and saved file path.

  • list_network_requests

    List network requests, returning IDs for get_network_request. Filter by url/method/status; caps at limit (default 50); saveTo saves all matches to a file.

  • list_pages

    List open tabs (index, title, URL). Selected tab is marked.

  • list_privileged_contexts

    List privileged (privileged) browsing contexts. Requires MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1 env var. Use restart_firefox with env parameter to enable.

  • list_scripts

    List all JavaScript files currently loaded in the page. Requires enable_debugger to have been called.

  • management

    Inspect Firefox options and logs, and close the browser.

  • navigate_history

    Navigate history back/forward. UIDs become stale.

  • navigate_page

    Navigate selected tab to URL.

  • network

    List and inspect network requests, and control the HTTP cache.

  • new_page

    Open new tab at URL. Returns tab index.

  • pages

    Open, navigate, select, and close pages.

  • prefs

    Get and set Firefox preferences.

  • press_key

    Press a single key, optionally with modifiers, to submit, dismiss, navigate or trigger a shortcut. Not for entering text: use fill_by_uid instead.

  • profiler

    Start, stop, and query the performance profiler.

  • profiler_is_active

    Check whether the Firefox profiler is currently recording.

  • profiler_start

    Start the Firefox profiler. Provide either a preset name or explicit recording options (entries, interval, features, threads). Cannot combine both. Valid presets: ….

  • profiler_stop

    Stop the Firefox profiler and save the recorded profile to a file in the downloads directory. Returns the path to the saved file, or null when nothing was saved.

  • remove_logpointwrite action

    Remove a previously set logpoint.

  • resolve_uid_to_selector

    Resolve UID to CSS selector. Fails if the element is gone.

  • restart_firefox

    Restart Firefox with different configuration. Allows changing binary path, environment variables, and other options. All current tabs will be closed.

  • screencast

    Record screencasts of the page viewport (Firefox 154+).

  • screencast_start

    Start recording a screencast (video) of the current page viewport, saving the output to a file in the downloads directory. Returns a screencast id to pass to screencast_stop. Multiple recordings can run at once.

  • screencast_stop

    Stop an in-progress screencast recording started with screencast_start and finalize the video file. Returns the path to the saved file.

  • screenshot

    Capture screenshots of the page or specific elements.

  • screenshot_by_uid

    Capture element screenshot by UID as base64 PNG.

  • screenshot_page

    Capture viewport screenshot as base64 PNG. Set fullPage for the whole scrollable document.

  • script

    Evaluate arbitrary JavaScript in the page context.

  • select_page

    Select active tab by index, URL, or title. Index takes precedence.

  • select_privileged_context

    Select a privileged browsing context by ID and set WebDriver Classic context to "chrome" . Requires MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1 env var.

  • set_download_behavior

    Control how downloads are handled: allow (save to a destination folder), deny (cancel), or reset to default. Avoids the native save-file dialog. Requires a recent Firefox.

  • set_firefox_prefs

    Set Firefox preferences at runtime a privileged API. Requires MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1 env var.

  • set_logpoint

    Set a logpoint at a specific location. When execution reaches that line, the expression is evaluated and the result is stored without pausing. Use get_logpoint_results to retrieve collected values. Requires enable_debugger to have been called.

  • set_network_cache

    Control the HTTP cache. Use behavior='bypass' so every request goes to the network \u2014 useful for performance measurement and for verifying a change that a cached asset would otherwise hide. Applies to the currently selected tab unless scope='global'. Persists until set back to 'default' or Firefox shuts down.

  • set_viewport_size

    Set viewport dimensions in pixels.

  • snapshot

    Capture accessibility/DOM snapshots and resolve UIDs.

  • take_snapshot

    Capture DOM snapshot with stable UIDs. A UID stays valid across snapshots until its element is removed or the page navigates. Output caps at maxLines (default 100); scope with selector or dump the full tree with saveTo.

  • type_text

    Type text key by key into the focused element, optionally followed by a key such as Enter. Use fill_by_uid to set the value of a known input; use this for elements that only react to real typing, such as autocomplete fields and rich text editors.

  • uninstall_extension

    Uninstall a Firefox extension using WebDriver BiDi webExtension.uninstall command. Requires the extension ID returned by install_extension or obtained from list_extensions.

  • upload_file_by_uidwrite action

    Upload file to file input by UID.

  • utilities

    Handle dialogs, history navigation, and viewport sizing.

  • webextension

    Install and uninstall web extensions.

Public scan report

scanner v0.1.9 · 2026-09-22 · same rubric, same numbers if you re-run it

1 medium
  • Code scan3 source files scanned20/25
  • Live reliabilityno gateway calls yet and no remote to proben/a
  • Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 0 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year9/10

Findings (1)

  • mediumeval / new Function usedexec.eval
    dist/index.js: …ode, sch); const makeValidate = new Function(`${names_1.default.self}`, `${names_1.de…
Overall 86/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

What the publisher says

From the Firefox DevTools MCP repository's README, as published. We do not edit it. Read it on GitHub

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/mozilla/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 @mozilla/firefox-devtools-mcp@latest to run locally, or use Docker with the provided Dockerfile.

Security

Browser MCP servers carry inherent risks. A few key practices:

  • Use a dedicated Firefox profile. Never run the server against your regular profile — the agent has access to whatever the browser can reach, including cookies and saved sessions.
  • Be cautious about which sites you visit. Pages can return content designed to manipulate the agent (prompt injection). Stick to sites you control or trust.
  • Enable only the tool modules you need. The default basic preset already includes evaluate_script; --tool-preset slim drops it. Higher presets such as --tool-preset developer (debugging, network, console, profiler) and --tool-preset mozilla (privileged context) expand what the agent can do further.

See SECURITY.md for a full breakdown of risks and how to report vulnerabilities.

Requirements

  • Node.js ≥ 20.19.0
  • Firefox 100+ installed (auto‑detected, or pass --firefox-path)

Install and use with Claude Code or Codex (npx)

Recommended: use npx so you run the latest published version from npm.

Option A — CLI

Claude Code

claude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest

# Headless + viewport via args
claude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest -- --headless --viewport 1280x720

# Or via environment variables
claude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest \
  --env START_URL=https://example.com \
  --env FIREFOX_HEADLESS=true

Codex

codex mcp add firefox-devtools -- npx @mozilla/firefox-devtools-mcp@latest

# Headless + viewport via args
codex mcp add firefox-devtools -- \
  npx @mozilla/firefox-devtools-mcp@latest -- --headless --viewport 1280x720

# Or via environment variables
codex mcp add firefox-devtools \
  --env START_URL=https://example.com \
  --env FIREFOX_HEADLESS=true \
  -- npx @mozilla/firefox-devtools-mcp@latest

Option B — Edit the configuration file

Claude Code

Add to Claude Code’s mcp_settings.json:

{
  "mcpServers": {
    "firefox-devtools": {
      "command": "npx",
      "args": ["-y", "@mozilla/firefox-devtools-mcp@latest", "--headless", "--viewport", "1280x720"],
      "env": {
        "START_URL": "about:blank"
      }
    }
  }
}

Codex

Add to ~/.codex/config.toml:

[mcp_servers.firefox-devtools]
command = "npx"
args = ["-y", "@mozilla/firefox-devtools-mcp@latest", "--headless", "--viewport", "1280x720"]

[mcp_servers.firefox-devtools.env]
START_URL = "about:blank"

Option C — Helper script (local dev build)

npm run setup
# Choose Claude Code; the script saves JSON to the right path

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Install directly

Runs npx -y @mozilla/firefox-devtools-mcp on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add firefox-devtools-mcp -- npx -y @mozilla/firefox-devtools-mcp
Add to Cursor

Firefox DevTools MCP: common questions

Is Firefox DevTools MCP server safe?
Yes, by our scan: it is graded A (86/100). Read the Firefox DevTools MCP safety report
How do I install Firefox DevTools MCP?
It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
Does Firefox DevTools MCP need an API key?
No secret keys are declared. It reads 2 settings from the environment.
Is Firefox DevTools MCP maintained?
The last commit was in the last day (2026-09-22). The latest release is v0.10.4.

More from mozilla