Firefox Tab Management Agent MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FIREFOX_TABS_BRIDGE_PORT | No | The port number on which the Firefox extension bridge listens. Defaults to 8765. | 8765 |
| FIREFOX_TABS_BRIDGE_TOKEN | Yes | The shared secret token used to authenticate the MCP server with the Firefox extension. This should match the token configured in the extension. |
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 | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_firefox_bridge_statusA | Check whether the local Firefox extension is connected to this MCP server. |
| list_firefox_tabsA | List Firefox tabs with stable IDs, exact URLs, titles, window IDs, and current group IDs. |
| list_firefox_tab_groupsA | List Firefox tab groups, optionally restricted to one window ID. |
| list_firefox_windowsA | List Firefox windows with per-window tab and group counts, and each group's title and size. Use it to pick a target window for cross-window moves. |
| new_firefox_windowA | Open a new Firefox window, optionally with an explicit http(s) URL, without stealing focus by default; returns the verified window ID and first tab. |
| open_firefox_tabA | Open an explicit http:// or https:// URL in Firefox, inactive by default, and return the verified tab ID and window ID. |
| create_firefox_tab_groupA | Create a new, exactly titled Firefox group from one or more ungrouped tabs in the same window, then verify every tab. Fails if an exact group already exists. |
| move_firefox_tab_to_groupA | Move one exactly identified Firefox tab into an existing, exactly named group in the same window and verify the result. Ambiguous matches fail safely. |
| move_firefox_tabA | Move one exactly identified Firefox tab to a target position within its own window and verify the result. Ambiguous matches fail safely. |
| ungroup_firefox_tabA | Remove one exactly identified Firefox tab from its current group and verify the result. |
| pin_firefox_tabC | Pin one exactly identified Firefox tab and verify it. |
| unpin_firefox_tabA | Unpin one exactly identified Firefox tab and verify it. |
| duplicate_firefox_tabA | Duplicate one exactly identified Firefox tab and verify the new tab's URL and window. |
| set_firefox_tab_group_colorA | Set the color of one exactly named Firefox group and verify the resulting color. |
| move_firefox_tab_to_windowA | Move one exactly identified Firefox tab to another window (without grouping it) and verify the resulting window. |
| open_firefox_tabs_into_groupA | Open a batch of explicit http(s) URLs in the background and put every new tab into one exactly named group in one atomic operation (creating the group only if missing); on failure, already opened tabs are closed again. |
| wait_for_firefox_tabA | Wait until the Firefox extension reports a tab as fully loaded (event-driven; returns immediately if the event already arrived). Use it after open/duplicate to know when the page finished loading. |
| get_active_firefox_tabA | Return the currently active tab of the focused Firefox window (or null if none). |
| restore_firefox_tabA | Restore the most recently closed Firefox tab or window (or a specific session) and return the restored tab and window IDs. |
| move_firefox_tabs_to_groupA | Move a batch of exactly identified Firefox tabs into one existing, exactly named group in one verified operation (cross-window supported with an explicit windowId). |
| close_firefox_tabsA | Close a batch of exactly identified Firefox tabs by their tabId and verify that Firefox no longer reports them. |
| close_firefox_tab_groupA | Close every tab in one exactly named Firefox group (and remove the now-empty group) after verification. |
| merge_firefox_tab_groupsA | Move every tab of the source group into the target group in one verified operation, then remove the now-empty source group. |
| rename_firefox_tab_groupA | Rename one exactly named Firefox group to a new exact title and verify the result; fails if the new title already exists in the window. |
| set_firefox_tab_group_collapsedA | Collapse or expand one exactly named Firefox group and verify the resulting collapsed state. |
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 25 tools
Most tools map to distinct resource-action pairs (list/open/close/move/pin/group/window), and descriptions clarify single vs batch or destination. The move_firefox_tab family and open_firefox_tab(s) variants are the only potentially confusable clusters, but their target and plural/singular semantics are explicit.
All names use snake_case with an action-first pattern and consistently include 'firefox'. Minor deviations like 'new_firefox_window' instead of 'create_firefox_window', plus phrase-like 'open_firefox_tabs_into_group' and 'wait_for_firefox_tab', keep it from a perfect 5.
25 tools is within the 16-25 heavy range, so the server feels dense. Each tool has a legitimate niche (single vs batch, tab vs group vs window), but some could be consolidated without losing much capability.
The set covers tab lifecycle, group management, pining, duplicating, restoring, and window moves, with batch variants to avoid dead ends. Notable gaps are explicitly closing a window and activating an existing tab, but closing a window can be approximated by closing its tabs and focus-changing appears intentionally avoided.