About zen-devtools-mcp
zen-devtools-mcp wraps `@mozilla/firefox-devtools-mcp` to connect to an already-running Zen, Firefox, or compatible browser. It restarts the browser with Marionette enabled when needed, then starts the MCP server.
Key features
- 01Attaches to a running browser
- 02Enables Marionette through a restart
- 03Supports Zen, Firefox, and forks
- 04Configurable app, process, and port
Use cases
- 01Inspecting a running Zen browser
- 02Connecting Firefox to browser devtools
- 03Using a custom Marionette port
MCP support
It launches `@mozilla/firefox-devtools-mcp` with `--connectExisting --enableScript` and passes through stdio, allowing an MCP client to use the existing browser.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEzen-devtools-mcp
Wraps @mozilla/firefox-devtools-mcp so it attaches to your already-running Firefox-based browser — Zen Browser, Firefox, or any fork — instead of launching a throwaway instance.
The upstream --connectExisting mode requires the browser to have been launched with Marionette enabled. Plain relaunches (clicking the dock icon, open -a Zen) don't set that, so attaching fails. This wrapper fixes that: if Marionette isn't up, it gracefully quits the browser (session restore keeps your tabs), relaunches it with --marionette, waits for the port, then starts the MCP.
Install / run
No install needed — run it straight from GitHub:
npx github:sushruth/zen-devtools-mcp
bunx github:sushruth/zen-devtools-mcp
Options
| Flag | Default | What it controls |
|---|---|---|
--app | Zen | macOS app name for open -a / quit |
--process | zen | process name for pgrep -x |
--port | 2828 | Marionette port to probe and listen on |
Examples:
# Firefox instead of Zen
npx github:sushruth/zen-devtools-mcp --app Firefox --process firefox
# Zen with a custom Marionette port
npx github:sushruth/zen-devtools-mcp --port 2829
MCP client config
OpenCode example:
"zen-devtools": {
"type": "local",
"command": ["npx", "-y", "github:sushruth/zen-devtools-mcp"],
"enabled": true
},
"firefox-devtools": {
"type": "local",
"command": ["npx", "-y", "github:sushruth/zen-devtools-mcp",
"--app", "Firefox", "--process", "firefox", "--port", "2829"],
"enabled": true
}
Claude Code (claude mcp add-json zen-devtools '<json>' or .mcp.json):
"zen-devtools": {
"command": "npx",
"args": ["-y", "github:sushruth/zen-devtools-mcp"]
}
Notes
- Session restore preserves tabs across wrapper-triggered restarts.
- Marionette can't be enabled on a live browser process — a restart is unavoidable the first time.
- macOS-only (
open,osascript,pgrep). - Passes
--connectExisting --enableScriptto the underlying MCP; it inherits stdio from its parent.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.