Skip to content

Releases: mozilla/firefox-devtools-mcp

0.9.2

19 Apr 11:45

Choose a tag to compare

Added

  • evaluate_privileged_script now detects const/let/var statements and rejects them with a helpful error message suggesting IIFE workaround
  • BiDi console and network events now degrade gracefully when Firefox Remote Agent is not running, instead of crashing
  • Comprehensive e2e scenario integration tests covering the full FirefoxClient API
  • Unit tests for privileged context state consistency and statement detection
  • Testing documentation (docs/testing.md)

Fixed

  • Privileged context state not preserved across tool calls: set_firefox_prefs and list_extensions no longer silently revert a privileged context selection
  • Session cleanup on connection failure: getFirefox() now closes the failed instance to prevent zombie geckodriver processes and Marionette session locks

Changed

  • Breaking: Removed --marionette-host CLI parameter (connect-existing mode now uses localhost only)
  • Rewrote connect-existing mode to use Selenium's native --connect-existing feature via ServiceBuilder, replacing the custom GeckodriverHttpDriver HTTP client (~530 lines removed)
  • Replaced custom IDriver/IElement/IBiDi interfaces with native WebDriver/WebElement from selenium-webdriver
  • Improved error messages for BiDi-dependent features (console/network) to suggest --remote-debugging-port
  • Pinned all dependency versions for build reproducibility
  • Updated dependencies: @modelcontextprotocol/sdk 1.29.0, tsup 8.5.0, tsx 4.21.0, typescript-eslint 8.58.0

Full Changelog: 0.9.1...0.9.2

0.9.1

29 Mar 15:11

Choose a tag to compare

What's Changed

Bug Fixes

  • Fixed SERVER_VERSION reporting 0.7.1 instead of actual package version — now reads from package.json dynamically
  • Fixed connect-existing mode: session cleanup, BiDi support, --marionette-host parameter (#50)
  • Fixed lint/type errors from PR #50 merge
  • Resolved 11 security vulnerabilities in dependencies (#47)

Improvements

  • Removed fragile process.on handlers in test setup that masked real errors and caused MaxListenersExceededWarning
  • Added unit tests for connect-existing mode (BiDi, session cleanup, reconnect)

Contributors

Full Changelog: 0.9.0...0.9.1

0.9.0

28 Mar 02:26

Choose a tag to compare

What's Changed

New Features

  • Content script evaluation — evaluate JS against web pages (--enable-script flag)
  • Privileged context support — chrome-privileged context for Firefox internal development (--enable-privileged-context flag)
  • WebExtension tools — install, uninstall, and list Firefox extensions
  • Firefox restart tool — restart Firefox with new config at runtime (preserves profile path)
  • Preferences configuration — read/write Firefox prefs via CLI (--pref name=value) and runtime tools (set_firefox_prefs, get_firefox_prefs)
  • Environment variables & output capture--env and --output-file CLI flags
  • WebDriver BiDi commands — direct support for sending BiDi commands
  • MOZ_LOG support — Firefox logging integration

Fixes

  • Use native --profile arg for reliable profile loading
  • Wait for WebSocket ready before sending BiDi commands
  • Fix pref tools failing when env var passed via --env
  • Handle disconnected Firefox gracefully in restart_firefox
  • Don't kill unrelated Firefox processes on test cleanup

Breaking Changes

  • Script evaluation and privileged context are now opt-in via --enable-script and --enable-privileged-context flags
  • Removed non-English documentation files

Contributors

Full Changelog: 0.8.1...0.9.0

0.8.1

17 Mar 18:33

Choose a tag to compare

What's Changed

Fixes

  • Fixed flaky snapshot integration test on Node 22 CI runners (increased Firefox startup timeout from 30s to 60s)
  • Upgraded all GitHub Actions from v4 to v5 (checkout, setup-node) and upload-artifact to v7 to resolve Node.js 20 deprecation warnings
  • Publish workflow now uses Node.js 22

Full Changelog: 0.8.0...0.8.1

0.8.0

17 Mar 18:25

Choose a tag to compare

What's Changed

New Feature: Connect to existing Firefox (--connect-existing)

You can now attach to an already-running Firefox instance instead of launching a new one. This enables automating your existing browsing session — with cookies, logins, and open tabs intact.

Usage

# Start Firefox with Marionette enabled
firefox --marionette

# Run the MCP server
npx firefox-devtools-mcp --connect-existing --marionette-port 2828

Also supports environment variables: CONNECT_EXISTING=true MARIONETTE_PORT=2828

How it works

  • Introduces GeckodriverHttpDriver — a thin HTTP client that talks to geckodriver's WebDriver REST API directly, bypassing selenium-webdriver's BiDi auto-upgrade (which hangs in connect-existing mode)
  • Adds IDriver/IElement interfaces for compile-time safety across all consumers
  • BiDi-dependent features (console events, network events) are gracefully skipped in connect-existing mode; all other features work (snapshots, clicks, navigation, screenshots, tab management)
  • On close/reset, only the geckodriver process is killed — the user's Firefox stays open

Contributors

  • feat: add --connect-existing mode to attach to running Firefox by @rdeknijf-ewx in #44

Full Changelog: 0.7.4...0.8.0

0.7.4

27 Feb 10:20
7175292

Choose a tag to compare

What's Changed

  • test: Add unit tests for injected browser scripts by @freema in #43

Full Changelog: 0.7.3...0.7.4

0.7.3

24 Feb 21:16

Choose a tag to compare

What's Changed

  • docs: Document solutions for Windows MCP server errors by @EzioMercer in #41

New Contributors

Full Changelog: 0.7.1...0.7.3

0.7.1

13 Feb 20:14
35ec56c

Choose a tag to compare

What's Changed

  • fix: Update version to 0.7.1 and simplify saveTo parameter descriptio… by @freema in #39

Full Changelog: 0.7.0...0.7.1

0.7.0

13 Feb 19:57
8aefe29

Choose a tag to compare

What's Changed

  • feat: Enhance screenshot functionality with saveTo option and update … by @freema in #38

Full Changelog: 0.6.1...0.7.0

0.6.1

06 Feb 17:07
a4f9a1b

Choose a tag to compare

What's Changed

  • fix: Improve snapshot visibility checking and error handling by @freema in #37

Full Changelog: 0.6.0...0.6.1