Skip to main content
Glama
thenailedone

firefox-browser-control

by thenailedone

Firefox Browser Control for Codex

Управляйте уже открытой сессией Firefox прямо из Codex. Плагин умеет перечислять и упорядочивать неприватные вкладки, создавать нативные группы вкладок, а также безопасно открывать, активировать, переходить по адресам и закрывать вкладки.

Расширение Firefox и его мост работают локально: без TCP-слушателя, телеметрии, рекламы и прямых сетевых запросов со стороны расширения. Данные браузера, запрошенные пользователем, передаются только в настроенное для него окружение Codex; см. политику конфиденциальности.

Возможности

  • Проверять, подключено ли сопутствующее расширение Firefox.

  • Перечислять вкладки и нативные группы вкладок.

  • Группировать выбранные вкладки или группировать вкладки по совпадению URL/заголовка.

  • Разгруппировывать, открывать, активировать, переходить по адресам и закрывать вкладки.

Плагин намеренно не может читать содержимое страниц, кликать по элементам, заполнять формы, изучать приватные окна или переходить на адреса, отличные от HTTP(S).

Примеры команд:

  • «Сгруппируй мои открытые вкладки Gmail в Firefox».

  • «Покажи список моих открытых вкладок Firefox».

  • «Открой документацию проекта в новой вкладке Firefox».

Related MCP server: universal-browser-bridge

Установка

Полную настройку см. в plugins/firefox-browser-control/INSTALL.md. Кратко:

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.mjs

Установите подписанное расширение из Mozilla Add-ons, когда оно станет доступно. Во время разработки временно загружайте plugins/firefox-browser-control/extension/manifest.json из about:debugging#/runtime/this-firefox. Затем запустите новую задачу Codex.

Как это работает

Реализация — это локальный мост из четырёх частей:

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 profile
  1. Codex обнаруживает .mcp.json в манифесте плагина и запускает scripts/mcp-server.mjs.

  2. MCP-сервер предоставляет инструменты со строгим описанием, например firefox_list_tabs и firefox_group_tabs.

  3. Вызову инструмента присваивается случайный идентификатор запроса, и он передаётся через локальный Unix-сокет.

  4. scripts/native-host.mjs ретранслирует запрос через протокол native messaging Firefox с префиксом длины.

  5. extension/background.js выполняет запрошенную операцию через Firefox WebExtension API и возвращает результат по тому же пути.

Нативный хост удерживает сокет, пока подключено расширение Firefox. MCP-сервер создаёт короткоживущее соединение с сокетом для каждого вызова инструмента, поэтому за пределами Firefox фоновый демон не требуется.

Почему используется два протокола

Codex общается по Model Context Protocol через stdio, а расширения Firefox общаться со локальными программами могут только через native messaging. Небольшая ретрансляционная часть на Unix-сокете соединяет эти окружения, не открывая TCP-порт и не выводя браузер в сеть.

Теблица инструментов

Инструмент

Назначение

firefox_status

Подтверждает, что расширение и нативный мост подключены.

firefox_list_tabs

Возвращает идентификаторы вкладок, очищенные origins, окна и идентификаторы групп.

firefox_list_groups

Выводит идентификаторы нативных tab-групп Firefox и состояние их отображения.

firefox_group_tabs

Помещает явно заданные идентификаторы вкладок в группу с именем.

firefox_group_tabs_by_url

Находит вкладки по URL/заголовоку и группирует их по окнам.

firefox_ungroup_tabs

Убирает вкладки из их текущей группы.

firefox_open_tab

Открывает URL.

firefox_navigate_tab

Переходит на другой адрес в выбранной вкладке.

firefox_activate_tab

Фокусирует вкладку и её окно.

firefox_close_tabs

Закрывает выбранные вкладки.

Модель безопасности

  • Мост слушает Unix-сокет, а не сетевой порт.

  • Сокет ограничен текущим пользователем операционной системы (режим 0600).

  • Firefox принимает native-сообщения только от идентификатора расширения, объявленного установщиком.

  • Вкладки из приватных окон невидимы для расширения.

  • Полные URL, URL-параметры и фрагменты, заголовки страниц и содержимое страниц не возвращаются в Codex; результаты выдачи вкладок содержат только origins.

  • MCP-сервер применяет явные JSON-схемы и фиксированное соответствие «инструмент → метод».

  • Запросы завершаются по таймауту через десять секунд.

  • Расширение выполняет только методы вкладок из своего фиксированного диспетчера и ограничивает навигацию адресами HTTP(S) и about:blank.

  • Запасной вариант с временным каталогом создаёт отдельный каталог пользователя с режимом 0700, а сокет получает режим 0600.

Расширение не запрашивает прав на хосты сайтов и не совершает прямых сетевых запросов. Оно передаёт очищенную информацию о просмотренных вкладках только тогда, когда пользователь отправляет команду управления вкладками из Codex.

Структура репозитория

.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 guidance

Разработка

Запустите проверки репозитория с Node.js 20 или новее:

npm test

Соберите архив расширения, готовый для публикации на AMO:

npm run build:extension

ZIP записывается в artifacts/. Описание для магазина, инструкции для ревьюеров и чек-лист отправки находятся в store/AMO_SUBMISSION.md.

После изменения расширения используйте Перезагрузить рядом с временным дополнением в about:debugging. После изменения метаданных плагина, скилла или MCP-сервера переустановите плагин и запустите новую задачу Codex.

Ограничения

  • Расширение без подписи, поэтому после перезапуска Firefox его нужно загружать заново.

  • Автоматическая установка нативного хоста сейчас поддерживает Linux и macOS.

  • Ретранслятор сейчас использует Unix-сокеты и не поддерживает нативную Windows.

  • Расширению требуются Node.js, нативный хост и либо Codex, либо автономный проверочный клиент.

  • Это независимая интеграция сообщества; она не аффилирована с Mozilla или OpenAI и не одобрена ими.

Лицензия

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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.
    2
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Local 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.
    -