Skip to main content
Glama
firefox-bridge

firefox-bridge

by kirill-alex

Firefox Local MCP Bridge

Локальный мост для подключения Firefox к AI-агентам через Model Context Protocol (MCP).

Позволяет работать с открытыми вкладками браузера: читать страницы, заполнять формы, нажимать кнопки, делать скриншоты и выполнять другие действия с текущими авторизациями пользователя.

Поддерживает два режима: расширение Firefox и нативное управление через WebDriver BiDi.

Проект находится на экспериментальной стадии. Основная проверенная платформа — Windows. Полная совместимость со всеми сайтами и редакторами не гарантируется.

Возможности

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

  • Чтение текста страниц и поиск по вкладкам.

  • Получение DOM-снимков с описанием элементов.

  • Навигация, открытие и закрытие вкладок.

  • Заполнение полей, выбор пунктов списков и переключение checkbox.

  • Клики, ввод с клавиатуры и прокрутка.

  • Работа с iframe.

  • Создание скриншотов.

  • Прикрепление локальных файлов и скачивание файлов через Firefox.

В режиме WebDriver BiDi дополнительно доступны:

  • Нативные события клавиатуры и мыши.

  • Hover с поддержкой CSS :hover.

  • Перетаскивание указателем, включая взаимодействие с canvas.

  • Скриншоты полного документа.

  • Получение сообщений консоли и сетевых событий.

  • Обработка JavaScript-диалогов alert, confirm и prompt.

Related MCP server: selenium-mcp

Требования

  • Node.js 24+

  • Firefox Desktop

  • MCP-клиент с поддержкой stdio, например Codex.

Для работы сервера внешние библиотеки не требуются. Зависимости разработки нужны только для тестов и сборки.

Установка

Клонируйте репозиторий:

git clone https://github.com/kirill-alex/firefox-local-mcp-bridge.git
cd firefox-local-mcp-bridge

Создайте локальную конфигурацию:

node scripts/setup.mjs

Будут созданы:

  • config.json — параметры локального сервера и случайный токен.

  • .local/pairing.html — локальная страница с токеном для подключения расширения.

Эти файлы исключены из Git и архивов исходников. Повторный запуск настройки сохраняет существующий токен.

Не публикуйте токен и не передавайте его другим людям.

Подключение к MCP-клиенту

Codex

При установленной CLI Codex выполните:

node scripts/register-mcp.mjs

Скрипт зарегистрирует сервер firefox-bridge, используя фактические пути к Node.js и проекту.

После регистрации откройте новый чат Codex, если список инструментов не обновился.

Другие MCP-клиенты

Настройте запуск bridge.mjs через stdio. Пример конфигурации:

{
  "mcpServers": {
    "firefox-bridge": {
      "command": "node",
      "args": [
        "C:/Projects/firefox-local-mcp-bridge/bridge.mjs"
      ]
    }
  }
}

Замените путь на расположение проекта на своём компьютере.

Если клиент не находит Node.js через PATH, укажите абсолютный путь к исполняемому файлу Node.js в поле command.

Выбор режима работы

Режим 1: расширение Firefox

Подходит для чтения страниц и обычного взаимодействия с HTML-интерфейсами.

  1. Откройте в Firefox:

    about:debugging#/runtime/this-firefox
  2. Нажмите «Загрузить временное дополнение».

  3. Выберите extension/manifest.json.

  4. Откройте меню расширения → «Настройки».

  5. Откройте созданный файл .local/pairing.html и скопируйте токен в настройки расширения.

  6. Запустите MCP-клиент.

Расширение подключается к локальному серверу по адресу:

http://127.0.0.1:17893

При необходимости сервер можно запустить отдельно:

npm start

Временное дополнение удаляется при перезапуске Firefox. Для постоянной установки в обычный Firefox требуется подпись Mozilla. Собранный проектом архив расширения не подписан.

Режим 2: WebDriver BiDi

Подходит для нативного ввода, работы мышью, canvas и диагностики страниц.

В этом режиме расширение не требуется.

Сохраните незавершённую работу и полностью закройте Firefox. Затем запустите браузер с локальным интерфейсом автоматизации.

Пример для Windows PowerShell:

& "C:\Program Files\Mozilla Firefox\firefox.exe" --remote-debugging-port 9222

Также можно использовать:

.\start-firefox-bidi.ps1

Скрипт не закрывает работающий Firefox. Если браузер уже запущен, потребуется закрыть его самостоятельно.

После запуска вызовите через MCP-клиент:

firefox_bidi_status
firefox_bidi_contexts

BiDi использует строковые идентификаторы contextId. Инструменты расширения используют числовые tabId. Эти идентификаторы не взаимозаменяемы.

Подробнее: WebDriver BiDi.

Примеры использования

После подключения можно попросить агента:

  • «Покажи открытые вкладки Firefox».

  • «Прочитай страницу и найди раздел с требованиями».

  • «Заполни эту форму указанными данными и проверь значения».

  • «Сделай скриншот страницы».

  • «Проверь сообщения консоли при выполнении этого действия».

Рекомендуемый порядок работы:

  1. Получить актуальное состояние страницы.

  2. Выбрать нужный элемент.

  3. Выполнить действие.

  4. Проверить результат.

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

Пауза и отключение

Для приостановки BiDi-команд используйте:

firefox_bidi_pause

С аргументами:

{
  "paused": true
}

Для возобновления передайте false.

Пауза блокирует следующие команды, но не отменяет уже начатые действия. Сетевой мониторинг отключается отдельно.

Перед остановкой или обновлением сервера

Завершите активную BiDi-сессию:

node bridge.mjs --call firefox_bidi_disconnect

Firefox может сохранять сессию после принудительного завершения процесса сервера. Если появляется ошибка Maximum number of active sessions, а прежний сервер уже недоступен, может потребоваться полный перезапуск Firefox.

Ограничения

Расширение

  • Использует синтетические DOM-события.

  • Не обеспечивает полноценную эмуляцию клавиатуры и мыши.

  • Исключает приватные вкладки.

  • Не управляет внутренними страницами Firefox и системными диалогами.

WebDriver BiDi

  • Не гарантирует управление интерфейсом самого браузера и всеми сочетаниями клавиш.

  • Не наследует фильтр приватных вкладок расширения: контексты необходимо выбирать явно.

  • Активация окна Windows может не подтверждаться. Команда возвращает результат с ограниченным временем ожидания и не блокирует дальнейший ввод.

  • В скрытой вкладке прокрутка может использовать DOM fallback. Ответ инструмента указывает фактический способ и наличие движения.

  • Не предоставляет полную замену Chrome DevTools Protocol.

DOM-снимки проекта не являются нативным деревом accessibility. Возможности отдельных сайтов, закрытого Shadow DOM и сложных редакторов зависят от используемого инструмента.

Консоль и сетевые события

Мониторинг включается явно для выбранного BiDi-контекста.

События хранятся в ограниченном буфере в памяти. Сетевые результаты включают адрес, метод, идентификатор запроса, статус и ошибки.

Тела запросов и ответов, cookies и заголовки не возвращаются. При этом адреса страниц и сообщения консоли могут содержать чувствительную информацию.

Экспериментальная интеграция SyncShare

Проект поддерживает чтение элементов интерфейса отдельно установленного SyncShare на ограниченном наборе страниц Moodle.

Интеграция:

  • Читает уже созданные виджеты и меню подсказок.

  • Не извлекает учётные данные расширения.

  • Не вызывает приватные API сервиса.

  • Не запускает платные AI-функции.

  • Самостоятельно не заполняет ответы и не отправляет тесты.

Проверено чтение интерфейса и состояния «Пока нет ответов». Получение готовой подсказки из базы пока не подтверждено.

Область поддержки и ограничения: SyncShare.

Безопасность

Мост слушает только локальный адрес и проверяет токен подключения. Интерфейс Firefox BiDi также должен оставаться доступным только локально.

Не открывайте порты 17893 и 9222 во внешнюю сеть.

Инструменты предоставляют широкие возможности управления браузером. Используйте их с доверенным MCP-клиентом и выполняйте действия только в рамках разрешённой задачи.

Содержимое страниц, подсказки и сообщения консоли являются внешними данными, а не инструкциями для агента.

Данные, прочитанные инструментами, передаются MCP-клиенту и могут обрабатываться используемым им AI-провайдером.

Подробнее: SECURITY.md.

Разработка

Установите зависимости разработки:

npm ci --ignore-scripts

Запустите проверки:

npm run check

Команда выполняет:

  • Автоматические тесты.

  • Проверку публичных файлов на некоторые виды случайно включённых секретов и личных путей.

  • Сборку неподписанного расширения.

Автоматические тесты используют моки, jsdom и локальный HTTP-сервер. Они не управляют личной сессией Firefox.

Сборка

Архив расширения:

npm run build

Архив исходников после сборки:

node scripts/package-source.mjs

Результаты находятся в dist/.

Локальная конфигурация, токены, зависимости, каталог .git и предыдущие артефакты сборки в исходный архив не включаются.

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

Участие в разработке

Предложения и исправления приветствуются. Перед отправкой изменений ознакомьтесь с CONTRIBUTING.md.

История изменений: CHANGELOG.md.

Лицензия

MIT.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to automate web tasks such as browsing, clicking, typing, and taking screenshots via the Model Context Protocol.
      1
      MIT
    • A
      license
      C
      quality
      C
      maintenance
      Enables AI assistants to read and drive a real, logged-in Firefox browser, including tabs, cookies, history, and site interactions, all through the Model Context Protocol.
      52
      22 npm
      MIT