API VEGA

Playwright MCP

MCP-сервер (Model Context Protocol), предоставляющий возможности автоматизации браузера на основе Playwright. Сервер позволяет LLM взаимодействовать с веб-страницами через структурированные снимки доступности (accessibility snapshots), избавляя от необходимости использовать скриншоты или модели, обученные на визуальных данных.

Playwright MCP vs Playwright CLI

Этот пакет предоставляет MCP-интерфейс к Playwright. Если вы работаете с coding-агентом, возможно, вам будет полезнее использовать CLI+SKILLS.

  • CLI: Современные coding-агенты всё чаще предпочитают рабочие процессы на основе CLI, оформленные как SKILLs, вместо MCP, поскольку вызовы CLI более экономичны по токенам: они не загружают в контекст модели объёмные схемы инструментов и подробные деревья доступности, позволяя агентам действовать через лаконичные, целевые команды. Это делает связку CLI + SKILLs более подходящей для высоконагруженных coding-агентов, которым приходится совмещать автоматизацию браузера с работой над крупными кодовыми базами, тестами и логическими рассуждениями в условиях ограниченного контекстного окна. Подробнее о Playwright CLI with SKILLS.

  • MCP: MCP остаётся актуальным для специализированных агентных циклов, которым полезны постоянное состояние, богатая интроспекция и итеративный анализ структуры страницы, — например, для исследовательской автоматизации, самовосстанавливающихся тестов или длительных автономных сценариев, где непрерывное поддержание контекста браузера важнее затрат на токены.

Ключевые возможности

  • Быстрота и лёгкость. Использует дерево доступности Playwright, а не обработку на уровне пикселей.

  • Дружелюбность к LLM. Не требует vision-моделей — работает исключительно со структурированными данными.

  • Детерминированное применение инструментов. Устраняет неоднозначность, характерную для подходов на основе скриншотов.

Требования

  • Node.js 18 или новее

  • VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie или любой другой MCP-клиент

Начало работы

Сначала установите Playwright MCP-сервер через ваш клиент.

Стандартная конфигурация подходит для большинства инструментов:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}

Amp

Добавьте через экран настроек расширения Amp для VS Code или отредактировав файл settings.json:

"amp.mcpServers": {
  "playwright": {
    "command": "npx",
    "args": [
      "@playwright/mcp@latest"
    ]
  }
}

Настройка Amp CLI:

Добавьте с помощью команды amp mcp add, приведённой ниже.

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

Antigravity

Добавьте через настройки Antigravity или отредактировав файл конфигурации:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}

Claude Code

Используйте CLI Claude Code для добавления Playwright MCP-сервера:

claude mcp add playwright npx @playwright/mcp@latest

Claude Desktop

Следуйте руководству по установке MCP и используйте стандартную конфигурацию, приведённую выше.

Cline

Следуйте инструкциям в разделе Configuring MCP Servers.

Пример: локальная настройка

Добавьте следующий код в файл cline_mcp_settings.json:

{
  "mcpServers": {
    "playwright": {
      "type": "stdio",
      "command": "npx",
      "timeout": 30,
      "args": [
        "-y",
        "@playwright/mcp@latest"
      ],
      "disabled": false
    }
  }
}

Codex

Используйте CLI Codex для добавления Playwright MCP-сервера:

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

Также можно создать или отредактировать файл конфигурации ~/.codex/config.toml, добавив в него:

[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]

Дополнительные сведения — в документации Codex MCP.

Copilot

Используйте Copilot CLI, чтобы интерактивно добавить Playwright MCP-сервер:

/mcp add

Также можно создать или отредактировать файл конфигурации ~/.copilot/mcp-config.json, добавив в него:

{
  "mcpServers": {
    "playwright": {
      "type": "local",
      "command": "npx",
      "tools": [
        "*"
      ],
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}

Дополнительные сведения — в документации Copilot CLI.

Cursor

Установка в один клик:
Или установка вручную:

Перейдите в Cursor SettingsMCPAdd new MCP Server. Задайте любое имя, выберите тип command и укажите команду npx @playwright/mcp@latest. Проверить конфигурацию или добавить аргументы к команде можно, нажав Edit.

Factory

Используйте Factory CLI для добавления Playwright MCP-сервера:

droid mcp add playwright "npx @playwright/mcp@latest"

Также можно ввести /mcp внутри Factory droid, чтобы открыть интерактивный интерфейс управления MCP-серверами.

Дополнительные сведения — в документации Factory MCP.

Gemini CLI

Следуйте руководству по установке MCP и используйте стандартную конфигурацию, приведённую выше.

Goose

Установка в один клик:
Или установка вручную:

Перейдите в Advanced settingsExtensionsAdd custom extension. Задайте любое имя, выберите тип STDIO и укажите в поле command значение npx @playwright/mcp. Нажмите "Add Extension".

Grok

Используйте CLI Grok для добавления Playwright MCP-сервера:

grok mcp add playwright -- npx @playwright/mcp@latest

Также можно создать или отредактировать файл конфигурации ~/.grok/config.toml, добавив в него:

[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]

Дополнительные сведения — в документации Grok MCP.

Junie

Чтобы добавить Playwright MCP-сервер в Junie CLI:

  • Введите /mcp

  • Нажмите Ctrl+A, чтобы добавить новый MCP-сервер

  • Выберите Playwright из списка

Также можно добавить сервер в файл .junie/mcp/mcp.json:

{
  "mcpServers": {
    "Playwright": {
      "command": "npx",
      "args": [
        "-y",
        "@playwright/mcp@latest"
      ]
    }
  }
}

Дополнительные сведения — в документации по настройке Junie MCP.

Kiro

Следуйте документации по MCP-серверам. Например, в файле .kiro/settings/mcp.json:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}

LM Studio

Установка в один клик:
Или установка вручную:

Откройте раздел Program на правой боковой панели → InstallEdit mcp.json. Используйте стандартную конфигурацию, приведённую выше.

opencode

Следуйте документации по MCP-серверам. Например, в файле ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "playwright": {
      "type": "local",
      "command": [
        "npx",
        "@playwright/mcp@latest"
      ],
      "enabled": true
    }
  }
}

Qodo Gen

Откройте панель чата Qodo Gen в VSCode или IntelliJ → Connect more tools → + Add new MCP → вставьте стандартную конфигурацию, приведённую выше.

Нажмите Save.

VS Code

Установка в один клик:
Или установка вручную:

Следуйте руководству по установке MCP и используйте стандартную конфигурацию, приведённую выше. Также можно установить Playwright MCP-сервер через VS Code CLI:

# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'

После установки Playwright MCP-сервер станет доступен для использования вашим GitHub Copilot агентом в VS Code.

Warp

Перейдите в SettingsAIManage MCP Servers+ Add, чтобы добавить MCP-сервер. Используйте стандартную конфигурацию, приведённую выше.

Также можно использовать slash-команду /add-mcp в строке ввода Warp и вставить стандартную конфигурацию:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}

Windsurf

Следуйте документации Windsurf MCP. Используйте стандартную конфигурацию, приведённую выше.

Конфигурация

MCP-сервер Playwright поддерживает следующие аргументы. Их можно указать в JSON-конфигурации выше в составе списка "args":

ОпцияОписание
--allowed-hostsразделённый запятыми список хостов, с которых серверу разрешено принимать запросы. По умолчанию используется хост, к которому привязан сервер. Передайте '*', чтобы отключить проверку хостов. Переменная окружения PLAYWRIGHT_MCP_ALLOWED_HOSTS
--allowed-originsразделённый точкой с запятой список ДОВЕРЕННЫХ источников, к которым браузеру разрешено обращаться. По умолчанию разрешены все. Важно: не служит границей безопасности и не влияет на перенаправления. Переменная окружения PLAYWRIGHT_MCP_ALLOWED_ORIGINS
--allow-unrestricted-file-accessразрешает доступ к файлам за пределами корневых каталогов рабочей области, а также неограниченный доступ к URL с схемой file://. По умолчанию доступ к файловой системе ограничен корневыми каталогами рабочей области (или текущим каталогом, если корневые каталоги не заданы), а переходы по URL file:// блокируются. Переменная окружения PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS
--blocked-originsразделённый точкой с запятой список источников, к которым браузеру запрещено обращаться. Список блокировки проверяется раньше списка разрешения. Если использовать без списка разрешения, запросы, не совпадающие со списком блокировки, по-прежнему разрешены. Важно: не служит границей безопасности и не влияет на перенаправления. Переменная окружения PLAYWRIGHT_MCP_BLOCKED_ORIGINS
--block-service-workersблокирует service workers. Переменная окружения PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS
--browserбраузер или канал Chrome, возможные значения: chrome, firefox, webkit, msedge. Переменная окружения PLAYWRIGHT_MCP_BROWSER
--capsразделённый запятыми список дополнительных возможностей, возможные значения: vision, pdf, devtools. Переменная окружения PLAYWRIGHT_MCP_CAPS
--cdp-endpointCDP-эндпоинт для подключения. Переменная окружения PLAYWRIGHT_MCP_CDP_ENDPOINT
--cdp-headerCDP-заголовки, отправляемые с запросом на подключение; можно указать несколько. Переменная окружения PLAYWRIGHT_MCP_CDP_HEADERS
--cdp-timeoutтаймаут подключения к CDP-эндпоинту в миллисекундах, по умолчанию 30000 мс. Переменная окружения PLAYWRIGHT_MCP_CDP_TIMEOUT
--codegenязык для генерации кода, возможные значения: "typescript", "python", "java", "csharp", "none". По умолчанию — "typescript". Переменная окружения PLAYWRIGHT_MCP_CODEGEN
--configпуть к файлу конфигурации. Переменная окружения PLAYWRIGHT_MCP_CONFIG
--console-levelуровень возвращаемых сообщений консоли: "error", "warning", "info", "debug". Каждый уровень включает сообщения более критичных уровней. Переменная окружения PLAYWRIGHT_MCP_CONSOLE_LEVEL
--deviceэмулируемое устройство, например "iPhone 15". Переменная окружения PLAYWRIGHT_MCP_DEVICE
--mobileэмуляция типового мобильного устройства (Pixel 10 для Chromium, iPhone 17 для WebKit). Мобильные страницы обычно легче, что экономит токены. Нельзя комбинировать с --device. Переменная окружения PLAYWRIGHT_MCP_MOBILE
--executable-pathпуть к исполняемому файлу браузера. Переменная окружения PLAYWRIGHT_MCP_EXECUTABLE_PATH
--extensionподключение к запущенному экземпляру браузера (только Edge/Chrome). Требуется установленное расширение "Playwright Extension". Переменная окружения PLAYWRIGHT_MCP_EXTENSION
--endpointэндпоинт подключённого браузера. Переменная окружения PLAYWRIGHT_MCP_ENDPOINT
--file-pathsспособ отображения путей к файлам в результатах инструментов: "relative" (относительно корня рабочей области) или "absolute". По умолчанию — "relative". Переменная окружения PLAYWRIGHT_MCP_FILE_PATHS
--grant-permissionsсписок разрешений, предоставляемых контексту браузера, например "geolocation", "clipboard-read", "clipboard-write". Переменная окружения PLAYWRIGHT_MCP_GRANT_PERMISSIONS
--headlessзапуск браузера в headless-режиме; по умолчанию браузер запускается с графическим интерфейсом. Переменная окружения PLAYWRIGHT_MCP_HEADLESS
--hostхост, к которому привязывается сервер. По умолчанию — localhost. Используйте 0.0.0.0, чтобы привязать сервер ко всем интерфейсам. Переменная окружения PLAYWRIGHT_MCP_HOST
--idle-timeoutзакрывает браузер по истечении указанного количества миллисекунд без завершённого вызова инструмента; следующий вызов перезапускает его. По умолчанию один час для headless-браузеров и никогда для браузеров с графическим интерфейсом; значение 0 отключает таймаут. Переменная окружения PLAYWRIGHT_MCP_IDLE_TIMEOUT
--ignore-https-errorsигнорировать ошибки HTTPS. Переменная окружения PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS
--init-pageпуть к файлу TypeScript, выполняемому на объекте страницы Playwright. Переменная окружения PLAYWRIGHT_MCP_INIT_PAGE
--init-scriptпуть к файлу JavaScript, добавляемому в качестве инициализационного скрипта. Скрипт выполняется на каждой странице перед её собственными скриптами. Опцию можно указывать несколько раз. Переменная окружения PLAYWRIGHT_MCP_INIT_SCRIPT
--isolatedхранит профиль браузера в памяти, не сохраняя его на диск. Переменная окружения PLAYWRIGHT_MCP_ISOLATED
--image-responsesотправлять ли клиенту ответы с изображениями. Возможные значения: "allow", "omit" или "only". При значении "only" ответ, содержащий изображение, состоит исключительно из частей с изображением, без текстовой части. По умолчанию — "allow". Переменная окружения PLAYWRIGHT_MCP_IMAGE_RESPONSES
--no-sandboxотключает песочницу для всех типов процессов, которые обычно ей защищены. Переменная окружения PLAYWRIGHT_MCP_NO_SANDBOX
--no-webmcpне собирать и не предоставлять инструменты, которые страница регистрирует через WebMCP API. Переменная окружения PLAYWRIGHT_MCP_WEBMCP=false
--output-dirпуть к каталогу для автоматически именуемых выходных файлов, например скриншота, снятого без явно заданного имени файла. Файлы с явно заданным именем разрешаются относительно корня рабочей области и не зависят от этой опции. Переменная окружения PLAYWRIGHT_MCP_OUTPUT_DIR
--output-max-sizeпорог высвобождения старых выходных файлов в байтах. Переменная окружения PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE
--portпорт для прослушивания при использовании транспорта SSE. Переменная окружения PLAYWRIGHT_MCP_PORT
--profile-dir-nameимя каталога профиля в пользовательском каталоге данных для подключения с --extension, например "Profile 1". По умолчанию используется последний использованный профиль, в котором установлено расширение. Переменная окружения PLAYWRIGHT_MCP_PROFILE_DIR_NAME
--proxy-bypassразделённый запятыми список доменов, для которых прокси не используется, например ".com,chromium.org,.domain.com". Переменная окружения PLAYWRIGHT_MCP_PROXY_BYPASS
--proxy-serverпрокси-сервер, например "http://myproxy:3128" или "socks5://myproxy:8080". Переменная окружения PLAYWRIGHT_MCP_PROXY_SERVER
--sandboxвключает песочницу для всех типов процессов, которые обычно ей не защищены. Переменная окружения PLAYWRIGHT_MCP_SANDBOX
--save-sessionсохранять ли сессию Playwright MCP в выходной каталог. Переменная окружения PLAYWRIGHT_MCP_SAVE_SESSION
--secretsпуть к файлу с секретами в формате dotenv. Переменная окружения PLAYWRIGHT_MCP_SECRETS_FILE
--shared-browser-contextиспользовать один и тот же контекст браузера для всех подключённых HTTP-клиентов. Переменная окружения PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT
--snapshot-boxesвключает ограничивающий прямоугольник каждого элемента в снимки в формате [box=x,y,width,height]. Координаты задаются относительно области просмотра в CSS-пикселях. Переменная окружения PLAYWRIGHT_MCP_SNAPSHOT_BOXES
--snapshot-modeрежим создания снимков для ответов. Возможные значения: "full" или "none". По умолчанию — "full". Переменная окружения PLAYWRIGHT_MCP_SNAPSHOT_MODE
--storage-stateпуть к файлу состояния хранилища для изолированных сессий. Переменная окружения PLAYWRIGHT_MCP_STORAGE_STATE
--test-id-attributeатрибут, используемый для тестовых идентификаторов; по умолчанию — "data-testid". Переменная окружения PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE
--timeout-actionтаймаут действия в миллисекундах, по умолчанию 5000 мс. Переменная окружения PLAYWRIGHT_MCP_TIMEOUT_ACTION
--timeout-navigationтаймаут навигации в миллисекундах, по умолчанию 60000 мс. Переменная окружения PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION
--timeout-settleвремя ожидания в миллисекундах после каждого действия до завершения вызванных им процессов, по умолчанию 500 мс. Переменная окружения PLAYWRIGHT_MCP_TIMEOUT_SETTLE
--user-agentстрока User-Agent. Переменная окружения PLAYWRIGHT_MCP_USER_AGENT
--user-data-dirпуть к пользовательскому каталогу данных. Если не указан, будет создан временный каталог. Переменная окружения PLAYWRIGHT_MCP_USER_DATA_DIR
--viewport-sizeразмер области просмотра браузера в пикселях, например "1280x720". Переменная окружения PLAYWRIGHT_MCP_VIEWPORT_SIZE

Профиль пользователя

Вы можете запускать Playwright MCP с постоянным профилем, как обычный браузер (по умолчанию), в изолированных контекстах для тестовых сессий или подключаться к уже запущенному браузеру через расширение.

Постоянный профиль

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

Постоянный профиль расположен по следующим путям, и вы можете переопределить его с помощью аргумента --user-data-dir.

# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-{workspace-hash}

# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-{workspace-hash}

# Linux
- ~/.cache/ms-playwright/mcp-{channel}-{workspace-hash}

{workspace-hash} вычисляется на основе корневого каталога рабочей области MCP-клиента, поэтому разные проекты автоматически получают отдельные профили.

Важно

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

Изолированный режим

В изолированном режиме каждая сессия запускается в отдельном изолированном профиле. Каждый раз, когда вы просите MCP закрыть браузер,

сессия завершается, и всё состояние хранилища этой сессии теряется. Вы можете передать браузеру начальное состояние хранилища

через параметр contextOptions в конфигурации или через аргумент --storage-state. Подробнее о состоянии хранилища

можно узнать здесь.

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest",
        "--isolated",
        "--storage-state={path/to/storage.json}"
      ]
    }
  }
}

Расширение для браузера

Расширение Playwright MCP для Chrome позволяет подключаться к уже открытым вкладкам браузера и использовать ваши активные сессии и состояние браузера. Инструкции по установке и настройке смотрите в microsoft/playwright › packages/extension.

Начальное состояние

Существует несколько способов передать начальное состояние контексту браузера или странице.

Для состояния хранилища можно использовать один из вариантов:

  • Запуск с каталогом данных пользователя через аргумент --user-data-dir. При этом все данные браузера сохраняются между сессиями.

  • Запуск с файлом состояния хранилища через аргумент --storage-state. При этом cookies и данные local storage из файла загружаются в изолированный контекст браузера.

Для состояния страницы доступны следующие варианты:

  • --init-page — указывает на файл TypeScript, который будет выполнен для объекта страницы Playwright. Это позволяет запускать произвольный код для настройки страницы.
// init-page.ts
export default async ({ page }) => {
  await page.context().grantPermissions(['geolocation']);
  await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 });
  await page.setViewportSize({ width: 1280, height: 720 });
};
  • --init-script — указывает на файл JavaScript, который будет добавлен в качестве скрипта инициализации. Скрипт выполняется на каждой странице до запуска её собственных скриптов.

Это удобно для переопределения API браузера или настройки окружения.

// init-script.js
window.isPlaywrightMCP = true;

Файл конфигурации

MCP-сервер Playwright можно настроить с помощью JSON-файла конфигурации. Путь к файлу конфигурации указывается через параметр командной строки --config:

npx @playwright/mcp@latest --config path/to/config.json

Схема файла конфигурации

{
  /**
   * The browser to use.
   */
  browser?: {
    /**
     * The type of browser to use.
     */
    browserName?: 'chromium' | 'firefox' | 'webkit';

    /**
     * Keep the browser profile in memory, do not save it to disk.
     */
    isolated?: boolean;

    /**
     * Path to a user data directory for browser profile persistence.
     * Temporary directory is created by default.
     */
    userDataDir?: string;

    /**
     * Launch options passed to
     * @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
     *
     * This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
     */
    launchOptions?: playwright.LaunchOptions;

    /**
     * Context options for the browser context.
     *
     * This is useful for settings options like `viewport`.
     */
    contextOptions?: playwright.BrowserContextOptions;

    /**
     * Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
     */
    cdpEndpoint?: string;

    /**
     * CDP headers to send with the connect request.
     */
    cdpHeaders?: Record<string, string>;

    /**
     * Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
     */
    cdpTimeout?: number;

    /**
     * Remote endpoint to connect to an existing Playwright server. May be a
     * WebSocket URL string, or a [ConnectOptions] object that mirrors the
     * `connectOptions` shape used by the test runner. When passed as an object,
     * `exposeNetwork`, `headers`, `slowMo`, and `timeout` are forwarded to the
     * underlying connect call.
     */
    remoteEndpoint?: string | playwright.ConnectOptions & { endpoint: string };

    /**
     * Paths to TypeScript files to add as initialization scripts for Playwright page.
     */
    initPage?: string[];

    /**
     * Paths to JavaScript files to add as initialization scripts.
     * The scripts will be evaluated in every page before any of the page's scripts.
     */
    initScript?: string[];
  },

  /**
   * Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
   * config is ignored.
   * Requires the "Playwright Extension" to be installed.
   */
  extension?: boolean;

  server?: {
    /**
     * The port to listen on for SSE or MCP transport.
     */
    port?: number;

    /**
     * The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
     */
    host?: string;

    /**
     * The hosts this server is allowed to serve from. Defaults to the host server is bound to.
     * This is not for CORS, but rather for the DNS rebinding protection.
     */
    allowedHosts?: string[];
  },

  /**
   * List of enabled tool capabilities. Possible values:
   *   - 'core': Core browser automation features.
   *   - 'pdf': PDF generation and manipulation.
   *   - 'vision': Coordinate-based interactions.
   *   - 'devtools': Developer tools features.
   */
  capabilities?: ToolCapability[];

  /**
   * Whether to save the Playwright session into the output directory.
   */
  saveSession?: boolean;

  /**
   * Whether to collect and expose the tools that a page registers through the
   * experimental WebMCP API. Enabled by default.
   */
  webmcp?: boolean;

  /**
   * Reuse the same browser context between all connected HTTP clients.
   */
  sharedBrowserContext?: boolean;

  /**
   * Secrets are used to replace matching plain text in the tool responses to prevent the LLM
   * from accidentally getting sensitive data. It is a convenience and not a security feature,
   * make sure to always examine information coming in and from the tool on the client.
   */
  secrets?: Record;

  /**
   * The directory for automatically named output files, for example a screenshot taken without an
   * explicit file name. Files with an explicit name are resolved against the workspace root instead
   * and are not affected by this option.
   */
  outputDir?: string;

  /**
   * Threshold for evicting old output files, in bytes.
   */
  outputMaxSize?: number;

  console?: {
    /**
     * The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
     */
    level?: 'error' | 'warning' | 'info' | 'debug';
  },

  network?: {
    /**
     * List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
     *
     * Supported formats:
     * - Full origin: `https://example.com:8080` - matches only that origin
     * - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
     */
    allowedOrigins?: string[];

    /**
     * List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
     *
     * Supported formats:
     * - Full origin: `https://example.com:8080` - matches only that origin
     * - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
     */
    blockedOrigins?: string[];
  };

  /**
   * Specify the attribute to use for test ids, defaults to "data-testid".
   */
  testIdAttribute?: string;

  timeouts?: {
    /*
     * Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
     */
    action?: number;

    /*
     * Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
     */
    navigation?: number;

    /**
     * Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
     */
    expect?: number;

    /**
     * How long to wait after each action for triggered work (navigations, requests) to settle before responding. Defaults to 500ms.
     */
    settle?: number;

    /**
     * Close the browser after this many milliseconds without a tool call, and relaunch it on the next one.
     * Defaults to one hour for headless browsers Playwright launched, and to no timeout for headed or attached ones. Pass 0 to disable.
     * The CLI shuts the whole session down instead of relaunching.
     */
    idle?: number;
  };

  /**
   * Whether to send image responses to the client. Can be "allow", "omit", or "only". Defaults to "allow".
   * With "only", a response that carries an image consists of the image parts alone, without the text part.
   */
  imageResponses?: 'allow' | 'omit' | 'only';

  /**
   * How file paths are rendered in tool results. Can be "relative" to the workspace root or "absolute". Defaults to "relative".
   */
  filePaths?: 'relative' | 'absolute';

  snapshot?: {
    /**
     * When taking snapshots for responses, specifies the mode to use.
     */
    mode?: 'full' | 'none';

    /**
     * Whether to include each element's bounding box as [box=x,y,width,height] in snapshots.
     * Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect).
     */
    boxes?: boolean;
  };

  /**
   * allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
   * wandering outside its intended workspace. It is a convenience defense to catch unintended
   * file access, not a secure boundary; a deliberate attempt to reach other directories can be
   * easily worked around, so always rely on client-level permissions for true security.
   */
  allowUnrestrictedFileAccess?: boolean;

  /**
   * Specify the language to use for code generation.
   */
  codegen?: 'typescript' | 'python' | 'java' | 'csharp' | 'none';
}
/**
   * Подключение к запущенному экземпляру браузера (только Edge/Chrome). Если указано, конфигурация
   * `browser` игнорируется.
   * Требуется установленное расширение "Playwright Extension".
   */
  extension?: boolean;

  server?: {
    /**
     * Порт для прослушивания входящих соединений по SSE или MCP-транспорту.
     */
    port?: number;

    /**
     * Хост, к которому привязывается сервер. По умолчанию — localhost. Используйте 0.0.0.0, чтобы привязать сервер ко всем интерфейсам.
     */
    host?: string;

    /**
     * Хосты, с которых данный сервер разрешено обслуживать. По умолчанию — хост, к которому привязан сервер.
     * Это не имеет отношения к CORS, а служит для защиты от DNS rebinding.
     */
    allowedHosts?: string[];
  },

  /**
   * Список включённых возможностей инструментов. Возможные значения:
   *   - 'core': базовые функции автоматизации браузера.
   *   - 'pdf': генерация и обработка PDF.
   *   - 'vision': взаимодействие на основе координат.
   *   - 'devtools': функции инструментов разработчика.
   */
  capabilities?: ToolCapability[];

  /**
   * Сохранять ли сессию Playwright в каталог вывода.
   */
  saveSession?: boolean;

  /**
   * Собирать и предоставлять инструменты, которые страница регистрирует через
   * экспериментальный WebMCP API. Включено по умолчанию.
   */
  webmcp?: boolean;

  /**
   * Использовать один и тот же контекст браузера для всех подключённых HTTP-клиентов.
   */
  sharedBrowserContext?: boolean;

  /**
   * Секреты используются для замены совпадающего обычного текста в ответах инструментов, чтобы LLM
   * случайно не получила конфиденциальные данные. Это удобство, а не мера безопасности:
   * всегда проверяйте информацию, поступающую от инструмента, на стороне клиента.
   */
  secrets?: Record<string, string>;

  /**
   * Каталог для автоматически именуемых выходных файлов, например снимка экрана, сделанного без
   * явного имени файла. Файлы с явно указанным именем разрешаются относительно корня рабочей области
   * и не зависят от этого параметра.
   */
  outputDir?: string;

  /**
   * Порог вытеснения старых выходных файлов, в байтах.
   */
  outputMaxSize?: number;

  console?: {
    /**
     * Уровень консольных сообщений для возврата. Каждый уровень включает сообщения более критичных уровней. По умолчанию — "info".
     */
    level?: 'error' | 'warning' | 'info' | 'debug';
  },

  network?: {
    /**
     * Список origins, к которым браузеру разрешено выполнять запросы. По умолчанию разрешены все. Origins, совпадающие одновременно с `allowedOrigins` и `blockedOrigins`, будут заблокированы.
     *
     * Поддерживаемые форматы:
     * - Полный origin: `https://example.com:8080` — совпадает только с этим origin
     * - Подстановка порта: `http://localhost:*` — совпадает с любым портом на localhost по протоколу http
     */
    allowedOrigins?: string[];

    /**
     * Список origins, к которым браузеру запрещено выполнять запросы. Origins, совпадающие одновременно с `allowedOrigins` и `blockedOrigins`, будут заблокированы.
     *
     * Поддерживаемые форматы:
     * - Полный origin: `https://example.com:8080` — совпадает только с этим origin
     * - Подстановка порта: `http://localhost:*` — совпадает с любым портом на localhost по протоколу http
     */
    blockedOrigins?: string[];
  };

  /**
   * Укажите атрибут, используемый для тестовых идентификаторов; по умолчанию — "data-testid".
   */
  testIdAttribute?: string;

  timeouts?: {
    /*
     * Настраивает таймаут действий по умолчанию: https://playwright.dev/docs/api/class-page#page-set-default-timeout. По умолчанию 5000 мс.
     */
    action?: number;

    /*
     * Настраивает таймаут навигации по умолчанию: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. По умолчанию 60000 мс.
     */
    navigation?: number;

    /**
     * Настраивает таймаут expect по умолчанию: https://playwright.dev/docs/test-timeouts#expect-timeout. По умолчанию 5000 мс.
     */
    expect?: number;

    /**
     * Сколько ждать после каждого действия, чтобы завершились запущенные процессы (навигации, запросы), прежде чем ответить. По умолчанию 500 мс.
     */
    settle?: number;

    /**
     * Закрыть браузер после указанного количества миллисекунд без вызова инструмента и перезапустить его при следующем вызове.
     * По умолчанию — один час для headless-браузеров, запущенных Playwright, и без таймаута для headed или подключённых браузеров. Укажите 0, чтобы отключить.
     * CLI вместо перезапуска завершает всю сессию.
     */
    idle?: number;
  };

  /**
   * Отправлять ли ответы с изображениями клиенту. Возможные значения: "allow", "omit" или "only". По умолчанию — "allow".
   * При значении "only" ответ, содержащий изображение, состоит только из частей с изображением, без текстовой части.
   */
  imageResponses?: 'allow' | 'omit' | 'only';

  /**
   * Как отображаются пути к файлам в результатах инструментов. Возможные значения: "relative" (относительно корня рабочей области) или "absolute". По умолчанию — "relative".
   */
  filePaths?: 'relative' | 'absolute';

  snapshot?: {
    /**
     * При создании снимков для ответов задаёт используемый режим.
     */
    mode?: 'full' | 'none';

    /**
     * Включать ли ограничивающий прямоугольник каждого элемента в снимки в формате [box=x,y,width,height].
     * Координаты задаются относительно области просмотра в CSS-пикселях (Element.getBoundingClientRect).
     */
    boxes?: boolean;
  };

  /**
   * allowUnrestrictedFileAccess служит ограничителем, не позволяющим LLM случайно
   * выйти за пределы предназначенной ей рабочей области. Это защитная мера удобства для перехвата
   * непреднамеренного доступа к файлам, а не защищённая граница: намеренную попытку получить доступ
   * к другим каталогам легко обойти, поэтому для настоящей безопасности всегда полагайтесь
   * на разрешения на уровне клиента.
   */
  allowUnrestrictedFileAccess?: boolean;

  /**
   * Укажите язык для генерации кода.
   */
  codegen?: 'typescript' | 'python' | 'java' | 'csharp' | 'none';
}

Автономный MCP-сервер

Если запускаете браузер с графическим интерфейсом в системе без дисплея или из воркер-процессов IDE,

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

npx @playwright/mcp@latest --port 8931

Затем в конфигурации MCP-клиента укажите в поле url HTTP-эндпоинт:

{
  "mcpServers": {
    "playwright": {
      "url": "http://localhost:8931/mcp"
    }
  }
}

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

Playwright MCP не является границей безопасности. Рекомендации по защите вашего развёртывания приведены в документе MCP Security Best Practices.

Docker

ПРИМЕЧАНИЕ: Реализация для Docker на данный момент поддерживает только headless-режим браузера chromium.

{
  "mcpServers": {
    "playwright": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
    }
  }
}

Если же вы предпочитаете запускать контейнер как долговременно работающий сервис, а не позволять MCP-клиенту порождать его самостоятельно, используйте:

docker run -d -i --rm --init --pull=always \
  --entrypoint node \
  --name playwright \
  -p 8931:8931 \
  mcr.microsoft.com/playwright/mcp \
  /app/cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0

Сервер будет прослушивать порт 8931 на хосте и будет доступен любому MCP-клиенту.

Образ Docker можно собрать и самостоятельно.

docker build -t mcr.microsoft.com/playwright/mcp .

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

import http from 'http';

import { createConnection } from '@playwright/mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';

http.createServer(async (req, res) => {
  // ...

  // Creates a headless Playwright MCP server with SSE transport
  const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
  const transport = new SSEServerTransport('/messages', res);
  await connection.connect(transport);

  // ...
});

Инструменты

Базовая автоматизация

  • browser_click

    • Название: Клик

    • Описание: Выполняет клик на веб-странице

    • Параметры:

    • element (string, optional): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с ним

    • target (string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • doubleClick (boolean, optional): Выполнять двойной клик вместо одинарного

    • button (string, optional): Кнопка мыши для клика, по умолчанию — левая

    • modifiers (array, optional): Клавиши-модификаторы, удерживаемые при нажатии

    • Только чтение: false

  • browser_close

    • Название: Закрыть браузер

    • Описание: Закрывает страницу

    • Параметры: отсутствуют

    • Только чтение: false

  • browser_console_messages

    • Название: Получение сообщений консоли

    • Описание: Возвращает все сообщения консоли

    • Параметры:

    • level (string): Уровень возвращаемых сообщений консоли. Каждый уровень включает сообщения более серьёзных уровней. По умолчанию — "info".

    • all (boolean, optional): Возвращать все сообщения консоли с начала сессии, а не только с момента последней навигации. По умолчанию — false.

    • filename (string, optional): Имя файла для сохранения сообщений консоли. Относительные пути разрешаются относительно корня рабочей области. Если параметр не указан, сообщения возвращаются в виде текста.

    • Только чтение: true

  • browser_drag

    • Название: Перетаскивание мышью

    • Описание: Выполняет перетаскивание (drag and drop) между двумя элементами

    • Параметры:

    • startElement (string, optional): Понятное человеку описание исходного элемента, используемое для получения разрешения на взаимодействие с ним

    • startTarget (string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • endElement (string, optional): Понятное человеку описание целевого элемента, используемое для получения разрешения на взаимодействие с ним

    • endTarget (string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • Только чтение: false

  • browser_drop

    • Название: Перенос файлов или данных на элемент

    • Описание: Переносит файлы или данные с указанным MIME-типом на элемент, как если бы они были перетащены извне страницы. Необходимо указать хотя бы один из параметров — "paths" или "data".

    • Параметры:

    • element (string, optional): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с ним

    • target (string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • paths (array, optional): Абсолютные пути к файлам, которые нужно перенести на элемент.

    • data (object, optional): Переносимые данные в виде отображения MIME-типа в строковое значение (например, {"text/plain": "hello", "text/uri-list": "https://example.com"}).

    • Только чтение: false

  • browser_emulate_media

    • Название: Эмуляция медиа-функций

    • Описание: Эмулирует CSS media features для страницы, например переключение между светлой и тёмной цветовой схемой. Пропущенные параметры остаются без изменений; значение null сбрасывает переопределение.

    • Параметры:

    • colorScheme (optional): Эмулирует медиа-функцию prefers-color-scheme

    • reducedMotion (optional): Эмулирует медиа-функцию prefers-reduced-motion

    • forcedColors (optional): Эмулирует медиа-функцию forced-colors

    • contrast (optional): Эмулирует медиа-функцию prefers-contrast

    • media (optional): Изменяет медиа-тип CSS для страницы

    • Только чтение: false

  • browser_evaluate

    • Название: Выполнение JavaScript

    • Описание: Вычисляет выражение JavaScript на странице или элементе

    • Параметры:

    • element (string, optional): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с ним

    • target (string, optional): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • function (string): () => { /* code / } или (element) => { / code */ }, если передан element

    • filename (string, optional): Имя файла для сохранения результата. Относительные пути разрешаются относительно корня рабочей области. Если параметр не указан, результат возвращается в виде текста.

    • Только чтение: false

  • browser_file_upload

    • Название: Загрузка файлов

    • Описание: Загружает один или несколько файлов

    • Параметры:

    • paths (array, optional): Абсолютные пути к загружаемым файлам. Можно указать как один файл, так и несколько. Если параметр опущен, выбор файла отменяется.

    • Только чтение: false

  • browser_fill_form

    • Название: Заполнение формы

    • Описание: Заполняет несколько полей формы

    • Параметры:

    • fields (array): Поля для заполнения

    • Только чтение: false

  • browser_find

    • Название: Поиск в снимке страницы

    • Описание: Ищет текст или регулярное выражение в снимке доступности (accessibility snapshot) текущей страницы. Возвращает совпавшие узлы снимка с несколькими строками окружающего контекста (наподобие поисковых сниппетов), каждый — по своему пути от корня дерева. Это дешевле, чем захватывать весь снимок целиком, когда нужно лишь найти элемент и его ref.

    • Параметры:

    • text (string, optional): Обычный текст для поиска в снимке страницы (регистронезависимый поиск подстроки). Укажите либо text, либо regex, но не оба одновременно.

    • regex (string, optional): Регулярное выражение для поиска в снимке страницы. По умолчанию поиск учитывает регистр; заключите шаблон в слеши, чтобы добавить флаги, например "/error/i" для регистронезависимого поиска. Укажите либо text, либо regex, но не оба одновременно.

    • Только чтение: true

  • browser_handle_dialog

    • Название: Обработка диалога

    • Описание: Обрабатывает диалоговое окно

    • Параметры:

    • accept (boolean): Принимать ли диалог.

    • promptText (string, optional): Текст для поля ввода в случае диалога типа prompt.

    • Только чтение: false

  • browser_hover

    • Название: Наведение курсора

    • Описание: Наводит курсор на элемент страницы

    • Параметры:

    • element (string, optional): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с ним

    • target (string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • Только чтение: false

  • browser_navigate

    • Название: Переход по URL

    • Описание: Выполняет переход по URL

    • Параметры:

    • url (string): URL для перехода

    • Только чтение: false

  • browser_navigate_back

    • Название: Назад

    • Описание: Возвращается к предыдущей странице в истории

    • Параметры: отсутствуют

    • Только чтение: false

  • browser_network_request

    • Название: Детали сетевого запроса

    • Описание: Возвращает полные сведения (заголовки и тело) одного сетевого запроса или отдельную его часть, если задан part. Используйте номер из browser_network_requests.

    • Параметры:

    • index (integer): Индекс запроса, начиная с 1, как показано в browser_network_requests.

    • part (string, optional): Возвращать только эту часть запроса. Опустите, чтобы получить полные сведения.

    • filename (string, optional): Имя файла для сохранения результата. Относительные пути разрешаются относительно корня рабочей области. Если параметр не указан, вывод возвращается в виде текста.

    • Только чтение: true

  • browser_network_requests

    • Название: Список сетевых запросов

    • Описание: Возвращает нумерованный список сетевых запросов с момента загрузки страницы. Используйте browser_network_request с номером, чтобы получить полные сведения.

    • Параметры:

    • static (boolean): Включать ли успешно загруженные статические ресурсы, такие как изображения, шрифты, скрипты и т. д. По умолчанию — false.

    • filter (string, optional): Возвращать только запросы, URL которых соответствует этому регулярному выражению (например, "/api/.*user").

    • filename (string, optional): Имя файла для сохранения сетевых запросов. Относительные пути разрешаются относительно корня рабочей области. Если параметр не указан, запросы возвращаются в виде текста.

    • Только чтение: true

  • browser_press_key

    • Название: Нажатие клавиши

    • Описание: Нажимает клавишу на клавиатуре

    • Параметры:

    • key (string): Имя нажимаемой клавиши или генерируемый символ, например ArrowLeft или a

    • Только чтение: false

  • browser_resize

    • Название: Изменение размера окна браузера

    • Описание: Изменяет размер окна браузера

    • Параметры:

    • width (number): Ширина окна браузера

    • height (number): Высота окна браузера

    • Только чтение: false

  • browser_run_code_unsafe

    • Название: Запуск кода Playwright (небезопасно)

    • Описание: Запускает фрагмент кода Playwright. Небезопасно: выполняет произвольный JavaScript в процессе сервера Playwright и эквивалентно RCE.

    • Параметры:

    • code (string, optional): Функция на JavaScript, содержащая код Playwright для выполнения. Она вызывается с единственным аргументом page, который можно использовать для любых взаимодействий со страницей. Например: async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }

    • filename (string, optional): Загружает код из указанного файла. Относительные пути разрешаются относительно корня рабочей области. Если указаны и code, и filename, параметр code игнорируется.

  • Только для чтения: false

  • browser_select_option

    • Название: Выбрать опцию

    • Описание: Выбрать опцию в выпадающем списке

    • Параметры:

    • element (string, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом

    • target (string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • values (array): Массив значений для выбора в выпадающем списке. Это может быть одно значение или несколько значений.

    • Только для чтения: false

  • browser_snapshot

    • Название: Снимок страницы

    • Описание: Создаёт снимок доступности текущей страницы; это лучше, чем скриншот

    • Параметры:

    • target (string, необязательно): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • filename (string, необязательно): Сохранить снимок в файл вместо возврата его в ответе. Относительные имена файлов разрешаются относительно корня рабочей области.

    • depth (number, необязательно): Ограничить глубину дерева снимка

    • boxes (boolean, необязательно): Включить ограничивающую рамку каждого элемента в снимок в виде [box=x,y,width,height]. Координаты указаны относительно области просмотра, в CSS-пикселях (Element.getBoundingClientRect)

    • Только для чтения: true

  • browser_take_screenshot

    • Название: Сделать скриншот

    • Описание: Сделать скриншот текущей страницы. Нельзя выполнять действия на основе скриншота; для действий используйте browser_snapshot.

    • Параметры:

    • element (string, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом

    • target (string, необязательно): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • type (string, необязательно): Формат изображения для скриншота. Если не задан, определяется по расширению имени файла, иначе png.

    • filename (string, необязательно): Имя файла для сохранения скриншота. Относительные имена файлов разрешаются относительно корня рабочей области. Если не указано, скриншот сохраняется в выходной каталог как page-{timestamp}.{png|jpeg|webp}.

    • fullPage (boolean, необязательно): Если true, делает скриншот всей прокручиваемой страницы вместо текущей видимой области просмотра. Нельзя использовать со скриншотами элементов.

    • scale (string): Масштаб разрешения изображения. "css" создаёт скриншот размером в CSS-пикселях (меньше, согласованно на разных устройствах). "device" создаёт скриншот высокого разрешения с использованием пикселей устройства (больше, учитывает коэффициент пикселей устройства). По умолчанию css.

    • Только для чтения: true

  • browser_type

    • Название: Ввести текст

    • Описание: Ввести текст в редактируемый элемент

    • Параметры:

    • element (string, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом

    • target (string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • text (string): Текст для ввода в элемент

    • submit (boolean, необязательно): Отправлять ли введённый текст (нажать Enter после)

    • slowly (boolean, необязательно): Вводить ли по одному символу за раз. Полезно для запуска обработчиков клавиш на странице. По умолчанию весь текст вводится сразу.

    • Только для чтения: false

  • browser_wait_for

    • Название: Ожидание

    • Описание: Ожидать появления или исчезновения текста либо истечения заданного времени

    • Параметры:

    • time (number, необязательно): Время ожидания в секундах

    • text (string, необязательно): Текст, появления которого нужно дождаться

    • textGone (string, необязательно): Текст, исчезновения которого нужно дождаться

    • Только для чтения: false

Управление вкладками

  • browser_tabs

    • Название: Управление вкладками

    • Описание: Создать, закрыть, выбрать вкладку браузера или вывести их список.

    • Параметры:

    • action (string): Выполняемая операция

    • index (number, необязательно): Индекс вкладки, используется для закрытия/выбора. Если не указан для закрытия, закрывается текущая вкладка.

    • url (string, необязательно): URL для перехода в новой вкладке, используется для new.

    • Только для чтения: false

Установка браузера

Конфигурация (включается через --caps=config)

  • browser_get_config

    • Название: Получить конфигурацию

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

    • Параметры: Нет

    • Только для чтения: true

Сеть (включается через --caps=network)

  • browser_network_state_set

    • Название: Установить состояние сети

    • Описание: Устанавливает сетевое состояние браузера в online или offline. В режиме offline все сетевые запросы будут завершаться ошибкой.

    • Параметры:

    • state (string): Установите "offline", чтобы имитировать автономный режим, или "online", чтобы восстановить сетевое подключение

    • Только для чтения: false

  • browser_route

    • Название: Имитировать сетевые запросы

    • Описание: Настроить маршрут для имитации сетевых запросов, соответствующих шаблону URL

    • Параметры:

    • pattern (string): Шаблон URL для сопоставления (например, "/api/users", "/*.{png,jpg}")

    • status (number, необязательно): HTTP-код состояния для возврата (по умолчанию: 200)

    • body (string, необязательно): Тело ответа (текст или строка JSON)

    • contentType (string, необязательно): Заголовок Content-Type (например, "application/json", "text/html")

    • headers (array, необязательно): Заголовки для добавления в формате "Name: Value"

    • removeHeaders (string, необязательно): Разделённый запятыми список имён заголовков для удаления из запроса

    • Только для чтения: false

  • browser_route_list

    • Название: Список сетевых маршрутов

    • Описание: Показать все активные сетевые маршруты

    • Параметры: Нет

    • Только для чтения: true

  • browser_unroute

    • Название: Удалить сетевые маршруты

    • Описание: Удалить сетевые маршруты, соответствующие шаблону (или все маршруты, если шаблон не указан)

    • Параметры:

    • pattern (string, необязательно): Шаблон URL для удаления маршрута (не указывайте, чтобы удалить все маршруты)

    • Только для чтения: false

Хранилище (включается через --caps=storage)

  • browser_cookie_clear

    • Название: Очистить cookies

    • Описание: Очистить все cookies

    • Параметры: Нет

    • Только для чтения: false

  • browser_cookie_delete

    • Название: Удалить cookie

    • Описание: Удалить определённый cookie

    • Параметры:

    • name (string): Имя cookie для удаления

    • Только для чтения: false

  • browser_cookie_get

    • Название: Получить cookie

    • Описание: Получить определённый cookie по имени

    • Параметры:

    • name (string): Имя cookie для получения

    • Только для чтения: true

  • browser_cookie_list

    • Название: Список cookies

    • Описание: Показать все cookies (при необходимости с фильтром по домену/пути)

    • Параметры:

    • domain (string, необязательно): Фильтровать cookies по домену

    • path (string, необязательно): Фильтровать cookies по пути

    • Только для чтения: true

  • browser_cookie_set

    • Название: Установить cookie

    • Описание: Установить cookie с необязательными флагами (domain, path, expires, httpOnly, secure, sameSite)

    • Параметры:

    • name (string): Имя cookie

    • value (string): Значение cookie

    • domain (string, необязательно): Домен cookie

    • path (string, необязательно): Путь cookie

    • expires (number, необязательно): Срок действия cookie в виде Unix timestamp

    • httpOnly (boolean, необязательно): Является ли cookie HTTP-only

    • secure (boolean, необязательно): Является ли cookie secure

    • sameSite (string, необязательно): Атрибут SameSite cookie

    • Только для чтения: false

  • browser_localstorage_clear

    • Название: Очистить localStorage

    • Описание: Очистить весь localStorage

    • Параметры: Нет

    • Только для чтения: false

  • browser_localstorage_delete

    • Название: Удалить элемент localStorage

    • Описание: Удалить элемент localStorage

    • Параметры:

    • key (string): Ключ для удаления

    • Только для чтения: false

  • browser_localstorage_get

    • Название: Получить элемент localStorage

    • Описание: Получить элемент localStorage по ключу

    • Параметры:

    • key (string): Ключ для получения

    • Только для чтения: true

  • browser_localstorage_list

    • Название: Список localStorage

    • Описание: Показать все пары ключ-значение localStorage

    • Параметры: Нет

    • Только для чтения: true

  • browser_localstorage_set

    • Название: Установить элемент localStorage

    • Описание: Установить элемент localStorage

    • Параметры:

    • key (string): Ключ для установки

    • value (string): Значение для установки

    • Только для чтения: false

  • browser_sessionstorage_clear

    • Название: Очистить sessionStorage

    • Описание: Очистить весь sessionStorage

    • Параметры: Нет

    • Только для чтения: false

  • browser_sessionstorage_delete

    • Название: Удалить элемент sessionStorage

    • Описание: Удалить элемент sessionStorage

    • Параметры:

    • key (string): Ключ для удаления

    • Только для чтения: false

  • browser_sessionstorage_get

    • Название: Получить элемент sessionStorage

    • Описание: Получить элемент sessionStorage по ключу

    • Параметры:

    • key (string): Ключ для получения

    • Только для чтения: true

  • browser_sessionstorage_list

    • Название: Список sessionStorage

    • Описание: Показать все пары ключ-значение sessionStorage

    • Параметры: Нет

    • Только для чтения: true

  • browser_sessionstorage_set

    • Название: Установить элемент sessionStorage

    • Описание: Установить элемент sessionStorage

    • Параметры:

  • key (string): ключ, который нужно установить

    • value (string): значение, которое нужно установить

    • Только для чтения: false

  • browser_set_storage_state

    • Название: Восстановить состояние хранилища

    • Описание: Восстанавливает состояние хранилища (cookies, local storage) из файла. Перед восстановлением удаляет существующие cookies и local storage.

    • Параметры:

    • filename (string): путь к файлу с состоянием хранилища. Относительные пути разрешаются относительно корня рабочей области.

    • Только для чтения: false

  • browser_storage_state

    • Название: Сохранить состояние хранилища

    • Описание: Сохраняет состояние хранилища (cookies, local storage) в файл для последующего повторного использования

    • Параметры:

    • filename (string, optional): имя файла для сохранения состояния хранилища. Относительные пути разрешаются относительно корня рабочей области. Если не указано, состояние хранилища сохраняется в выходной каталог как storage-state-{timestamp}.json.

    • Только для чтения: true

DevTools (включается опционально через --caps=devtools)

  • browser_annotate

    • Название: Аннотировать текущую страницу

    • Описание: Открывает Playwright Dashboard в режиме аннотирования для текущей страницы и ожидает, пока пользователь нанесёт аннотации. Возвращает аннотированный скриншот, ARIA-снимок и список аннотаций.

    • Параметры: отсутствуют

    • Только для чтения: true

  • browser_hide_highlight

    • Название: Скрыть подсветку элемента

    • Описание: Удаляет оверлей подсветки, ранее добавленный для элемента.

    • Параметры:

    • element (string, optional): человекочитаемое описание элемента, использованное при добавлении подсветки; должно совпадать со значением, переданным в browser_highlight.

    • target (string, optional): точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • Только для чтения: true

  • browser_highlight

    • Название: Подсветить элемент

    • Описание: Показывает постоянный оверлей подсветки вокруг элемента на странице.

    • Параметры:

    • element (string, optional): человекочитаемое описание элемента, используемое для получения разрешения на взаимодействие с элементом

    • target (string): точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • style (string, optional): дополнительный инлайн-CSS, применяемый к оверлею подсветки, например "outline: 2px dashed red".

    • Только для чтения: true

  • browser_resume

    • Название: Возобновить приостановленное выполнение скрипта

    • Описание: Возобновляет выполнение скрипта после паузы. При вызове со значением step, равным true, выполнение снова приостановится перед следующим действием.

    • Параметры:

    • step (boolean, optional): при значении true выполнение снова приостановится перед следующим действием, что позволяет отлаживать сценарий пошагово.

    • location (string, optional): приостанавливает выполнение на указанной позиции (файл:строка), например "example.spec.ts:42".

    • Только для чтения: false

  • browser_start_recording

    • Название: Начать запись действий пользователя

    • Описание: Начинает записывать действия, которые пользователь выполняет в браузере, в виде кода Playwright. Используйте этот инструмент, когда пользователь хочет вручную продемонстрировать сценарий. Когда пользователь сообщит о завершении, вызовите browser_stop_recording, чтобы получить записанные действия.

    • Параметры: отсутствуют

    • Только для чтения: true

  • browser_start_tracing

    • Название: Начать трассировку

    • Описание: Запускает запись трассировки

    • Параметры: отсутствуют

    • Только для чтения: true

  • browser_start_video

    • Название: Начать запись видео

    • Описание: Запускает видеозапись

    • Параметры:

    • filename (string, optional): имя файла для сохранения видео. Относительные пути разрешаются относительно корня рабочей области. Если не указано, видео сохраняется в выходной каталог как video-{timestamp}.webm.

    • size (object, optional): размер видео

    • fps (number, optional): частота кадров видео в кадрах в секунду, по умолчанию 25

    • cursor (boolean, optional): отрисовывает анимированный курсор мыши, перемещающийся к каждой точке действия. Между действиями добавляется пауза в 800 мс, чтобы курсор успевал переместиться.

    • Только для чтения: true

  • browser_stop_recording

    • Название: Остановить запись действий пользователя

    • Описание: Останавливает запись, запущенную через browser_start_recording, и возвращает записанные действия в виде кода Playwright.

    • Параметры: отсутствуют

    • Только для чтения: true

  • browser_stop_tracing

    • Название: Остановить трассировку

    • Описание: Останавливает запись трассировки

    • Параметры: отсутствуют

    • Только для чтения: true

  • browser_stop_video

    • Название: Остановить запись видео

    • Описание: Останавливает видеозапись

    • Параметры: отсутствуют

    • Только для чтения: true

  • browser_video_chapter

    • Название: Глава видео

    • Описание: Добавляет маркер главы в видеозапись. Показывает полноэкранную карточку главы с размытым фоном.

    • Параметры:

    • title (string): название главы

    • description (string, optional): описание главы

    • duration (number, optional): длительность показа карточки главы в миллисекундах

    • Только для чтения: true

  • browser_video_hide_actions

    • Название: Скрыть оверлеи действий

    • Описание: Прекращает аннотирование действий, выполняемых на странице.

    • Параметры: отсутствуют

    • Только для чтения: true

  • browser_video_show_actions

    • Название: Показать оверлеи действий

    • Описание: Аннотирует последующие действия на странице выноской с названием действия; при наличии стилей также отмечает точку действия и подсвечивает целевой элемент. Полезно при видеозаписи или скринкастинге.

    • Параметры:

    • duration (number, optional): как долго каждая аннотация действия остаётся на экране, в миллисекундах. По умолчанию 500.

    • position (string, optional): где размещать название действия относительно страницы. По умолчанию — сверху справа.

    • cursor (string, optional): оформление курсора для действий указателя. "pointer" (по умолчанию) анимирует курсор мыши от предыдущей точки действия к следующей; "none" отключает оформление курсора.

    • style (object, optional): стили оформления действий.

    • Только для чтения: true

Управление по координатам (включается опционально через --caps=vision)

  • browser_mouse_click_xy

    • Название: Клик

    • Описание: Нажимает кнопку мыши в заданной позиции

    • Параметры:

    • x (number): координата X

    • y (number): координата Y

    • button (string, optional): кнопка, которую нужно нажать, по умолчанию — левая

    • clickCount (number, optional): количество кликов, по умолчанию 1

    • delay (number, optional): время ожидания между нажатием и отпусканием кнопки мыши в миллисекундах, по умолчанию 0

    • Только для чтения: false

  • browser_mouse_down

    • Название: Зажать кнопку мыши

    • Описание: Зажимает кнопку мыши

    • Параметры:

    • button (string, optional): кнопка, которую нужно зажать, по умолчанию — левая

    • Только для чтения: false

  • browser_mouse_drag_xy

    • Название: Перетащить мышью

    • Описание: Зажимает левую кнопку мыши и перетаскивает её в заданную позицию

    • Параметры:

    • startX (number): начальная координата X

    • startY (number): начальная координата Y

    • endX (number): конечная координата X

    • endY (number): конечная координата Y

    • Только для чтения: false

  • browser_mouse_move_xy

    • Название: Переместить мышь

    • Описание: Перемещает мышь в заданную позицию

    • Параметры:

    • x (number): координата X

    • y (number): координата Y

    • Только для чтения: false

  • browser_mouse_up

    • Название: Отпустить кнопку мыши

    • Описание: Отпускает кнопку мыши

    • Параметры:

    • button (string, optional): кнопка, которую нужно отпустить, по умолчанию — левая

    • Только для чтения: false

  • browser_mouse_wheel

    • Название: Прокрутить колесо мыши

    • Описание: Прокручивает колесо мыши

    • Параметры:

    • deltaX (number): смещение по X

    • deltaY (number): смещение по Y

    • Только для чтения: false

Генерация PDF (включается опционально через --caps=pdf)

  • browser_pdf_save

    • Название: Сохранить как PDF

    • Описание: Сохраняет страницу в PDF

    • Параметры:

    • filename (string, optional): имя файла для сохранения PDF. Относительные пути разрешаются относительно корня рабочей области. Если не указано, PDF сохраняется в выходной каталог как page-{timestamp}.pdf.

    • Только для чтения: true

Тестовые проверки (включается опционально через --caps=testing)

  • browser_generate_locator

    • Название: Создать локатор для элемента

    • Описание: Генерирует локатор для указанного элемента, чтобы использовать его в тестах

    • Параметры:

    • element (string, optional): человекочитаемое описание элемента, используемое для получения разрешения на взаимодействие с элементом

    • target (string): точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента

    • Только для чтения: true

  • browser_verify_element_visible

    • Название: Проверить видимость элемента

    • Описание: Проверяет, что элемент виден на странице

    • Параметры:

    • role (string): роль элемента. Её можно найти в снимке страницы следующим образом: - {ROLE} "Accessible Name":

    • accessibleName (string): доступное имя элемента. Его можно найти в снимке страницы следующим образом: - role "{ACCESSIBLE_NAME}"

    • Только для чтения: false

  • browser_verify_list_visible

    • Название: Проверить видимость списка

    • Описание: Проверяет, что список виден на странице

    • Параметры:

    • element (string): человекочитаемое описание списка

  • target (string): Точная ссылка на целевой элемент, указывающая на список

    • items (array): Элементы для проверки

    • Только чтение: false

  • browser_verify_text_visible

    • Название: Проверка видимости текста

    • Описание: Проверяет, что текст виден на странице. По возможности предпочитайте browser_verify_element_visible.

    • Параметры:

    • text (string): Текст для проверки. Его можно найти в снимке страницы так: - role "Accessible Name": {TEXT} или так: - text: {TEXT}

    • Только чтение: false

  • browser_verify_value

    • Название: Проверка значения

    • Описание: Проверяет значение элемента

    • Параметры:

    • type (string): Тип элемента

    • element (string): Понятное человеку описание элемента

    • target (string): Точная ссылка на целевой элемент из снимка страницы

    • value (string): Значение для проверки. Для чекбокса используйте "true" или "false".

    • Только чтение: false