freema/firefox-devtools-mcp

freema/firefox-devtools-mcp

от freema
Управляет Firefox: кликает по элементам, заполняет формы, собирает сетевые запросы. Официальный сервер Mozilla, работает локально.

Firefox DevTools MCP

npm version CI codecov License: MIT License: Apache 2.0

Glama

Model Context Protocol server that lets AI agents use Firefox. It has two main use cases:

  • Agentic browsing: the agent uses the browser for regular tasks, such as reading pages, filling forms and going through multi-step flows on websites.
  • Agent-assisted web development: the agent loads the page you are working on and inspects it with developer tools, such as the console, network requests, the debugger and the profiler.

It controls Firefox through WebDriver BiDi (via Selenium WebDriver) and works with Claude Code, Claude Desktop, Cursor, Cline and other MCP clients.

Repository: https://github.com/mozilla/firefox-devtools-mcp

Note: This MCP server requires a local Firefox browser installation and cannot run on cloud hosting services like glama.ai. Use npx @mozilla/firefox-devtools-mcp@latest to run locally, or use Docker with the provided Dockerfile.

Security

Browser MCP servers carry inherent risks. A few key practices:

  • Use a dedicated Firefox profile. Never run the server against your regular profile — the agent has access to whatever the browser can reach, including cookies and saved sessions.
  • Be cautious about which sites you visit. Pages can return content designed to manipulate the agent (prompt injection). Stick to sites you control or trust.
  • Enable only the tool modules you need. The default basic preset already includes evaluate_script; --tool-preset slim drops it. Higher presets such as --tool-preset developer (debugging, network, console, profiler) and --tool-preset mozilla (privileged context) expand what the agent can do further.

Часто задаваемые вопросы

Инструменты были проиндексированы:
accept_dialog

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

Параметры
  • promptTextstring

    Текст для диалоговых окон запросов.

clear_downloads

Очищает буфер отслеживаемых загрузок.

Параметры

Без параметров.

clear_snapshot

Очищает UID снимков. Обычно не требуется.

Параметры

Без параметров.

click_by_uid

Нажимает на элемент по UID. Устанавливает dblClick для двойного щелчка.

Параметры
  • dblClickboolean

    Двойной щелчок (по умолчанию: false)

  • uidstringобязательный

    UID элемента из снимка

close_firefox_session

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

Параметры

Без параметров.

close_page

Закрывает вкладку по индексу.

Параметры
  • pageIdxnumberобязательный

    Индекс табуляции для закрытия

dismiss_dialog

Отклоняет диалоговое окно браузера.

Параметры

Без параметров.

drag_by_uid_to_uid

Перетаскивает элемент на другой элемент (HTML5 drag events).

Параметры
  • fromUidstringобязательный

    UID исходного элемента

  • toUidstringобязательный

    Уникальный идентификатор целевого элемента

evaluate_script

Выполняет JS-функцию на странице и возвращает её результат. Предпочитайте этот инструмент для точечного чтения (значения, текста, вычисленного стиля, наличия элемента) вместо полного take_snapshot. Используйте инструменты взаимодействия UID для кликов, ввода текста и заполнения полей.

Параметры
  • argsobject[]

    Идентификаторы для передачи в качестве аргументов функции.

  • functionstringобязательный

    Строка с JS-функцией, например () => document.title

  • previewnumber

    Количество символов сохранённого результата, которые нужно вернуть встроенным предпросмотром при использовании saveTo. Оставьте пустым, чтобы отключить предпросмотр.

  • sandboxstring

    Выполняет оценку в изолированной песочнице с этим именем, а не в области страницы. Песочница использует общий DOM страницы и сохраняет встроенные объекты, даже если страница их переопределила. Глобальные объекты и расширения, определённые на странице, не видны из песочницы, и наоборот. Одно и то же имя переиспользует одну и ту же песочницу между вызовами; опустите параметр, чтобы выполнять оценку в области страницы.

  • saveToboolean | string

    Сохраните результат в файл в формате JSON вместо возврата его в ответе. Передайте путь к файлу, существующую директорию (файл будет создан внутри неё) или true (файл будет создан в ~/.firefox-devtools-mcp/output/). Относительные пути разрешаются относительно текущей рабочей директории.

  • timeoutnumber

    Тайм-аут в мс (по умолчанию: 5000)

fill_by_uid

Заполняет текстовое поле ввода/textarea по UID.

Параметры
  • uidstringобязательный

    Введите UID элемента из снапшота

  • valuestringобязательный

    Вы не указали текст для перевода. Пожалуйста, отправьте текст, который нужно перевести, и я выполню перевод согласно вашим инструкциям.

fill_form_by_uid

Заполняет несколько полей формы одновременно.

Параметры
  • elementsobject[]обязательный

    Массив из пар {uid, value}

get_firefox_infoтолько чтение

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

Параметры

Без параметров.

get_firefox_outputтолько чтение

Извлекает вывод Firefox (stdout/stderr, включая MOZ_LOG, предупреждения, сбои, стек-трейсы). Возвращает последний вывод из файла захвата. Использует фильтры для выделения конкретного содержимого.

Параметры
  • grepstring

    Фильтрует строки журнала, содержащие эту строку (без учёта регистра).

  • linesnumber

    Количество последних строк журнала для возврата (по умолчанию: 100, максимум: 10000).

  • sincenumber

    Показывай только логи, записанные за последние N секунд.

get_page_textтолько чтение

Получает видимый текст страницы (document.body.innerText). Ограничивает длину до maxLength (по умолчанию 20000 символов); saveTo сохраняет полный текст в файл.

Параметры
  • maxLengthnumber

    Максимум символов для возврата inline (по умолчанию: 20000). Игнорируется при использовании saveTo.

  • previewnumber

    Количество символов сохранённого текста для возврата встроенного предпросмотра при использовании saveTo. Опустите, чтобы отключить предпросмотр.

  • saveToboolean | string

    Сохраните полный необрезанный текст в файл вместо возврата его встроенно. Передайте путь к файлу, существующую директорию (сгенерированный файл внутри) или true (сгенерированный файл в ~/.firefox-devtools-mcp/output/). Относительные пути разрешаются относительно текущей рабочей директории.

hover_by_uid

Наводит курсор на элемент по UID.

Параметры
  • uidstringобязательный

    UID элемента из снимка

install_extension

Устанавливает расширение Firefox с помощью команды WebDriver BiDi webExtension.install. Поддерживает установку из архива (.xpi/.zip), данных в кодировке base64 или распакованной директории.

Параметры
  • pathstring

    Путь к файлу (для типов archivePath или path)

  • permanentboolean

    Специфично для Firefox: установить постоянно (требуется подписанное расширение). По умолчанию: false (временная установка).

  • typeenumобязательный

    Тип данных расширения: "archivePath" для .xpi/.zip, "base64" для закодированных данных, "path" для распакованной директории.

  • valuestring

    Данные расширения, закодированные в Base64 (для типа base64).

list_downloadsтолько чтение

Выводит список загрузок, отслеживаемых с момента запуска, включая статус и путь сохранённого файла.

Параметры
  • formatenum

    Формат вывода (по умолчанию: text)

  • limitnumber

    Максимум загрузок (по умолчанию: 50)

  • statusenum

    Фильтр по статусу

  • urlContainsstring

    Фильтр URL (без учёта регистра)

list_pagesтолько чтение

Перечисляет открытые вкладки (индекс, заголовок, URL). Выбранная вкладка помечена.

Параметры

Без параметров.

navigate_history

Перемещает по истории назад/вперёд. UIDs устаревают.

Параметры
  • directionenumобязательный

    назад или вперёд

navigate_page

Перемещает выбранную вкладку на URL.

Параметры
  • urlstringобязательный

    Целевой URL

  • waitenum

    Когда возвращать: 'none' (навигация началась), 'interactive' (DOMContentLoaded), 'complete' (событие load сработало, включая подресурсы). Опустите, чтобы использовать значение по умолчанию: 'interactive' для http/https/data/blob/file, 'none' для остальных схем. Используйте 'complete', когда страница должна быть полностью загружена, например перед остановкой записи производительности.

new_page

Открывает новую вкладку по URL. Возвращает индекс вкладки.

Параметры
  • urlstringобязательный

    Целевой URL

  • waitenum

    Когда возвращать: 'none' (навигация началась), 'interactive' (DOMContentLoaded), 'complete' (событие load сработало, включая подресурсы). Опустите, чтобы использовать значение по умолчанию: 'interactive' для http/https/data/blob/file, 'none' для остальных схем. Используйте 'complete', когда страница должна быть полностью загружена, например перед остановкой записи производительности.

press_key

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

Параметры
  • keystringобязательный

    Одна клавиша, перед которой могут стоять разделённые знаком "+" модификаторы, например "Escape", "Enter" или "ctrl+shift+t". Модификаторы: ctrl, alt, shift, meta. Именованные клавиши: Enter, Return, NumpadEnter, Tab, Backspace, Delete, Insert, Space, Escape, Home, End, PageUp, PageDown, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, F1-F12, Numpad0-Numpad9, Clear, Pause, Help, Cancel, Semicolon, Equals, Add, Subtract, Multiply, Divide, Decimal, Separator. Всё остальное должно быть одним символом. Модификаторов может быть сколько угодно, но клавиша только одна.

  • uidstring

    UID фокусируемого элемента из снимка, который нужно сфокусировать перед нажатием (по умолчанию: уже сфокусированный элемент)

resolve_uid_to_selectorтолько чтение

Преобразует UID в CSS-селектор. Завершается ошибкой, если элемент удалён.

Параметры
  • uidstringобязательный

    UID из снимка

screencast_start

Начинает запись скринкаста (видео) текущей области просмотра страницы и сохраняет результат в файл в каталоге загрузок. Возвращает идентификатор скринкаста для передачи в screencast_stop. Несколько записей могут выполняться одновременно.

Параметры
  • contextstring

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

  • frameRateinteger

    Целевая частота кадров записи, в кадрах в секунду.

  • heightinteger

    Высота записанного видео в пикселях. По умолчанию соответствует высоте области просмотра.

  • mimeTypestring

    MIME-тип выходного файла. По умолчанию: "video/webm".

  • widthinteger

    Ширина записанного видео в пикселях. По умолчанию равна ширине окна просмотра.

screencast_stop

Останавливает текущую запись экрана, запущенную с помощью screencast_start, и завершает создание видеофайла. Возвращает путь к сохранённому файлу.

Параметры
  • screencaststring

    Идентификатор screencast для остановки, возвращаемый функцией screencast_start. Необязателен, если активно ровно одно видео.

screenshot_by_uidтолько чтение

Захватывает снимок элемента по UID в формате base64 PNG.

Параметры
  • saveToboolean | string

    Сохраните скриншот в файл, а не возвращайте его как данные изображения в ответе. Передайте путь к файлу, существующую директорию (файл будет создан внутри неё) или true (файл будет создан в ~/.firefox-devtools-mcp/output/). Относительные пути разрешаются относительно текущей рабочей директории.

  • uidstringобязательный

    UID элемента из снимка

screenshot_pageтолько чтение

Захватывает снимок области просмотра в формате base64 PNG. Устанавливает fullPage для всего прокручиваемого документа.

Параметры
  • fullPageboolean

    Захватывает весь прокручиваемый документ (по умолчанию: false)

  • saveToboolean | string

    Сохраните скриншот в файл, а не возвращайте его как данные изображения в ответе. Передайте путь к файлу, существующую директорию (файл будет создан внутри неё) или true (файл будет создан в ~/.firefox-devtools-mcp/output/). Относительные пути разрешаются относительно текущей рабочей директории.

select_page

Выбирает активную вкладку по индексу, URL или заголовку. Индекс имеет приоритет.

Параметры
  • pageIdxnumber

    Индекс табуляции (отсчёт с нуля, самый надёжный)

  • titlestring

    Подстрока в заголовке (без учёта регистра)

  • urlstring

    Подстрока URL (без учёта регистра)

set_download_behavior

Управляет обработкой загрузок: разрешает (сохранять в папку назначения), запрещает (отменять) или сбрасывает на значение по умолчанию. Избегает системного диалога сохранения файла. Требует свежую версию Firefox.

Параметры
  • behaviorenumобязательный

    'allowed' сохраняет загрузки в downloadFolder, 'denied' отменяет их, 'default' сбрасывает к настройке браузера по умолчанию

  • downloadFolderstring

    Путь к папке, куда складывать скачанные файлы; создаётся, если её нет. Используется только при behavior='allowed', где по умолчанию принимает значение ~/.firefox-devtools-mcp/output/downloads. Относительные пути отсчитываются от текущего рабочего каталога.

set_viewport_size

Устанавливает размеры области просмотра в пикселях.

Параметры
  • heightnumberобязательный

    Высота в пикселях

  • widthnumberобязательный

    Ширина в пикселях

take_snapshotтолько чтение

Захватывает снимок DOM со стабильными UID. UID остаётся действительным между снимками, пока его элемент не удалён или страница не переходит. Вывод ограничивается maxLines (по умолчанию 100); ограничьте область с помощью selector или выгрузите полное дерево с помощью saveTo.

Параметры
  • includeAllboolean

    Включает все видимые элементы без фильтрации по релевантности. Полезно для приложений Vue/Livewire (по умолчанию: false).

  • includeAttributesboolean

    Включает ARIA-атрибуты (по умолчанию: false)

  • includeTextboolean

    Включить текст (по умолчанию: true)

  • maxDepthnumber

    Максимальная глубина дерева.

  • maxLinesnumber

    Максимум строк (по умолчанию: 100)

  • previewnumber

    Количество символов сохранённого вывода, которое нужно вернуть встроенно в качестве предпросмотра при использовании saveTo. Опустите, чтобы отключить предпросмотр.

  • saveToboolean | string

    Сохраняет полный текст снапшота в файл (игнорирует maxLines) вместо возврата его в ответе. Передайте путь к файлу, существующую директорию (файл создастся внутри неё) или true (файл создастся в ~/.firefox-devtools-mcp/output/). Относительные пути разрешаются относительно текущей рабочей директории.

  • selectorstring

    CSS-селектор для ограничения снимка конкретным элементом (например, "#app")

type_text

Вводит текст посимвольно в сфокусированный элемент, при необходимости завершая ввод нажатием клавиши, например Enter. Используйте fill_by_uid для установки значения известного поля ввода; применяйте его для элементов, которые реагируют только на реальный ввод, например полей автозаполнения и редакторов форматированного текста.

Параметры
  • submitKeystring

    Клавиша для нажатия после текста, например «Enter» или «Tab». Тот же синтаксис, что и у press_key.

  • textstringобязательный

    Текст для ввода.

  • uidstring

    UID фокусируемого элемента из снимка для фокусировки перед вводом (по умолчанию: уже сфокусированный элемент)

uninstall_extension

Удаляет расширение Firefox с помощью команды WebDriver BiDi webExtension.uninstall. Требует идентификатор расширения, возвращённый install_extension или полученный из list_extensions.

Параметры
  • idstringобязательный

    Идентификатор расширения (например, "addon@example.com")

upload_file_by_uid

Загружает файл в file input по UID.

Параметры
  • filePathstringобязательный

    Локальный путь к файлу

  • uidstringобязательный

    UID ввода файла из снапшота

0.10.6основная
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.15
0.9.12
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3

Выберите клиент, чтобы установить freema/firefox-devtools-mcp:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "freema-firefox-devtools-mcp-3b2x5vkaby": {
      "command": "npx",
      "args": [
        "-y",
        "@mozilla/firefox-devtools-mcp@latest",
        "--headless",
        "--viewport",
        "1280x720"
      ],
      "env": {
        "START_URL": "about:blank"
      }
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "freema-firefox-devtools-mcp-3b2x5vkaby": {
      "command": "npx",
      "args": [
        "-y",
        "@mozilla/firefox-devtools-mcp@latest",
        "--headless",
        "--viewport",
        "1280x720"
      ],
      "env": {
        "START_URL": "about:blank"
      }
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "freema-firefox-devtools-mcp-3b2x5vkaby": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@mozilla/firefox-devtools-mcp@latest",
        "--headless",
        "--viewport",
        "1280x720"
      ],
      "env": {
        "START_URL": "about:blank"
      }
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"freema-firefox-devtools-mcp-3b2x5vkaby\",\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"-y\",\"@mozilla/firefox-devtools-mcp@latest\",\"--headless\",\"--viewport\",\"1280x720\"],\"env\":{\"START_URL\":\"about:blank\"}}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "freema-firefox-devtools-mcp-3b2x5vkaby": {
      "command": "npx",
      "args": [
        "-y",
        "@mozilla/firefox-devtools-mcp@latest",
        "--headless",
        "--viewport",
        "1280x720"
      ],
      "env": {
        "START_URL": "about:blank"
      }
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add freema-firefox-devtools-mcp-3b2x5vkaby --env START_URL=about:blank -- npx -y @mozilla/firefox-devtools-mcp@latest --headless --viewport 1280x720

Либо через JSON-конфиг:

claude mcp add-json freema-firefox-devtools-mcp-3b2x5vkaby "{\"command\":\"npx\",\"args\":[\"-y\",\"@mozilla/firefox-devtools-mcp@latest\",\"--headless\",\"--viewport\",\"1280x720\"],\"env\":{\"START_URL\":\"about:blank\"}}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add freema-firefox-devtools-mcp-3b2x5vkaby --env START_URL=about:blank -- npx -y @mozilla/firefox-devtools-mcp@latest --headless --viewport 1280x720

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.freema-firefox-devtools-mcp-3b2x5vkaby]
command = "npx"
args = ["-y", "@mozilla/firefox-devtools-mcp@latest", "--headless", "--viewport", "1280x720"]

[mcp_servers.freema-firefox-devtools-mcp-3b2x5vkaby.env]
START_URL = "about:blank"
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите freema/firefox-devtools-mcp, а в поле команды запуска — строку ниже:
npx -y @mozilla/firefox-devtools-mcp@latest --headless --viewport 1280x720

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "freema-firefox-devtools-mcp-3b2x5vkaby": {
      "command": "npx",
      "args": [
        "-y",
        "@mozilla/firefox-devtools-mcp@latest",
        "--headless",
        "--viewport",
        "1280x720"
      ],
      "env": {
        "START_URL": "about:blank"
      }
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "freema-firefox-devtools-mcp-3b2x5vkaby": {
      "command": "npx",
      "args": [
        "-y",
        "@mozilla/firefox-devtools-mcp@latest",
        "--headless",
        "--viewport",
        "1280x720"
      ],
      "env": {
        "START_URL": "about:blank"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например freema-firefox-devtools-mcp-3b2x5vkaby.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: freema-firefox-devtools-mcp-3b2x5vkaby
    command: npx
    args:
      - "-y"
      - "@mozilla/firefox-devtools-mcp@latest"
      - "--headless"
      - "--viewport"
      - "1280x720"
    env:
      START_URL: about:blank
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "freema-firefox-devtools-mcp-3b2x5vkaby": {
      "command": "npx",
      "args": [
        "-y",
        "@mozilla/firefox-devtools-mcp@latest",
        "--headless",
        "--viewport",
        "1280x720"
      ],
      "env": {
        "START_URL": "about:blank"
      }
    }
  }
}

Похожие MCP-сервера

Browserbase MCP

Browserbase MCP

официальный

от browserbase

Запускает облачный браузер Browserbase: открывает любые сайты, кликает по элементам, заполняет формы и выгружает данные со страниц.

TypeScript⭐ 3399
automatalabs/mcp-server-playwright

automatalabs/mcp-server-playwright

от automata-labs-team

Управляет реальным браузером через Playwright: открывает сайты, кликает по элементам, заполняет формы, делает скриншоты и выполняет JavaScript.

JavaScript⭐ 297
Browser MCP

Browser MCP

официальный

от browsermcp

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

TypeScript⭐ 7201
Playwright MCP

Playwright MCP

официальный

от microsoft

Playwright управляет браузером: открывает страницы, кликает, заполняет формы. Работает по accessibility-дереву, без скриншотов.

TypeScript⭐ 38388
ofershap/real-browser-mcp

ofershap/real-browser-mcp

от ofershap

Управляет вашим реальным Chrome: кликает, заполняет формы, снимает скриншоты и проверяет результат. Работает с вашими сессиями и корпоративным SSO.

JavaScript⭐ 57
eyalzh/browser-control-mcp

eyalzh/browser-control-mcp

от eyalzh

MCP сервер для Firefox в паре с расширением дает AI управлять вкладками, историей и чтением страниц. Требует согласия на чтение - безопаснее web automation. Идеально для организации работы в браузере.

TypeScript⭐ 335
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин