Firefox DevTools MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| START_URL | No | Open this URL on start. | |
| ENABLE_SCRIPT | No | Enable the evaluate_script tool. Set to 'true' to enable. | |
| ANDROID_PACKAGE | No | Android app package name. Default is 'org.mozilla.firefox'. | |
| MARIONETTE_PORT | No | Marionette port for connect-existing mode. Default is 2828. | |
| CONNECT_EXISTING | No | Attach to an already-running Firefox instead of launching a new one. Set to 'true' to enable. | |
| FIREFOX_HEADLESS | No | Run without UI. Set to 'true' to enable headless mode. | |
| ACCEPT_INSECURE_CERTS | No | Ignore TLS errors. Set to 'true' to accept insecure certificates. | |
| ENABLE_PRIVILEGED_CONTEXT | No | Enable privileged context tools. Set to 'true' to enable. Requires MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1. |
Capabilities
Features and capabilities supported by this server
| 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_pageB | 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. |
| get_page_textA | Get the visible text of the page (document.body.innerText). Caps at maxLength (default 20000 chars); saveTo saves the full text to a file. |
| take_snapshotA | Capture DOM snapshot with stable UIDs. Retake after navigation. Output caps at maxLines (default 100); scope with selector or dump the full tree with saveTo. |
| 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_uidA | Hover over element by UID. |
| fill_by_uidC | Fill text input/textarea by UID. |
| drag_by_uid_to_uidA | Drag element to another (HTML5 drag events). |
| fill_form_by_uidC | Fill multiple form fields at once. |
| upload_file_by_uidB | Upload file to file input by UID. |
| screenshot_pageA | Capture page screenshot as base64 PNG. |
| screenshot_by_uidA | Capture element screenshot by UID as base64 PNG. |
| list_downloadsA | List downloads tracked since startup, including status and saved file path. |
| clear_downloadsB | Clear the tracked downloads buffer. |
| set_download_behaviorA | 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. |
| accept_dialogA | Accept browser dialog. Provide promptText for prompts. |
| dismiss_dialogA | Dismiss browser dialog. |
| navigate_historyA | Navigate history back/forward. UIDs become stale. |
| set_viewport_sizeC | Set viewport dimensions in pixels. |
| get_firefox_outputA | Retrieve Firefox 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_firefox_infoA | Get information about the current Firefox instance configuration, including binary path, environment variables, and output file location. |
| restart_firefoxA | Restart Firefox with different configuration. Allows changing binary path, environment variables, and other options. All current tabs will be closed. |
| install_extensionA | Install a Firefox extension using WebDriver BiDi webExtension.install command. Supports installing from archive (.xpi/.zip), base64-encoded data, or unpacked directory. |
| uninstall_extensionA | Uninstall a Firefox extension using WebDriver BiDi webExtension.uninstall command. Requires the extension ID returned by install_extension or obtained from list_extensions. |
| screencast_startA | Start recording a screencast (video) of the current page viewport, saving the output to a file in the downloads directory. Returns a screencast id to pass to screencast_stop. Multiple recordings can run at once. |
| screencast_stopA | Stop an in-progress screencast recording started with screencast_start and finalize the video file. Returns the path to the saved file. |
| evaluate_scriptA | Run a JS function in the page and return its result. Prefer this for targeted reads (a value, text, computed style, whether an element exists) instead of a full take_snapshot. Use the UID interaction tools for clicking, typing, and filling. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/freema/firefox-devtools-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server