Skip to main content
Firefox and Zen have two connection options. The Firefox extension shares existing tabs and signed-in sessions through the same dashboard as Chromium. Developer mode launches a separate profile through WebDriver BiDi. Both keep the same MCP tool names, with different capability limits.

Install the Firefox extension

Use Firefox 153 or later, or a Zen build based on Firefox 153 or later. Build the current source:
This creates dist/firefox-extension/ and dist/browspark-firefox-extension.zip. The separate dist/browspark-extension.zip is for Chromium.
  1. Open about:debugging#/runtime/this-firefox in Firefox or Zen.
  2. Choose Load Temporary Add-on and select dist/firefox-extension/manifest.json or the Firefox ZIP.
  3. Register the companion from the same source revision with your MCP client: use command bun and the absolute path to companion/src/index.ts as its argument. This keeps the extension and companion protocol versions aligned before a release is published.
  4. Open the Browspark toolbar icon. If shown, choose Allow website access, then Enable Firefox automation to grant user-script permission. Share the HTTP or HTTPS tabs the agent may access.
  5. Ask the agent to call browser_status, then use the listed tabId or choose the Firefox profile’s browserId when opening a new tab.
The package is unsigned. Temporary installation lasts until the browser restarts; reload it through about:debugging afterwards. Permanent installation in standard Firefox needs Mozilla signing. See Mozilla’s temporary installation instructions. The extension requests access to all websites (<all_urls>) because Firefox requires this permission for native tab screenshots, plus user-script execution for page automation. Browspark still limits automation to shared HTTP/HTTPS tabs and checks sharing before each command. It connects to your local companion; content returned to your MCP client may be processed by your chosen AI provider. Firefox browser pages, add-on pages, protected Mozilla sites and local files are unavailable.

Extension tool coverage

The extension provides shared-tab automation through Firefox WebExtension APIs and a sandboxed user-script world. It does not expose a native debugger. See the coverage notes below before choosing between an existing shared tab and a separate developer profile. All 43 tool names remain registered. Unsupported actions return explicit errors for the selected Firefox extension tab. Use a separate Firefox or Zen developer session when you need supported BiDi capabilities such as native input or network inspection; that session has its own profile and logins. Use Chromium developer mode for CDP or Lighthouse.

Launch a separate Firefox or Zen developer browser

Install the browser, register the companion, and ask your agent to open a Firefox or Zen developer session. For Firefox it calls browser_session with:
For Zen, change browser to "zen" and use its own context, such as "zen". You can run both alongside Chrome and Brave. Use a returned tab ID with browser_snapshot, browser_click, browser_read, or another tool. When opening another tab, specify mode: "dev" and the intended context. See using multiple browsers. browserPath selects the executable for the chosen browser. Set BROWSPARK_FIREFOX for Firefox or BROWSPARK_ZEN for Zen in your MCP server’s environment; the existing firefoxPath option remains supported. Other Firefox-based browsers, such as LibreWolf, can be selected with browser: "firefox" and an executable path when their build enables WebDriver BiDi. Custom builds may disable remote automation or omit commands; an executable path does not guarantee the same capabilities in every fork. Profiles persist under ~/.browspark/profiles/.firefox/<context> for Firefox and ~/.browspark/profiles/.zen/<context> for Zen (under BROWSPARK_PROFILES when set). They are separate from each other and from Chromium profiles, including the default context. A context name can belong to only one running browser at a time. Pass the matching browser when deleting a stopped context.

Developer-mode tool coverage

Unsupported actions return an explicit error. They do not silently run in Chrome or substitute results from another browser. Network capture does not include WebSocket/SSE frames, TLS certificate details, remote IPs, or Chrome initiator stacks. Network throttling and service-worker bypass are unavailable. Replaying a request with a body requires its body to be supplied explicitly when the original was not captured. Literal multiline text in browser_fill or the text argument of browser_key is unavailable in Firefox and Zen; it returns an error before typing. Ordinary text and explicit keyboard actions use native browser input. These developer-mode limits apply to both Firefox and Zen. The generated CDP capability matrix describes Chromium only. devtools_capabilities reports the selected tab’s backend and capabilities; a supported domain does not imply that every Chrome command in it is available.

Launch options

  • headless: true runs the browser without a window. Use screenshots to inspect it; the Chrome live screencast is unavailable.
  • proxy accepts an HTTP or SOCKS proxy without embedded credentials.
  • args passes additional command-line switches to the selected browser.
  • devtools: true and unpacked extensions are unavailable on Firefox and Zen and return an error.
Closing a session keeps its profile. The companion closes browsers it launched when it exits, as in developer mode.