Сервер, который отдаёт агенту страницу деревом, а не картинкой. Разбираем подключение к Claude Code и Codex, группы инструментов, профили и случай, когда лучше взять CLI.
Playwright MCP — открытый сервер Microsoft, который даёт ИИ-агенту управлять браузером: открывать страницы, кликать, заполнять формы, читать консоль и сеть. Страница приходит модели деревом доступности, а не скриншотом, поэтому зрение не нужно и действия применяются однозначно. Подключается одной командой claude mcp add playwright npx @playwright/mcp@latest; требуется Node.js 18 или новее. Проверено по документации 20 августа 2026 года.
Что узнаешь из гайда
Часть 1 · Знакомство
Главное
Агент получает структуру страницы со ссылками на элементы вместо картинки — и кликает по ним, а не по координатам.
Привычный способ дать агенту браузер — скриншоты: модель смотрит на картинку, прикидывает координаты, промахивается. 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 · Возможности
Главное
Базовый набор включён сразу. Всё остальное открывается флагом — и это защита от раздувания контекста.
Из коробки агент получает то, что нужно для обычного сценария: перейти по адресу, кликнуть, ввести текст, заполнить форму целиком, снять дерево страницы, сделать скриншот, выполнить код на странице, прочитать консоль и сетевые запросы, подождать условие, переключить вкладку. Остальные наборы дремлют, пока их не включат.
| Набор | Что открывает |
|---|---|
| Базовый (без флага) | Навигация, клики, ввод, формы, снимок дерева, скриншот, консоль, сеть, ожидания, вкладки |
| network | Перехват и подмена запросов, управление состоянием сети |
| storage | Куки, localStorage и sessionStorage, выгрузка и загрузка состояния |
| devtools | Подсветка элементов, трассировка, запись видео сессии |
| vision | Координатный ввод: движения мыши, клики по точке, колесо |
| Сохранение страницы в 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 · Альтернатива
Главное
Microsoft сам пишет: кодовому агенту чаще выгоднее CLI, потому что это дешевле по токенам.
Оговорка стоит в самом начале README сервера, и она нетипично прямая. Смысл такой: вызовы через командную строку экономнее, потому что в контекст модели не грузятся большие схемы инструментов и подробные деревья доступности. Агенту, который одновременно держит в голове репозиторий, тесты и рассуждения, это заметно. MCP при этом никуда не девается — он остаётся уместным для циклов, где важны постоянное состояние браузера, богатая интроспекция и долгие автономные прогоны.
| Что выбрать | Когда |
|---|---|
| CLI со скилами | Кодовый агент с большим репозиторием, где контекст на вес золота: короткие команды вместо схем инструментов |
| MCP-сервер | Исследовательская автоматизация, самовосстанавливающиеся тесты, долгие автономные прогоны с постоянным состоянием |
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= или переменной окружения.
Коротко
claude mcp add playwright npx @playwright/mcp@latest или стандартный конфиг с командой npx; нужен Node.js 18 и новее.--port, в контейнере работает только headless chromium.--caps.--isolated или свой каталог.Вопросы
Playwright MCP — сервер протокола MCP, который отдаёт ИИ-агенту управление браузером средствами Playwright. Ключевая особенность в том, что страница передаётся не картинкой, а деревом доступности: агенту не нужна модель зрения, он видит структуру элементов и обращается к ним по ссылкам из снимка. За счёт этого действия применяются однозначно, без угадывания по скриншоту.
Одной командой в терминале проекта: claude mcp add playwright npx @playwright/mcp@latest. Нужен Node.js 18 или новее, отдельно ставить ничего не требуется — пакет подтянется при первом запуске. У Codex команда своя: codex mcp add playwright npx @playwright/mcp@latest. В клиентах, где серверы прописываются файлом, используется стандартный конфиг с командой npx и аргументом @playwright/mcp@latest.
Сразу доступна базовая автоматизация: переход по адресу, клик, ввод текста, заполнение формы целиком, снимок дерева доступности, скриншот, выполнение кода на странице, чтение консоли и сетевых запросов, ожидание условия и работа со вкладками. Остальные наборы включаются флагом --caps: конфигурация, сеть, хранилища, инструменты разработчика, координатный ввод, генерация PDF и проверки для тестов.
По умолчанию сервер работает с постоянным профилем: авторизации и куки сохраняются между сессиями, а сам профиль лежит в каталоге кэша ms-playwright и привязан к корню рабочей папки. Флаг --isolated держит профиль в памяти, и при закрытии браузера состояние пропадает. Начальное состояние в этом случае подаётся файлом через --storage-state.
В README обоих проектов объяснение одно: вызовы CLI экономнее по токенам, потому что в контекст модели не загружаются большие схемы инструментов и подробные деревья доступности. Для агента, который одновременно держит в голове большой репозиторий, это ощутимо. MCP при этом не отменяется — он остаётся уместным там, где нужны постоянное состояние браузера и многократные рассуждения по структуре страницы.
Да, оба варианта описаны. Отдельный сервер поднимается командой npx @playwright/mcp@latest --port 8931, а в клиенте вместо команды указывается адрес http://localhost:8931/mcp — так удобно работать, когда браузер должен жить вне процесса клиента. Для контейнера есть образ mcr.microsoft.com/playwright/mcp, но в README оговорено, что в Docker пока поддерживается только headless chromium.
Читать дальше
Платформа и сообщество, где я по шагам показываю, как поставить ИИ на рутину: контент, код, продажи, аналитика. Заходи и забирай рабочие связки, которыми пользуюсь сам.
Посмотреть, что внутриtelegram
Канал с полезными материалами про нейросети
Разборы, новые инструменты и приёмы по ИИ — то, чем пользуюсь сам, без воды. Подпишись, чтобы не потерять.