Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Firefox DevTools MCP

NPM · @MOZILLA/FIREFOX-DEVTOOLS-MCP · SCANNED SEP 24

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

80 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 47 of 143 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to mozilla/firefox-devtools-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT OR Apache-2.0).Pass
  • Actively maintained (last published 1 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability80
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 4551 tokens (~94/item across 48 items; 48 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "uninstall_extension" implies "uninstall" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 49 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the Firefox DevTools MCP server?

Firefox DevTools MCP runs locally as an npm package, launched with npx -y @mozilla/firefox-devtools-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @mozilla/firefox-devtools-mcp

# add to Claude Code
claude mcp add mozilla-firefox-devtools-mcp -- npx -y @mozilla/firefox-devtools-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "mozilla-firefox-devtools-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@mozilla/firefox-devtools-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "mozilla-firefox-devtools-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@mozilla/firefox-devtools-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add mozilla-firefox-devtools-mcp -- npx -y @mozilla/firefox-devtools-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mozilla-firefox-devtools-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@mozilla/firefox-devtools-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add mozilla-firefox-devtools-mcp --command npx --arg -y --arg @mozilla/firefox-devtools-mcp
# ~/.hermes/config.yaml
mcp_servers:
  mozilla-firefox-devtools-mcp:
    command: "npx"
    args: ["-y", "@mozilla/firefox-devtools-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "mozilla-firefox-devtools-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@mozilla/firefox-devtools-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add mozilla-firefox-devtools-mcp -t stdio -c npx -a -y @mozilla/firefox-devtools-mcp
// mcp.json
{
  "mcpServers": {
    "mozilla-firefox-devtools-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@mozilla/firefox-devtools-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 22 Sept 26 80

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 24 Sept 2026 · Analysed npm/@mozilla/firefox-devtools-mcp@0.10.4

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo mozilla/firefox-devtools-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/mozilla/firefox-devtools-mcp/.github/workflows/publish.yml@refs/tags/v0.10.4
Rekor log index 2909006261
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:c65f80fb25d5c20669a7aff1f8281808bf29ca03b0be0039f1ef7799c9d8d65ed2d8df58be0201ba0aa18ae16825e853f875870c10650ef1160119150

Background: How many MCP packages publish verified provenance →

Dependencies 143 packages
Packages resolved 143
Stale 47
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 48 exposed · ~4,192 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
accept_dialog ~30

Accept browser dialog. Provide promptText for prompts.

NameTypeReqDescription
promptTextstringText for prompt dialogs

No output schema declared.

No examples provided.

clear_console_messages ~14

Clear collected console messages.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

clear_downloads ~15

Clear the tracked downloads buffer.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

clear_snapshot ~17

Clear snapshot UIDs. Usually not needed.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

click_by_uid ~46

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

NameTypeReqDescription
dblClickbooleanDouble-click (default: false)
uidstringyesElement UID from snapshot

No output schema declared.

No examples provided.

close_firefox_session ~60

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

close_page ~25

Close tab by index.

NameTypeReqDescription
pageIdxnumberyesTab index to close

No output schema declared.

No examples provided.

dismiss_dialog ~13

Dismiss browser dialog.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

drag_by_uid_to_uid ~43

Drag element to another (HTML5 drag events).

NameTypeReqDescription
fromUidstringyesSource element UID
toUidstringyesTarget element UID

No output schema declared.

No examples provided.

enable_debugger ~31

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

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

evaluate_script ~275

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.

NameTypeReqDescription
argsarrayUIDs to pass as function arguments
functionstringyesJS function string, e.g. () => document.title
previewnumberNumber of characters of the saved result to return inline as a preview when saveTo is used. Omit for no preview.
sandboxstringEvaluate in an isolated sandbox realm with this name instead of the page realm. The sandbox shares the page DOM and keeps the native built-ins even where the page overrode them. Page-defined globals…
saveToboolean|stringSave the result to a file as JSON instead of returning it inline. Pass a file path, an existing directory (generated file inside), or true (generated file under ~/.firefox-devtools-mcp/output/). Rela…
timeoutnumberTimeout in ms (default: 5000)

No output schema declared.

No examples provided.

fill_by_uid ~39

Fill text input/textarea by UID.

NameTypeReqDescription
uidstringyesInput element UID from snapshot
valuestringyesText to fill

No output schema declared.

No examples provided.

fill_form_by_uid ~32

Fill multiple form fields at once.

NameTypeReqDescription
elementsarrayyesArray of {uid, value} pairs

No output schema declared.

No examples provided.

get_firefox_info ~31

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

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_firefox_output ~102

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.

NameTypeReqDescription
grepstringFilter log lines containing this string (case-insensitive)
linesnumberNumber of recent log lines to return (default: 100, max: 10000)
sincenumberOnly show logs written in the last N seconds

No output schema declared.

No examples provided.

get_logpoint_results ~39

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

NameTypeReqDescription
logpointstringyesLogpoint id returned by set_logpoint.

No output schema declared.

No examples provided.

get_network_request ~191

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.

NameTypeReqDescription
formatstringOutput format (default: text)
idstringRequest ID from list_network_requests
previewnumberNumber of characters of the saved output to return inline as a preview when saveTo is used. Omit for no preview.
saveToboolean|stringSave the request details with full untruncated headers and bodies to a file as JSON instead of returning them inline (binary bodies are stored base64-encoded). Pass a file path, an existing directory…
urlstringURL fallback (may match multiple)

No output schema declared.

No examples provided.

get_page_text ~163

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

NameTypeReqDescription
maxLengthnumberMax characters to return inline (default: 20000). Ignored when saveTo is used.
previewnumberNumber of characters of the saved text to return inline as a preview when saveTo is used. Omit for no preview.
saveToboolean|stringSave the full untruncated text to a file instead of returning it inline. Pass a file path, an existing directory (generated file inside), or true (generated file under ~/.firefox-devtools-mcp/output/…

No output schema declared.

No examples provided.

get_script_source ~46

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

NameTypeReqDescription
scriptUrlstringyesURL of the script to retrieve.

No output schema declared.

No examples provided.

hover_by_uid ~26

Hover over element by UID.

NameTypeReqDescription
uidstringyesElement UID from snapshot

No output schema declared.

No examples provided.

install_extension ~137

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

NameTypeReqDescription
pathstringFile path (for archivePath or path types)
permanentbooleanFirefox-specific: Install permanently (requires signed extension). Default: false (temporary install)
typestringyesExtension data type: "archivePath" for .xpi/.zip, "base64" for encoded data, "path" for unpacked directory
valuestringBase64-encoded extension data (for base64 type)

No output schema declared.

No examples provided.

list_console_messages ~228

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

NameTypeReqDescription
formatstringOutput format (default: text)
levelstringFilter by level
limitnumberMax messages (default: 50)
previewnumberNumber of characters of the saved output to return inline as a preview when saveTo is used. Omit for no preview.
saveToboolean|stringSave matching messages to a file in full (untruncated) instead of returning them inline. Saves all matching messages by default; pass an explicit limit to cap how many are saved. Pass a file path, an…
sinceMsnumberOnly last N ms
sourcestringFilter by source
textContainsstringText filter (case-insensitive)

No output schema declared.

No examples provided.

list_downloads ~73

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

NameTypeReqDescription
formatstringOutput format (default: text)
limitnumberMax downloads (default: 50)
statusstringFilter by status
urlContainsstringURL filter (case-insensitive)

No output schema declared.

No examples provided.

list_network_requests ~317

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.

NameTypeReqDescription
detailstringDetail level (default: summary)
formatstringOutput format (default: text)
isXHRbooleanXHR/fetch only
limitnumberMax requests (default: 50)
methodstringHTTP method filter
previewnumberNumber of characters of the saved output to return inline as a preview when saveTo is used. Omit for no preview.
resourceTypestringResource type filter
saveToboolean|stringSave matching requests to a file as JSON instead of returning them inline. Saves full untruncated headers by default; pass detail=summary or min for a lean form, or an explicit limit to cap how many…
sinceMsnumberOnly last N ms
sortBystringSort field (default: timestamp)
statusnumberExact status code
statusMaxnumberMax status code
statusMinnumberMin status code
urlContainsstringURL filter (case-insensitive)

No output schema declared.

No examples provided.

list_pages ~23

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

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_scripts ~28

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

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

navigate_history ~29

Navigate history back/forward. UIDs become stale.

NameTypeReqDescription
directionstringyesback or forward

No output schema declared.

No examples provided.

navigate_page ~104

Navigate selected tab to URL.

NameTypeReqDescription
urlstringyesTarget URL
waitstringWhen to return: 'none' (navigation started), 'interactive' (DOMContentLoaded), 'complete' (load event fired, including subresources). Omit for the default: 'interactive' for http/https/data/blob/file…

No output schema declared.

No examples provided.

new_page ~108

Open new tab at URL. Returns tab index.

NameTypeReqDescription
urlstringyesTarget URL
waitstringWhen to return: 'none' (navigation started), 'interactive' (DOMContentLoaded), 'complete' (load event fired, including subresources). Omit for the default: 'interactive' for http/https/data/blob/file…

No output schema declared.

No examples provided.

press_key ~212

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

NameTypeReqDescription
keystringyesOne key, optionally preceded by "+"-separated modifiers, such as "Escape", "Enter" or "ctrl+shift+t". Modifiers: ctrl, alt, shift, meta. Named keys: Enter, Return, NumpadEnter, Tab, Backspace, Delete…
uidstringFocusable element UID from snapshot to focus before pressing (default: the already focused element)

No output schema declared.

No examples provided.

profiler_is_active ~18

Check whether the Firefox profiler is currently recording.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

profiler_start ~191

Start the Firefox profiler. Provide either a preset name or explicit recording options (entries, interval, features, threads). Cannot combine both. Valid presets: web-developer, firefox-platform, graphics, media, ml, networking, power, debug.

NameTypeReqDescription
activeContextstringId of the top-level navigable to mark as the active tab in the profile. Does not restrict profiling to that tab.
entriesintegerNumber of entries to keep in the sampling buffer. Required when no preset is given.
featuresarrayProfiler features to enable. Required when no preset is given.
intervalnumberSampling interval in milliseconds. Required when no preset is given.
presetstringProfiler preset name. Cannot be combined with entries, interval, features, or threads.
threadsarrayThread names to profile. Required when no preset is given.

No output schema declared.

No examples provided.

profiler_stop ~67

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.

NameTypeReqDescription
discardbooleanIf true, stop the profiler and discard the recording instead of saving it to disk. Defaults to false.

No output schema declared.

No examples provided.

remove_logpoint ~32

Remove a previously set logpoint.

NameTypeReqDescription
logpointstringyesLogpoint id returned by set_logpoint.

No output schema declared.

No examples provided.

resolve_uid_to_selector ~34

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

NameTypeReqDescription
uidstringyesUID from snapshot

No output schema declared.

No examples provided.

screencast_start ~160

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.

NameTypeReqDescription
contextstringId of the top-level browsing context to record. Defaults to the currently selected page.
frameRateintegerTarget frame rate of the recording, in frames per second.
heightintegerHeight of the recorded video in pixels. Defaults to the viewport height.
mimeTypestringMIME type of the output file. Defaults to "video/webm".
widthintegerWidth of the recorded video in pixels. Defaults to the viewport width.

No output schema declared.

No examples provided.

screencast_stop ~71

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

NameTypeReqDescription
screencaststringId of the screencast to stop, as returned by screencast_start. Optional when exactly one recording is active.

No output schema declared.

No examples provided.

screenshot_by_uid ~93

Capture element screenshot by UID as base64 PNG.

NameTypeReqDescription
saveToboolean|stringSave the screenshot to a file instead of returning it as image data in the response. Pass a file path, an existing directory (generated file inside), or true (generated file under ~/.firefox-devtools…
uidstringyesElement UID from snapshot

No output schema declared.

No examples provided.

screenshot_page ~107

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

NameTypeReqDescription
fullPagebooleanCapture the whole scrollable document (default: false)
saveToboolean|stringSave the screenshot to a file instead of returning it as image data in the response. Pass a file path, an existing directory (generated file inside), or true (generated file under ~/.firefox-devtools…

No output schema declared.

No examples provided.

select_page ~65

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

NameTypeReqDescription
pageIdxnumberTab index (0-based, most reliable)
titlestringTitle substring (case-insensitive)
urlstringURL substring (case-insensitive)

No output schema declared.

No examples provided.

set_download_behavior ~130

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.

NameTypeReqDescription
behaviorstringyes'allowed' saves downloads to `downloadFolder`, 'denied' cancels them, 'default' resets to the browser default
downloadFolderstringPath to the folder where downloads should be stored, created if missing. Only used for behavior='allowed', where it defaults to ~/.firefox-devtools-mcp/output/downloads. Relative paths resolve agains…

No output schema declared.

No examples provided.

set_logpoint ~98

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.

NameTypeReqDescription
expressionstringyesJavaScript expression to evaluate each time the logpoint is hit.
linenumberyesLine number (1-based).
urlstringyesURL of the script.

No output schema declared.

No examples provided.

set_network_cache ~118

Control the HTTP cache. Use behavior='bypass' so every request goes to the network — 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.

NameTypeReqDescription
behaviorstringyes'bypass' to skip the cache, 'default' to restore normal caching
scopestring'tab' (default) applies to the selected tab; 'global' applies browser-wide

No output schema declared.

No examples provided.

set_viewport_size ~36

Set viewport dimensions in pixels.

NameTypeReqDescription
heightnumberyesHeight in pixels
widthnumberyesWidth in pixels

No output schema declared.

No examples provided.

take_snapshot ~256

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.

NameTypeReqDescription
includeAllbooleanInclude all visible elements without relevance filtering. Useful for Vue/Livewire apps (default: false)
includeAttributesbooleanInclude ARIA attributes (default: false)
includeTextbooleanInclude text (default: true)
maxDepthnumberMax tree depth
maxLinesnumberMax lines (default: 100)
previewnumberNumber of characters of the saved output to return inline as a preview when saveTo is used. Omit for no preview.
saveToboolean|stringSave the complete snapshot text to a file (ignores maxLines) instead of returning it inline. Pass a file path, an existing directory (generated file inside), or true (generated file under ~/.firefox-…
selectorstringCSS selector to scope snapshot to specific element (e.g., "#app")

No output schema declared.

No examples provided.

type_text ~123

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.

NameTypeReqDescription
submitKeystringKey to press after the text, such as "Enter" or "Tab". Same syntax as press_key.
textstringyesText to type
uidstringFocusable element UID from snapshot to focus before typing (default: the already focused element)

No output schema declared.

No examples provided.

uninstall_extension ~55

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

NameTypeReqDescription
idstringyesExtension ID (e.g., "addon@example.com")

No output schema declared.

No examples provided.

upload_file_by_uid ~41

Upload file to file input by UID.

NameTypeReqDescription
filePathstringyesLocal file path
uidstringyesFile input UID from snapshot

No output schema declared.

No examples provided.

Common questions

What is the Firefox DevTools MCP server?

Firefox DevTools MCP is listed in the public MCP registry as io.github.mozilla/firefox-devtools-mcp. Control and debug Firefox: navigate, fill forms, inspect network and console, profile. This page covers its npm package (@mozilla/firefox-devtools-mcp).

Is the Firefox DevTools MCP server safe to use?

Firefox DevTools MCP scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 24 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Firefox DevTools MCP server expose?

Firefox DevTools MCP exposes 48 tools: list_pages, new_page, navigate_page, select_page, close_page, and 43 more. Their descriptions and schemas cost roughly 4,192 tokens of context every time the server is loaded.

Is the Firefox DevTools MCP server still maintained?

Firefox DevTools MCP is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Firefox DevTools MCP server under?

Firefox DevTools MCP declares the MIT OR Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.