firefox-browser-control
Controls a running Firefox browser session, providing tools to list tabs and native tab groups, group and ungroup tabs, and open, activate, navigate, or close non-private tabs.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@firefox-browser-controlList my open Firefox tabs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Firefox Browser Control for Codex
Control the Firefox session you already have open from Codex. The plugin can list and organize non-private tabs, create native tab groups, and safely open, activate, navigate, or close tabs.
The Firefox extension and its bridge run locally, with no TCP listener, telemetry, advertising, or direct extension network requests. Browser data requested by the user is passed to their configured Codex environment; see the privacy policy.
What it can do
Check whether the Firefox companion extension is connected.
List tabs and native tab groups.
Group selected tabs or group tabs by URL/title matches.
Ungroup, open, activate, navigate, and close tabs.
It intentionally cannot read page content, click elements, fill forms, inspect private windows, or navigate to non-HTTP(S) URLs.
Example prompts:
“Group my open Gmail tabs in Firefox.”
“List my open Firefox tabs.”
“Open the project documentation in a new Firefox tab.”
Related MCP server: universal-browser-bridge
Install
See plugins/firefox-browser-control/INSTALL.md for the full setup. In short:
git clone https://github.com/thenailedone/firefox-browser-control.git
cd firefox-browser-control
codex plugin marketplace add "$PWD"
codex plugin add firefox-browser-control@firefox-browser-control
node plugins/firefox-browser-control/scripts/install-native-host.mjsInstall the signed extension from Mozilla Add-ons when it becomes available. During development, load plugins/firefox-browser-control/extension/manifest.json temporarily from about:debugging#/runtime/this-firefox. Then start a new Codex task.
How it works
The implementation is a four-part local bridge:
Codex
│ MCP over stdio
▼
MCP server (Node.js)
│ newline-delimited JSON over a user-only Unix socket
▼
Firefox native-messaging host (Node.js)
│ Firefox native messaging over stdin/stdout
▼
Firefox WebExtension
│ WebExtension APIs
▼
Non-private tabs and tab groups in the running Firefox profileCodex discovers
.mcp.jsonfrom the plugin manifest and launchesscripts/mcp-server.mjs.The MCP server exposes strongly described tools such as
firefox_list_tabsandfirefox_group_tabs.A tool call is assigned a random request ID and sent through the local Unix socket.
scripts/native-host.mjsrelays that request through Firefox's length-prefixed native-messaging protocol.extension/background.jsexecutes the requested operation with Firefox WebExtension APIs and returns a result along the same path.
The native host owns the socket for as long as the Firefox extension is connected. The MCP server makes a short-lived socket connection for each tool call, so no background daemon is required outside Firefox.
Why there are two protocols
Codex speaks Model Context Protocol over stdio, while Firefox extensions can talk to local programs only through native messaging. The small Unix-socket relay connects those environments without opening a TCP port or exposing the browser to the network.
Tool surface
Tool | Purpose |
| Confirm that the extension and native bridge are connected. |
| Return tab IDs, sanitized origins, windows, and group IDs. |
| List native Firefox tab-group IDs and display state. |
| Put explicit tab IDs into a named group. |
| Match tabs by URL/title and group them per window. |
| Remove tabs from their current group. |
| Open a URL. |
| Navigate a selected tab. |
| Focus a tab and its window. |
| Close selected tabs. |
Security model
The bridge listens on a Unix socket, not a network port.
The socket is restricted to the current operating-system user (
0600).Firefox accepts native messages only from the extension ID declared by the installer.
Private-browsing tabs are invisible to the extension.
Full URLs, URL queries/fragments, page titles, and page content are not returned to Codex; tab-list results contain origins only.
The MCP server enforces explicit JSON Schemas and a fixed tool-to-method mapping.
Requests time out after ten seconds.
The extension performs only the tab methods in its fixed dispatcher and restricts navigation to HTTP(S) URLs plus
about:blank.The temporary-directory fallback creates a per-user
0700directory, and the socket is0600.
The extension requests no website host permissions and makes no direct network requests. It transmits sanitized browsing activity only when the user initiates a Codex tab-management command.
Repository layout
.agents/plugins/marketplace.json Codex marketplace catalog
plugins/firefox-browser-control/
.codex-plugin/plugin.json Plugin metadata
.mcp.json MCP server launch configuration
extension/ Firefox WebExtension
scripts/mcp-server.mjs MCP tool server
scripts/native-host.mjs Firefox/native-socket relay
scripts/install-native-host.mjs Native-host installer
scripts/review-client.mjs Standalone reviewer test client
skills/control-firefox/SKILL.md Agent usage guidanceDevelopment
Run the repository checks with Node.js 20 or later:
npm testBuild the AMO-ready extension archive:
npm run build:extensionThe ZIP is written to artifacts/. Store listing copy, reviewer instructions, and the submission checklist are in store/AMO_SUBMISSION.md.
After changing the extension, use Reload beside the temporary add-on in about:debugging. After changing plugin metadata, the skill, or MCP server, reinstall the plugin and start a new Codex task.
Limitations
The extension is unsigned and must be loaded again after Firefox restarts.
Automatic native-host installation currently supports Linux and macOS.
The relay currently uses Unix sockets and does not support native Windows.
The extension requires Node.js, the native host, and either Codex or the standalone review client.
This is an independent community integration and is not affiliated with or endorsed by Mozilla or OpenAI.
License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityCmaintenanceEnables Claude Code to inspect network traffic, query the DOM, read console logs, and capture WebSocket frames in Firefox.17
- AlicenseNot gradedqualityBmaintenanceEnables MCP-compatible AI agents to securely control Chrome tabs via a local bridge, with explicit per-tab sharing and human approval for consequential actions.MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-capable CLIs to operate real, already-logged-in Firefox tabs via a WebExtension and native messaging, without simulated input. Supports navigation, clicking, typing, reading, screenshots, and console/network capture with policy gating and frame awareness.MIT
- FlicenseNot gradedqualityCmaintenanceLocal MCP server for Codex that provides on-demand, read-only access to Edge tabs and bookmarks, plus controlled interaction with agent-owned tabs. Requires manual activation via the browser extension and enforces a fail-closed security model.
Related MCP Connectors
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Stealth web browser for agents: search, fetch, click and type through persistent sessions over MCP.
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/thenailedone/firefox-browser-control'
If you have feedback or need assistance with the MCP directory API, please join our Discord server