Public log

@mozilla/firefox-devtools-mcp-moz

Model Context Protocol (MCP) server that lets AI agents browse the web and debug web pages with Firefox (moz build with privileged context support)

npm · fingerprint 3932f40af27a3281d92bc00d · repository · RSS

35tools
3recorded versions
45dtracked
changed 2d ago

What changed

Changed 2026-10-16 11:11 UTC

1 tool added.

+ tool added: print_page

Changed 2026-10-05 14:15 UTC

2 descriptions rewritten, 2 schema or annotation changes with the description left byte-identical, 3 tools added, 1 tool removed.

+ tool added: close_firefox_session

--- pinned/navigate_page
+++ observed/navigate_page
  {
    "annotations": {
      "readOnlyHint": false
+       },
+       "wait": {
+         "description": "When to return: 'none' (navigation started), 'interactive' (DOMContentLoaded), 'complete' (load event fired, including subresources). Omit for the default: 'interactive' for http/https/data/blob/file, 'none' for other schemes. Use 'complete' when the page must be fully loaded, e.g. before stopping a performance recording.",
+         "enum": [
+           "none",
+           "interactive",
+           "complete"
+         ],
+         "type": "string"
        }
      },
      "required": [
--- pinned/new_page
+++ observed/new_page
  {
    "annotations": {
      "readOnlyHint": false
+       },
+       "wait": {
+         "description": "When to return: 'none' (navigation started), 'interactive' (DOMContentLoaded), 'complete' (load event fired, including subresources). Omit for the default: 'interactive' for http/https/data/blob/file, 'none' for other schemes. Use 'complete' when the page must be fully loaded, e.g. before stopping a performance recording.",
+         "enum": [
+           "none",
+           "interactive",
+           "complete"
+         ],
+         "type": "string"
        }
      },
      "required": [

+ tool added: press_key

--- pinned/screenshot_page
+++ observed/screenshot_page
  {
    "annotations": {
      "readOnlyHint": true
-   "description": "Capture page screenshot as base64 PNG.",
+   "description": "Capture viewport screenshot as base64 PNG. Set fullPage for the whole scrollable document.",
    "inputSchema": {
      "properties": {
+       "fullPage": {
+         "description": "Capture the whole scrollable document (default: false)",
+         "type": "boolean"
+       },
        "saveTo": {
          "description": "Save 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-mcp/output/). Relative paths resolve against the current working directory.",
          "type": [
--- pinned/set_download_behavior
+++ observed/set_download_behavior
  {
-   "description": "Control how downloads are handled: allow (save silently to the default download directory), deny (cancel), or reset to default. Avoids the native save-file dialog. Requires a recent Firefox.",
+   "description": "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.",
    "inputSchema": {
      "properties": {
        "behavior": {
-         "description": "'allowed' saves downloads automatically, 'denied' cancels them, 'default' resets to the browser default",
+         "description": "'allowed' saves downloads to `downloadFolder`, 'denied' cancels them, 'default' resets to the browser default",
          "enum": [
            "allowed",
            "denied",
+       },
+       "downloadFolder": {
+         "description": "Path 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 against the current working directory.",
+         "type": "string"
        }
      },
      "required": [

+ tool added: type_text

tool removed: restart_firefox

Current tools

Show all 35 tool fingerprints
accept_dialog
f98e2e77c2b3ecd4
clear_downloads
61fa259334137032
clear_snapshot
e81c6b56e403ec1e
click_by_uid
b81a5b1e2ce70d50
close_firefox_session
d73dfc05269b2583
close_page
75fece5c380e380f
dismiss_dialog
d15aa43594abfa11
drag_by_uid_to_uid
c4268f94c76b3640
evaluate_script
756611d2a9acfb77
fill_by_uid
7db64c0608e5275a
fill_form_by_uid
51f439bb4a4966db
get_firefox_info
a46669dd8fac7b08
get_firefox_output
858827a6e7ef29c2
get_page_text
a91de38830a664cc
hover_by_uid
409bb9c2ea2c30dd
install_extension
d0a5730aacc4235d
list_downloads
f357102c8f3dae2b
list_pages
24347fa09483ec4e
navigate_history
fdc3522cf9fb161b
navigate_page
370832d67d46f0e1
new_page
cb2694143b9fdd24
press_key
24abc4f722afac1d
print_page
b1dac9eeb3af15ba
resolve_uid_to_selector
1e1644e93cafc43a
screencast_start
cb92ece33ae24753
screencast_stop
3a3c32b05b945801
screenshot_by_uid
f40257bba1d84a42
screenshot_page
f5b93da75a8876a9
select_page
aa54a69b2e5b3635
set_download_behavior
fb61a3bc124b7ba7
set_viewport_size
c4bbfdfc15fd8291
take_snapshot
9b7f83406913fced
type_text
065620b7b0473218
uninstall_extension
8612dafcf2da853a
upload_file_by_uid
f8c2c6f351232856

Watch this server yourself

If you run this server, put the proxy in front of it. It pins these exact fingerprints on first connect and stops the session if they move.

npx -y mcp-pin@0.2.3 -- <your @mozilla/firefox-devtools-mcp-moz command>

Or subscribe to this page's RSS feed to be told when it changes.

Badge

mcp-pin status badge for @mozilla/firefox-devtools-mcp-moz

The badge states one fact about time and nothing else. It never claims a server is safe.

[![mcp-pin](https://mcp-pin.gautamkhosla.com/badge/1352cbe30246f38d.svg)](https://mcp-pin.gautamkhosla.com/servers/1352cbe30246f38d.html)