Открытый гайд · ИИ-офис

Playwright MCP — браузер в руках у агента

Сервер, который отдаёт агенту страницу деревом, а не картинкой. Разбираем подключение к Claude Code и Codex, группы инструментов, профили и случай, когда лучше взять CLI.

Кирилл СандаковКирилл СандаковВайбкодер, предприниматель, продюсерОпубликовано 20.08.202611 мин чтения

Playwright MCP — открытый сервер Microsoft, который даёт ИИ-агенту управлять браузером: открывать страницы, кликать, заполнять формы, читать консоль и сеть. Страница приходит модели деревом доступности, а не скриншотом, поэтому зрение не нужно и действия применяются однозначно. Подключается одной командой claude mcp add playwright npx @playwright/mcp@latest; требуется Node.js 18 или новее. Проверено по документации 20 августа 2026 года.

Что узнаешь из гайда

  • Почему дерево доступности лучше скриншотов
  • Как подключить сервер к Claude Code, Codex и по HTTP
  • Какие группы инструментов включаются флагом --caps
  • Чем постоянный профиль отличается от изолированного
  • Когда вместо MCP выгоднее взять CLI со скилами

Часть 1 · Знакомство

Что такое Playwright MCP

Главное

Агент получает структуру страницы со ссылками на элементы вместо картинки — и кликает по ним, а не по координатам.

Привычный способ дать агенту браузер — скриншоты: модель смотрит на картинку, прикидывает координаты, промахивается. Playwright MCP устроен иначе — он снимает дерево доступности, то самое, которым пользуются программы для незрячих, и передаёт модели список элементов с ролями и подписями. Клик идёт по ссылке из этого снимка, а не по точке на экране.

  • Быстро и легко. Дерево доступности вместо пиксельного ввода — меньше данных и меньше шума.
  • Без моделей зрения. Сервер работает на структурированных данных, поэтому подходит и текстовым моделям.
  • Предсказуемое применение. Уходит неоднозначность, неизбежная при подходе «посмотри на скриншот и догадайся».

Типичные задачи, ради которых сервер ставят: пройти сценарий на своём сайте и рассказать, что сломалось; собрать данные с внутренней панели; проверить, как ведёт себя форма после правки вёрстки; воспроизвести баг по шагам и снять консоль. Для фронтенда это естественное продолжение работы агента с кодом — как её выстроить, разобрано в гайде про фронтенд с Claude Code.

Что это не заменяет

Сервер даёт агенту руки, но не даёт методики. Как писать сами автотесты и какие скилы под это брать — отдельная тема, она разобрана в подборке скилов для тестирования. Одно с другим сочетается: скил задаёт, что проверять, сервер выполняет действия в браузере.


Часть 2 · Подключение

Как подключить сервер к агенту

Главное

Отдельная установка не нужна. Пакет подтягивается через npx при первом запуске.

терминал · подключение одной командой
# Claude Code
claude mcp add playwright npx @playwright/mcp@latest

# Codex
codex mcp add playwright npx "@playwright/mcp@latest"

# Amp
amp mcp add playwright -- npx @playwright/mcp@latest

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

конфиг клиента · стандартная запись
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest"]
    }
  }
}

Отдельный случай — когда браузер должен жить вне процесса клиента: headed-режим на машине без дисплея, запуск из рабочего процесса IDE, общий браузер на несколько клиентов. Тогда сервер поднимается по HTTP, а в клиенте вместо команды указывается адрес.

терминал и конфиг · отдельный сервер
npx @playwright/mcp@latest --port 8931

# в клиенте
{
  "mcpServers": {
    "playwright": { "url": "http://localhost:8931/mcp" }
  }
}

Docker: только headless chromium

Контейнер есть — образ mcr.microsoft.com/playwright/mcp, его можно и запускать самому долгоживущим сервисом на порту 8931, и отдавать на откуп клиенту. Но в README прямо оговорено ограничение: реализация в Docker пока поддерживает только headless chromium — то есть ни другие движки, ни видимый режим внутри контейнера в это «пока» не входят.


Часть 3 · Возможности

Инструменты и флаг --caps

Главное

Базовый набор включён сразу. Всё остальное открывается флагом — и это защита от раздувания контекста.

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

НаборЧто открывает
Базовый (без флага)Навигация, клики, ввод, формы, снимок дерева, скриншот, консоль, сеть, ожидания, вкладки
networkПерехват и подмена запросов, управление состоянием сети
storageКуки, localStorage и sessionStorage, выгрузка и загрузка состояния
devtoolsПодсветка элементов, трассировка, запись видео сессии
visionКоординатный ввод: движения мыши, клики по точке, колесо
pdfСохранение страницы в PDF
testingПроверки видимости текста и элементов, генерация локаторов
configЧтение текущей конфигурации сервера

Список наборов стоит проверять у своей версии

В README таблица опций и раздел инструментов расходятся: в описании флага --caps перечислены только vision, pdf и devtools, а у групп инструментов пометка «включается через --caps» стоит ещё у config, network, storage и testing. Таблица опций собирается скриптом и, судя по всему, отстаёт от кода. Надёжный способ — сверить список у своей версии через --help.

терминал · включение наборов и полезные флаги
# включить дополнительные наборы
npx @playwright/mcp@latest --caps=vision,pdf

# другой движок и видимый режим выключен
npx @playwright/mcp@latest --browser firefox --headless

# мобильная эмуляция: страницы легче, токенов меньше
npx @playwright/mcp@latest --mobile

# ограничить, куда браузеру можно ходить
npx @playwright/mcp@latest --blocked-origins "ads.example.com"

Часть 4 · Профиль и доступ

Профиль, изоляция и границы доступа

Главное

Профиль по умолчанию постоянный и привязан к рабочей папке. Параллельным клиентам нужен свой.

Сервер запускает браузер с постоянным профилем: логины и куки живут между сессиями, как в обычном браузере. Каталог лежит в кэше ms-playwright — на macOS это ~/Library/Caches/ms-playwright/, на Linux ~/.cache/ms-playwright/, на Windows папка внутри AppData\Local. В имени участвует хэш от корня рабочей папки клиента, поэтому у разных проектов профили автоматически разные.

Два клиента на один профиль не встанут

Постоянный профиль занимает ровно один экземпляр браузера. Если в одной рабочей папке параллельно работают два клиента MCP, они подерутся за него. Решение из документации: второму клиенту дать --isolated либо отдельный --user-data-dir. Это же касается параллельных сессий агента в одном репозитории.

Изолированный режим включается флагом --isolated: профиль держится в памяти, при закрытии браузера состояние теряется целиком. Стартовое состояние в этом случае подаётся файлом через --storage-state — удобно, когда сценарию нужен уже авторизованный пользователь. Отдельная возможность — расширение для браузера: с флагом --extension сервер подключается к уже открытым вкладкам Chrome или Edge и пользуется живой сессией.

Про границы стоит сказать честно: в README прямым текстом написано, что Playwright MCP не является границей безопасности. Доступ к файлам по умолчанию ограничен корнями рабочей области, и снимать это ограничение флагом --allow-unrestricted-file-access без нужды не стоит. Списки --allowed-origins и --blocked-origins помогают не пустить браузер куда попало, но в документации отдельно оговорено: они тоже не считаются границей безопасности и не влияют на редиректы. Секреты передаются файлом через --secrets, а не строкой в конфиге.

Даже в осторожной настройке сервер остаётся полноценным инструментом отладки: агент видит консоль и сетевые запросы и может воспроизвести баг по шагам вместо догадок по коду. Как встроить такой цикл в работу — в гайде про отладку кода через Claude.


Часть 5 · Альтернатива

Когда вместо MCP выгоднее CLI со скилами

Главное

Microsoft сам пишет: кодовому агенту чаще выгоднее CLI, потому что это дешевле по токенам.

Оговорка стоит в самом начале README сервера, и она нетипично прямая. Смысл такой: вызовы через командную строку экономнее, потому что в контекст модели не грузятся большие схемы инструментов и подробные деревья доступности. Агенту, который одновременно держит в голове репозиторий, тесты и рассуждения, это заметно. MCP при этом никуда не девается — он остаётся уместным для циклов, где важны постоянное состояние браузера, богатая интроспекция и долгие автономные прогоны.

Что выбратьКогда
CLI со скиламиКодовый агент с большим репозиторием, где контекст на вес золота: короткие команды вместо схем инструментов
MCP-серверИсследовательская автоматизация, самовосстанавливающиеся тесты, долгие автономные прогоны с постоянным состоянием
терминал · Playwright CLI и скилы
npm install -g @playwright/cli@latest
playwright-cli --help

# поставить скилы, их подхватят Claude Code и Copilot
playwright-cli install --skills

# ручная проверка сценария
playwright-cli open https://demo.playwright.dev/todomvc/ --headed
playwright-cli type "Купить продукты"
playwright-cli press Enter
playwright-cli screenshot

Скилы здесь — обычные скилы агента, тот же формат, что и всё остальное, что ставится в проект. Порядок установки и разбор структуры — в инструкции по установке скила. Отдельный приятный момент: без скилов CLI тоже работает — достаточно сказать агенту посмотреть playwright-cli --help и дальше он разбирается сам. Профиль по умолчанию держится в памяти, флаг --persistent сохраняет его на диск, а параллельные сессии разводятся флагом -s= или переменной окружения.

Коротко

  • Playwright MCP отдаёт агенту браузер через дерево доступности — без моделей зрения и без кликов по координатам.
  • Подключение: claude mcp add playwright npx @playwright/mcp@latest или стандартный конфиг с командой npx; нужен Node.js 18 и новее.
  • Отдельный сервер поднимается флагом --port, в контейнере работает только headless chromium.
  • Базовые инструменты включены сразу, остальные наборы открываются флагом --caps.
  • Профиль по умолчанию постоянный и привязан к рабочей папке; для параллельных клиентов нужен --isolated или свой каталог.
  • Для кодового агента Microsoft советует CLI со скилами — он дешевле по токенам, а MCP оставляют долгим автономным сценариям.

Вопросы

Частые вопросы

Что такое Playwright MCP и что он даёт агенту?

Playwright MCP — сервер протокола MCP, который отдаёт ИИ-агенту управление браузером средствами Playwright. Ключевая особенность в том, что страница передаётся не картинкой, а деревом доступности: агенту не нужна модель зрения, он видит структуру элементов и обращается к ним по ссылкам из снимка. За счёт этого действия применяются однозначно, без угадывания по скриншоту.

Как подключить Playwright MCP к Claude Code?

Одной командой в терминале проекта: claude mcp add playwright npx @playwright/mcp@latest. Нужен Node.js 18 или новее, отдельно ставить ничего не требуется — пакет подтянется при первом запуске. У Codex команда своя: codex mcp add playwright npx @playwright/mcp@latest. В клиентах, где серверы прописываются файлом, используется стандартный конфиг с командой npx и аргументом @playwright/mcp@latest.

Что умеет Playwright MCP из коробки?

Сразу доступна базовая автоматизация: переход по адресу, клик, ввод текста, заполнение формы целиком, снимок дерева доступности, скриншот, выполнение кода на странице, чтение консоли и сетевых запросов, ожидание условия и работа со вкладками. Остальные наборы включаются флагом --caps: конфигурация, сеть, хранилища, инструменты разработчика, координатный ввод, генерация PDF и проверки для тестов.

Чем режим isolated отличается от постоянного профиля?

По умолчанию сервер работает с постоянным профилем: авторизации и куки сохраняются между сессиями, а сам профиль лежит в каталоге кэша ms-playwright и привязан к корню рабочей папки. Флаг --isolated держит профиль в памяти, и при закрытии браузера состояние пропадает. Начальное состояние в этом случае подаётся файлом через --storage-state.

Почему Microsoft советует кодовым агентам CLI вместо MCP?

В README обоих проектов объяснение одно: вызовы CLI экономнее по токенам, потому что в контекст модели не загружаются большие схемы инструментов и подробные деревья доступности. Для агента, который одновременно держит в голове большой репозиторий, это ощутимо. MCP при этом не отменяется — он остаётся уместным там, где нужны постоянное состояние браузера и многократные рассуждения по структуре страницы.

Можно ли запустить Playwright MCP в Docker или отдельным сервером?

Да, оба варианта описаны. Отдельный сервер поднимается командой npx @playwright/mcp@latest --port 8931, а в клиенте вместо команды указывается адрес http://localhost:8931/mcp — так удобно работать, когда браузер должен жить вне процесса клиента. Для контейнера есть образ mcr.microsoft.com/playwright/mcp, но в README оговорено, что в Docker пока поддерживается только headless chromium.

Читать дальше

Соседние гайды

ИИ-офис
Собери свой ИИ-офис и перестань делать руками то, что делает нейросеть

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

Посмотреть, что внутри

telegram

Канал с полезными материалами про нейросети

Разборы, новые инструменты и приёмы по ИИ — то, чем пользуюсь сам, без воды. Подпишись, чтобы не потерять.

Перейти в канал
Кирилл Сандаков

Об авторе

Кирилл Сандаков

Вайбкодер, предприниматель, продюсер

Завайбкодил контент-ферму на США в Instagram (более 300 тыс. подписчиков, среди читателей Дональд Трамп Младший), создатель платформы и сообщества ИИ-офис, автор блога о нейросетях «Выжимаем из ИИ Максимум».

Все статьи автора