zen-devtools-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ZEN_PATH | No | Absolute path to Zen binary. | |
| START_URL | No | Open this URL on start. | |
| AUTO_PROFILE | No | Use a persistent profile under ~/.zen-devtools-mcp. Set to 'false' to disable. | true |
| ZEN_HEADLESS | No | Run Zen without UI. Set to 'true' to enable headless mode. | false |
| ENABLE_SCRIPT | No | Enable the evaluate_script tool and debugging tools. Set to 'true' to enable. | false |
| MARIONETTE_PORT | No | Marionette port for connect-existing mode. | 2828 |
| CONNECT_EXISTING | No | Attach to an already-running Zen instead of launching a new one. Set to 'true' to enable. | false |
| ACCEPT_INSECURE_CERTS | No | Ignore TLS errors. Set to 'true' to enable. | false |
| ENABLE_PRIVILEGED_CONTEXT | No | Enable privileged context tools. Requires MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1. Set to 'true' to enable. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_pagesA | List open tabs (index, title, URL). Selected tab is marked. |
| new_pageA | Open new tab at URL. Returns tab index. |
| navigate_pageC | Navigate selected tab to URL. |
| select_pageA | Select active tab by index, URL, or title. Index takes precedence. |
| close_pageB | Close tab by index. |
| list_console_messagesB | List console messages. Supports filtering by level, time, text, source. |
| clear_console_messagesB | Clear collected console messages. |
| list_network_requestsC | List network requests. Returns IDs for get_network_request. |
| get_network_requestA | Get request details by ID. URL lookup as fallback. |
| take_snapshotA | Capture DOM snapshot with stable UIDs. Retake after navigation. |
| resolve_uid_to_selectorA | Resolve UID to CSS selector. Fails if stale. |
| clear_snapshotB | Clear snapshot cache. Usually not needed. |
| click_by_uidB | Click element by UID. Set dblClick for double-click. |
| hover_by_uidB | Hover over element by UID. |
| fill_by_uidB | Fill text input/textarea by UID. |
| drag_by_uid_to_uidC | Drag element to another (HTML5 drag events). |
| fill_form_by_uidB | Fill multiple form fields at once. |
| upload_file_by_uidB | Upload file to file input by UID. |
| screenshot_pageC | Capture page screenshot as base64 PNG. |
| screenshot_by_uidB | Capture element screenshot by UID as base64 PNG. |
| accept_dialogB | Accept browser dialog. Provide promptText for prompts. |
| dismiss_dialogA | Dismiss browser dialog. |
| navigate_historyA | Navigate history back/forward. UIDs become stale. |
| set_viewport_sizeB | Set viewport dimensions in pixels. |
| get_zen_outputA | Retrieve Zen output (stdout/stderr including MOZ_LOG, warnings, crashes, stack traces). Returns recent output from the capture file. Use filters to focus on specific content. |
| get_zen_infoA | Get information about the current Zen instance configuration, including binary path, version, environment variables, and output file location. |
| restart_zenA | Restart Zen with different configuration. Allows changing binary path, environment variables, and other options. All current tabs will be closed. |
| install_extensionB | Install a Zen extension using WebDriver BiDi webExtension.install command. Supports installing from archive (.xpi/.zip), base64-encoded data, or unpacked directory. |
| uninstall_extensionA | Uninstall a Zen extension using WebDriver BiDi webExtension.uninstall command. Requires the extension ID returned by install_extension or obtained from list_extensions. |
| profiler_is_activeA | Check whether the Gecko profiler is currently recording. |
| profiler_startA | Start the Gecko 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. |
| profiler_stopA | Stop the Gecko 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 32 tools
Most tools have distinct purposes, but there is slight overlap between screenshots and snapshots, and between fill_by_uid and fill_form_by_uid. Overall, agents can differentiate them.
All tool names follow a consistent verb_noun pattern with underscores, using 'by_uid' suffix where applicable. Naming is predictable and clear.
32 tools cover a wide range of browser automation features. While slightly high, each tool serves a specific need and the count is justified by the domain complexity.
The set covers core browser actions (navigation, element interaction, dialogs), debugging (console, network, profiler), and extension management. Missing high-level actions like 'wait' or 'execute script', but overall comprehensive.