Chrome DevTools MCP — это сервер, который даёт ИИ-агенту доступ к браузеру: открывать страницы, выполнять скрипты, снимать скриншоты, читать сетевые запросы. Как именно агент будет это делать, решает конфигурация — набор флагов, которые передаются серверу при запуске.
Один и тот же сервер можно настроить под разные задачи: запускать Chrome без окна для фоновой работы, подключаться к уже открытой сессии, ограничивать доступ браузера к заданным URL и отключать ненужные группы инструментов. Параметры задаются в конфигурации MCP-клиента.
Что это
Chrome DevTools MCP — это реализация протокола Model Context Protocol (MCP), которая превращает браузер Chrome в набор инструментов для языковой модели. Агент вызывает эти инструменты так же, как вызывал бы функции в коде: открыть вкладку, кликнуть по элементу, получить текст страницы, снять скриншот.
Сервер запускается через npx и подключается к Chrome по протоколу DevTools. По умолчанию он сам запускает новый экземпляр браузера, но это поведение можно изменить — подключиться к уже работающему Chrome или запустить его в безголовом режиме без видимого окна.
Настройка выполняется через флаги командной строки. Место и формат конфигурации зависят от MCP-клиента. В клиентах, которые используют JSON-схему с разделом mcpServers, параметры сервера перечисляются в массиве args.
Большинство составных параметров можно писать в camelCase или через дефисы: —autoConnect и —auto-connect эквивалентны. Однословные флаги вроде —headless или —slim имеют одну форму.
Зачем нужно
- Фоновая работа без окна — флаг —headless запускает Chrome без интерфейса. Агент выполняет задачи на сервере, не открывая видимое окно браузера.
- Работа в уже открытой сессии — если вы вошли в аккаунт и нужно исследовать проблему в этой сессии, агент подключается к запущенному Chrome, а не создаёт новый.
- Ограничение доступных URL — флаги блокировки и разрешения URL-шаблонов ограничивают навигацию и загрузку ресурсов в подключённых DevTools-сеансах. Они не заменяют полноценную сетевую изоляцию процесса или виртуальной машины.
- Контроль набора инструментов — группы инструментов (сеть, производительность, эмуляция) включаются и отключаются по отдельности.
- Сокращение объёма данных — уменьшение размеров изображения и использование JPEG или WebP помогает сократить объём данных, передаваемых модели.
Как устроено
Формат конфигурации зависит от MCP-клиента. В клиентах с JSON-разделом mcpServers минимальная настройка выглядит так: команда запуска npx, пакет chrome-devtools-mcp и список флагов. Каждый аргумент передаётся отдельным элементом массива args.
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--headless",
"--channel=canary"
]
}
}
}
Флаги делятся на несколько групп по назначению: подключение к браузеру, параметры запуска, безопасность, категории инструментов, скриншоты и экспериментальные возможности. Часть флагов принимает значение после знака равенства, часть — просто включает или выключает поведение.
| Группа флагов | Что настраивает |
|---|---|
| Подключение | Как сервер находит и подключается к Chrome: автоматически, по адресу или по WebSocket. |
| Запуск браузера | Как Chrome запускается: канал, путь к исполняемому файлу, каталог данных, размер окна, прокси. |
| Безопасность | Сертификаты, URL-фильтры, скрытие части чувствительных заголовков, сбор статистики. |
| Категории функций | Какие группы инструментов доступны агенту. |
| Скриншоты | Формат, качество и максимальный размер снимков экрана. |
| Экспериментальные | Функции в разработке, которые могут измениться или исчезнуть. |
Типичные сценарии
Два самых частых сценария настройки — запуск в безголовом режиме и подключение к уже открытой сессии браузера.
Запуск в безголовом режиме
Для фоновых задач без видимого окна добавьте флаг —headless к аргументам сервера. Chrome запустится без пользовательского интерфейса, а агент продолжит работать с ним как обычно.
Подключение к существующей сессии
По умолчанию сервер запускает новый экземпляр Chrome. Но агента можно подключить к уже работающей сессии — это полезно, когда нужно исследовать проблему в браузере, где вы уже вошли в аккаунт.
Внимание: при подключении к существующей сессии агент наследует вашу активную сессию — учётные записи, файлы cookie и другие данные. Используйте этот режим только с агентами, которым доверяете.
Подключиться можно двумя способами. Автоматический — флаг —autoConnect: сервер сам находит активный экземпляр Chrome. Для этого в браузере нужно включить удалённую отладку на странице chrome://inspect/#remote-debugging, а затем добавить флаг в конфигурацию. Когда агент попытается подключиться, Chrome покажет диалог с запросом разрешения — нажмите «Разрешить».
"args": ["chrome-devtools-mcp@latest", "--autoConnect"]
Ручной способ — для случаев, когда —autoConnect недоступен, например в изолированной среде. Chrome запускается из терминала с портом отладки и отдельным каталогом данных, а агент подключается к этому порту через —browser-url.
Внимание: открытый порт удалённой отладки позволяет другим локальным приложениям подключаться к этому экземпляру Chrome и управлять им. Не используйте такой экземпляр браузера для чувствительных аккаунтов и данных без дополнительной изоляции.
# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-profile-stable
# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="%TEMP%\chrome-profile-stable"
# Linux
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-profile-stable
"args": ["chrome-devtools-mcp@latest", "--browser-url=http://127.0.0.1:9222"]
Справочник флагов
Ниже — основные доступные флаги по группам. Актуальные параметры и новые опции стоит сверять с официальным репозиторием Chrome DevTools MCP, поскольку набор флагов меняется.
Подключение
| Флаг | Тип | По умолчанию | Описание |
|---|---|---|---|
| —autoConnect / —auto-connect | логический | false | Автоматически подключается к локально запущенному Chrome (версия 144+). Требует включённой удалённой отладки через chrome://inspect/#remote-debugging. |
| —browserUrl / —browser-url (-u) | строка | false | Подключается к запущенному Chrome с возможностью отладки, например http://127.0.0.1:9222. |
| —wsEndpoint / —ws-endpoint (-w) | строка | false | Конечная точка WebSocket для подключения к запущенному Chrome, например ws://127.0.0.1:9222/devtools/browser/ |
| —wsHeaders / —ws-headers | строка | false | Пользовательские заголовки для соединения WebSocket в формате JSON. Работает только вместе с —wsEndpoint. |
Запуск браузера
| Флаг | Тип | По умолчанию | Описание |
|---|---|---|---|
| —headless | логический | false | Запускает Chrome в безголовом режиме без пользовательского интерфейса. |
| —channel | строка | stable | Канал Chrome: canary, dev, beta или stable. |
| —executablePath / —executable-path (-e) | строка | false | Путь к пользовательскому исполняемому файлу Chrome. |
| —userDataDir / —user-data-dir | строка | см. описание | Каталог пользовательских данных. По умолчанию $HOME/.cache/chrome-devtools-mcp/chrome-profile с суффиксом канала, если канал не stable. |
| —isolated | логический | false | Создаёт временный каталог данных, который очищается при закрытии браузера. |
| —viewport | строка | false | Начальный размер области просмотра, например 1280x720. В безголовом режиме максимум 3840x2160. |
| —proxyServer / —proxy-server | строка | false | Конфигурация прокси-сервера, передаваемая в Chrome. |
| —chromeArg / —chrome-arg | список | false | Дополнительные аргументы для передачи в Chrome. |
| —ignoreDefaultChromeArg / —ignore-default-chrome-arg | список | false | Явно отключает параметры Chrome, заданные по умолчанию. |
Безопасность и конфиденциальность
| Флаг | Тип | По умолчанию | Описание |
|---|---|---|---|
| —acceptInsecureCerts / —accept-insecure-certs | логический | false | Игнорирует ошибки самоподписанных и просроченных сертификатов. Использовать с осторожностью. |
| —blockedUrlPattern / —blocked-url-pattern | список | false | Блокирует указанные шаблоны URL для навигации и загрузки подресурсов в подключённых DevTools-сеансах. |
| —allowedUrlPattern / —allowed-url-pattern | список | false | Разрешает только указанные шаблоны URL в подключённых DevTools-сеансах. Требует Chrome 149+. |
| —redactNetworkHeaders / —redact-network-headers | логический | false | Скрывает часть сетевых заголовков, которые сервер считает чувствительными, перед передачей MCP-клиенту. |
| —allowUnrestrictedPaths / —allow-unrestricted-paths | логический | false | Снимает ограничения на пути файловой системы для инструментов, которые записывают файлы. Без этого флага сервер ограничивает такие операции доступными корнями MCP-клиента, а при их отсутствии — системным временным каталогом. |
| —usageStatistics / —usage-statistics | логический | true | Включает статистику использования Chrome DevTools MCP. Отключается переменной CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS или CI. |
| —performanceCrux / —performance-crux | логический | true | Отправляет URL из трассировок производительности в API Google CrUX для данных о реальном пользовательском опыте. |
Категории функций
| Флаг | Тип | По умолчанию | Описание |
|---|---|---|---|
| —categoryEmulation / —category-emulation | логический | true | Инструменты эмуляции. |
| —categoryNetwork / —category-network | логический | true | Инструменты работы с сетью. |
| —categoryPerformance / —category-performance | логический | true | Инструменты производительности. |
| —categoryExtensions / —category-extensions | логический | false | Инструменты расширений. Поддерживается только при трубном соединении. |
| —categoryExperimentalThirdParty / —category-experimental-third-party | логический | false | Инструменты сторонних разработчиков, предоставляемые проверяемой страницей. |
| —categoryExperimentalWebmcp / —category-experimental-webmcp | логический | false | Экспериментальные инструменты WebMCP. Требуют Chrome 150+ и запуска Chrome с параметром —enable-features=WebMCP. |
| —memoryDebugging / —memory-debugging | логический | false | Инструменты отладки памяти. |
Скриншоты
| Флаг | Тип | По умолчанию | Описание |
|---|---|---|---|
| —screenshotFormat / —screenshot-format | строка | false | Формат вывода вместо png: jpeg, png или webp. jpeg и webp меньше по размеру, что сокращает контекст в диалогах с ИИ. |
| —screenshotQuality / —screenshot-quality | число | false | Качество сжатия (0–100) для jpeg и webp. |
| —screenshotMaxWidth / —screenshot-max-width | число | false | Максимальная ширина в пикселях. Более крупные скриншоты уменьшаются. |
| —screenshotMaxHeight / —screenshot-max-height | число | false | Максимальная высота в пикселях. Более крупные скриншоты уменьшаются. |
Экспериментальные
Внимание: экспериментальные параметры находятся в разработке и могут быть изменены или удалены в будущих версиях.
| Флаг | Тип | По умолчанию | Описание |
|---|---|---|---|
| —experimentalPageIdRouting / —experimental-page-id-routing | логический | false | Даёт доступ к pageId в инструментах конкретной страницы для маршрутизации запросов в параллельных сеансах агентов. |
| —experimentalDevtools / —experimental-devtools | логический | false | Автоматизация работы с целевыми объектами DevTools. |
| —experimentalVision / —experimental-vision | логический | false | Инструменты на основе координат, например click_at. Обычно требует модели, способной определять координаты по скриншотам. |
| —experimentalStructuredContent / —experimental-structured-content | логический | false | Выводит структурированное отформатированное содержимое. |
| —experimentalIncludeAllPages / —experimental-include-all-pages | логический | false | Включает все типы страниц, например веб-страницы и фоновые страницы. |
| —experimentalScreencast / —experimental-screencast | логический | false | Инструменты записи экрана. Требует ffmpeg в переменной PATH. |
| —experimentalFfmpegPath / —experimental-ffmpeg-path | строка | false | Путь к исполняемому файлу ffmpeg. |
Прочие
| Флаг | Тип | По умолчанию | Описание |
|---|---|---|---|
| —slim | логический | false | Ограниченный набор из трёх инструментов: навигация, выполнение скриптов и скриншоты. Для базовых задач в браузере. |
| —logFile / —log-file | строка | false | Путь к файлу для отладочных журналов. |
Переменные окружения
Часть настроек задаётся не флагами, а переменными окружения. Они удобны в CI-конвейерах и контейнерах, где конфигурация передаётся через окружение процесса.
- CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS — если задана, отключает сбор статистики использования (эквивалент —no-usage-statistics).
- CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS — если задана, отключает периодическую проверку обновлений.
- CI — если задана, сбор статистики использования отключается.
- DEBUG — значение * включает подробное отладочное логирование. Работает вместе с —logFile.
Когда использовать
| Ситуация | Что включить | Почему |
|---|---|---|
| Фоновые задачи на сервере | —headless | Chrome работает без окна, агент не мешает пользователю. |
| Исследование в уже открытой сессии | —autoConnect или —browser-url | Агент видит ту же сессию, где вы уже вошли в аккаунт. |
| Ограничить доступные браузеру адреса | —blockedUrlPattern / —allowedUrlPattern | Навигация и загрузка ресурсов ограничиваются списком разрешённых или запрещённых URL. Для полной сетевой изоляции нужна отдельная песочница. |
| Сократить объём контекста диалога | —slim или —screenshotFormat=jpeg | Меньше инструментов и компактнее скриншоты — меньше токенов на каждый ход. |
| Отключить ненужные группы инструментов | —categoryNetwork=false и подобные | Агент получает только те инструменты, которые нужны задаче. |
| Изолированная среда без autoConnect | ручной запуск Chrome + —browser-url | Chrome стартует с портом отладки, агент подключается по адресу. |
Пример
Полный пример конфигурации, которая запускает Chrome в безголовом режиме на канале Canary, ограничивает доступ к сети и переводит скриншоты в компактный формат webp:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--headless",
"--channel=canary",
"--allowedUrlPattern=https://example.com/*",
"--screenshotFormat=webp",
"--screenshotQuality=80"
]
}
}
}
Ограничения
Ограничения
Что учитывать перед настройкой.
Автоподключение требует Chrome 144+ — Флаг —autoConnect работает только с Chrome версии 144 и новее.
На более старых версиях придётся подключаться вручную через —browser-url или —wsEndpoint.
Часть функций привязана к версии Chrome
— —allowedUrlPattern требует Chrome 149+, а экспериментальные инструменты WebMCP — Chrome 150+ и запуска Chrome с —enable-features=WebMCP.
Экспериментальные возможности могут изменяться — Параметры с префиксом experimental находятся в разработке и могут измениться или исчезнуть в будущих версиях.
Не стоит без необходимости строить на них критичный рабочий процесс.
Подключение к сессии наследует данные — При подключении к существующей сессии агент получает доступ к учётным записям и файлам cookie.
Это удобно, но требует доверия к агенту.
Запись экрана требует ffmpeg
— Инструменты записи экрана (—experimentalScreencast) работают только при наличии ffmpeg в переменной PATH.
Антипаттерны
Антипаттерны
Чего не делать при настройке.
Подключать агента к личной сессии без необходимости — Агент наследует ваши учётные записи и cookie.
Если задача не требует работы в уже открытой сессии, безопаснее дать серверу запустить отдельный экземпляр Chrome.
Считать URL-фильтры полноценной сетевой изоляцией
— —blockedUrlPattern и —allowedUrlPattern ограничивают доступ через подключённые DevTools-сеансы, но не заменяют изоляцию на уровне ОС или виртуальной машины.
Включать экспериментальные возможности без необходимости — Такие функции могут измениться или исчезнуть.
Включайте только то, что действительно нужно задаче, и проверяйте поведение после обновлений.
Не различать статистику использования и CrUX — Это два отдельных механизма.
Статистика работы Chrome DevTools MCP отключается через —no-usage-statistics или CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS. Передача URL из трассировок производительности в CrUX управляется отдельно через —performance-crux / —no-performance-crux.
Использовать —acceptInsecureCerts без необходимости — Игнорирование ошибок сертификатов ослабляет защиту соединения.
Включайте только для тестовых сред с самоподписанными сертификатами.
Чеклист
Чеклист
Проверка перед запуском.
Chrome DevTools MCP — это настраиваемый слой между агентом и браузером. С помощью флагов один и тот же сервер можно использовать для фоновой работы, подключения к существующей сессии или сценария с ограниченным набором инструментов и URL-фильтрами.
Определён режим запуска
— Решено, нужен ли безголовый режим (—headless) или подключение к существующей сессии (—autoConnect / —browser-url).
Выбран канал Chrome — Если нужен нестабильный канал, задан —channel=canary/dev/beta.
По умолчанию используется stable.
Настроены URL-фильтры — Заданы —blockedUrlPattern или —allowedUrlPattern, если браузеру нужно ограничить доступ к определённым адресам.
Для полной сетевой изоляции используется отдельная песочница на уровне ОС или виртуальной машины.
Настроены скриншоты
— Выбран формат JPEG/WebP для сокращения объёма данных и при необходимости заданы качество и максимальный размер.
Отключены ненужные группы инструментов
— Категории, которые задаче не нужны, выключены через —category*=false.
Сбор статистики под контролем
— В чувствительных средах задана переменная CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS или CI.
Конфигурация проверена запуском
— Сервер стартует без ошибок, агент подключается к Chrome и выполняет тестовое действие.
Ссылки
Ссылки
- Репозиторий: ChromeDevTools/chrome-devtools-mcp
- Документация: Chrome DevTools для агентов
- Документация: Начало работы с Chrome DevTools MCP
- Документация: Конфигурация Chrome DevTools MCP
- Безопасность: SECURITY.md Chrome DevTools MCP