Playwright MCP Server

Official
by microsoft
Apache 2.0
56,029
9,504
  • Linux
  • Apple

Integrations

  • Provides browser automation capabilities on Linux systems without a display by running Playwright in a client-server manner, allowing for headed browser operations in display-less environments.

Драматург MCP

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

Основные характеристики

  • Быстрый и легкий : использует дерево доступности Playwright, а не пиксельный ввод.
  • Совместимость с LLM : не требуются модели машинного зрения, работает исключительно со структурированными данными.
  • Детерминированное применение инструмента : позволяет избежать неоднозначности, характерной для подходов, основанных на снимках экрана.

Варианты использования

  • Веб-навигация и заполнение форм
  • Извлечение данных из структурированного контента
  • Автоматизированное тестирование под руководством LLM
  • Универсальное взаимодействие с браузером для агентов

Пример конфигурации

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

Оглавление

Установка в VS Code

Вы можете установить сервер 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.

Командная строка

Сервер Playwright MCP поддерживает следующие параметры командной строки:

  • --browser <browser> : Браузер или канал Chrome для использования. Возможные значения:
    • chrome , firefox , webkit , msedge
    • Каналы Chrome: chrome-beta , chrome-canary , chrome-dev
    • Пограничные каналы: msedge-beta , msedge-canary , msedge-dev
    • По умолчанию: chrome
  • --caps <caps> : Список возможностей, которые нужно включить, разделенный запятыми, возможные значения: вкладки, pdf, история, ожидание, файлы, установка. По умолчанию — все.
  • --cdp-endpoint <endpoint> : конечная точка CDP для подключения
  • --executable-path <path> : Путь к исполняемому файлу браузера
  • --headless : запустить браузер в режиме headless (по умолчанию headless)
  • --device : Эмулировать мобильное устройство
  • --user-data-dir <path> : Путь к каталогу пользовательских данных
  • --port <port> : Порт для прослушивания транспорта SSE
  • --host <host> : Хост для привязки сервера. По умолчанию localhost. Используйте 0.0.0.0 для привязки ко всем интерфейсам.
  • --allowed-origins <origins> : Список источников, разделенных точкой с запятой, которые браузер может запросить. По умолчанию разрешено все. Источники, соответствующие как --allowed-origins , так и --blocked-origins будут заблокированы.
  • --blocked-origins <origins> : Список источников, разделенных точкой с запятой, для блокировки браузера при запросе. Источники, соответствующие как --allowed-origins , так и --blocked-origins будут заблокированы.
  • --vision : Запустить сервер, использующий снимки экрана (по умолчанию используются снимки экрана Aria)
  • --output-dir : Каталог для выходных файлов
  • --config <path> : Путь к файлу конфигурации

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

Playwright MCP запустит браузер с новым профилем, расположенным по адресу

- `%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-profile` on Windows - `~/Library/Caches/ms-playwright/mcp-{channel}-profile` on macOS - `~/.cache/ms-playwright/mcp-{channel}-profile` on Linux

Вся информация о входе в систему будет храниться в этом профиле. Вы можете удалить ее между сеансами, если хотите очистить состояние «офлайн».

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

Сервер Playwright MCP можно настроить с помощью файла конфигурации JSON. Вот полный формат конфигурации:

{ // Browser configuration browser?: { // Browser type to use (chromium, firefox, or webkit) browserName?: 'chromium' | 'firefox' | 'webkit'; // Path to user data directory for browser profile persistence userDataDir?: string; // Browser launch options (see Playwright docs) // @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch launchOptions?: { channel?: string; // Browser channel (e.g. 'chrome') headless?: boolean; // Run in headless mode executablePath?: string; // Path to browser executable // ... other Playwright launch options }; // Browser context options // @see https://playwright.dev/docs/api/class-browser#browser-new-context contextOptions?: { viewport?: { width: number, height: number }; // ... other Playwright context options }; // CDP endpoint for connecting to existing browser cdpEndpoint?: string; // Remote Playwright server endpoint remoteEndpoint?: string; }, // Server configuration server?: { port?: number; // Port to listen on host?: string; // Host to bind to (default: localhost) }, // List of enabled capabilities capabilities?: Array< 'core' | // Core browser automation 'tabs' | // Tab management 'pdf' | // PDF generation 'history' | // Browser history 'wait' | // Wait utilities 'files' | // File handling 'install' | // Browser installation 'testing' // Testing >; // Enable vision mode (screenshots instead of accessibility snapshots) vision?: boolean; // Directory for output files outputDir?: string; // Network configuration network?: { // List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked. allowedOrigins?: string[]; // List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked. blockedOrigins?: string[]; }; // Tool-specific configurations tools?: { browser_take_screenshot?: { // Disable base64-encoded image responses omitBase64?: boolean; } } }

Вы можете указать файл конфигурации с помощью параметра командной строки --config :

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

Работает на Linux

При запуске браузера Headed в системе без дисплея или из рабочих процессов IDE запустите сервер MCP из среды с DISPLAY и передайте флаг --port , чтобы включить транспорт SSE.

npx @playwright/mcp@latest --port 8931

Затем в конфигурации клиента MCP задайте url -адрес конечной точки SSE:

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

Докер

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

{ "mcpServers": { "playwright": { "command": "docker", "args": ["run", "-i", "--rm", "--init", "mcp/playwright"] } } }

Вы можете создать образ Docker самостоятельно.

docker build -t mcp/playwright .

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

import http from 'http'; import { createServer } 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 mcpServer = await createServer({ headless: true }); const transport = new SSEServerTransport('/messages', res); await mcpServer.connect(transport); // ... });

Режимы работы инструмента

Инструменты доступны в двух режимах:

  1. Режим моментальных снимков (по умолчанию): использует моментальные снимки доступности для повышения производительности и надежности.
  2. Режим Vision : использует снимки экрана для визуального взаимодействия.

Чтобы использовать Vision Mode, добавьте флаг --vision при запуске сервера:

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

Режим Vision лучше всего работает с компьютерными моделями, которые способны взаимодействовать с элементами, используя координатное пространство XY, судя по предоставленному снимку экрана.

Взаимодействия на основе моментальных снимков

  • снимок_браузера
    • Название: Снимок страницы
    • Описание: Сделать снимок доступности текущей страницы, это лучше, чем снимок экрана
    • Параметры: Нет
    • Только для чтения: правда
  • браузер_щелчок
    • Название: Щелчок
    • Описание: Выполнить щелчок на веб-странице.
    • Параметры:
      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • ref (string): Точная ссылка на целевой элемент из снимка страницы
    • Только для чтения: ложно
  • браузер_перетаскивание
    • Название: Перетаскивание мышью
    • Описание: Выполнение перетаскивания между двумя элементами.
    • Параметры:
      • startElement (строка): понятное человеку описание исходного элемента, используемое для получения разрешения на взаимодействие с элементом.
      • startRef (string): Точная ссылка на исходный элемент из снимка страницы
      • endElement (строка): понятное человеку описание целевого элемента, используемое для получения разрешения на взаимодействие с элементом.
      • endRef (строка): точная ссылка на целевой элемент из снимка страницы
    • Только для чтения: ложно
  • браузер_hover
    • Название: Наведение мыши
    • Описание: Наведите курсор на элемент на странице.
    • Параметры:
      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • ref (string): Точная ссылка на целевой элемент из снимка страницы
    • Только для чтения: правда
  • тип_браузера
    • Название: Введите текст
    • Описание: Введите текст в редактируемый элемент.
    • Параметры:
      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • ref (string): Точная ссылка на целевой элемент из снимка страницы
      • text (строка): Текст для ввода в элемент.
      • submit (логическое значение, необязательно): следует ли отправить введенный текст (нажмите Enter после этого)
      • slowly (boolean, необязательно): Вводить ли по одному символу за раз. Полезно для запуска обработчиков клавиш на странице. По умолчанию весь текст заполняется сразу.
    • Только для чтения: ложно
  • выбор_опции_браузера
    • Название: Выберите вариант
    • Описание: Выберите вариант в раскрывающемся списке.
    • Параметры:
      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • ref (string): Точная ссылка на целевой элемент из снимка страницы
      • values (массив): Массив значений для выбора в раскрывающемся списке. Это может быть одно значение или несколько значений.
    • Только для чтения: ложно
  • браузер_сделать_скриншот
    • Название: Сделать снимок экрана
    • Описание: Сделать снимок экрана текущей страницы. Вы не можете выполнять действия на основе снимка экрана, используйте для действий browser_snapshot.
    • Параметры:
      • raw (boolean, необязательно): Возвращать ли без сжатия (в формате PNG). Значение по умолчанию — false, что возвращает изображение JPEG.
      • element (строка, необязательно): понятное человеку описание элемента, используемое для получения разрешения на снимок экрана элемента. Если не указано, снимок экрана будет сделан из области просмотра. Если элемент указан, необходимо указать также ссылку.
      • ref (строка, необязательно): Точная ссылка на целевой элемент из снимка страницы. Если не указано, снимок экрана будет сделан из области просмотра. Если указано ref, элемент также должен быть указан.
    • Только для чтения: правда

Взаимодействия на основе видения

  • захват_экрана_браузера
    • Название: Сделать снимок экрана
    • Описание: Сделать снимок экрана текущей страницы.
    • Параметры: Нет
    • Только для чтения: правда
  • экран_браузера_перемещение_мыши
    • Название: Перемещение мыши
    • Описание: Переместить мышь в указанную позицию.
    • Параметры:
      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • x (число): координата X
      • y (число): координата Y
    • Только для чтения: правда
  • щелчок_по_экрану_браузера
    • Название: Щелчок
    • Описание: Щелкните левой кнопкой мыши.
    • Параметры:
      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • x (число): координата X
      • y (число): координата Y
    • Только для чтения: ложно
  • перетаскивание_экрана_браузера
    • Название: Перетаскивание мышью
    • Описание: Перетащите левой кнопкой мыши
    • Параметры:
      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • startX (число): Начальная координата X
      • startY (число): начальная координата Y
      • endX (число): Конечная координата X
      • endY (число): Конечная координата Y
    • Только для чтения: ложно
  • тип_экрана_браузера
    • Название: Введите текст
    • Описание: Введите текст
    • Параметры:
      • text (строка): Текст для ввода в элемент.
      • submit (логическое значение, необязательно): следует ли отправить введенный текст (нажмите Enter после этого)
    • Только для чтения: ложно

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

  • список_вкладок_браузера
    • Название: Список вкладок
    • Описание: Список вкладок браузера
    • Параметры: Нет
    • Только для чтения: правда
  • браузер_вкладка_новая
    • Заголовок: Открыть новую вкладку
    • Описание: Открыть новую вкладку
    • Параметры:
      • url (строка, необязательно): URL для перехода на новую вкладку. Если не указано, новая вкладка будет пустой.
    • Только для чтения: правда
  • выбор_вкладки_браузера
    • Название: Выберите вкладку
    • Описание: Выберите вкладку по индексу
    • Параметры:
      • index (номер): индекс вкладки для выбора.
    • Только для чтения: правда
  • закрыть_вкладку_браузера
    • Заголовок: Закрыть вкладку
    • Описание: Закрыть вкладку
    • Параметры:
      • index (число, необязательно): индекс вкладки для закрытия. Закрывает текущую вкладку, если не указано.
    • Только для чтения: ложно
  • браузер_навигация
    • Название: Перейти к URL-адресу
    • Описание: Перейдите по URL-адресу
    • Параметры:
      • url (строка): URL-адрес для перехода
    • Только для чтения: ложно
  • браузер_навигация_назад
    • Название: Вернуться назад
    • Описание: Вернуться на предыдущую страницу
    • Параметры: Нет
    • Только для чтения: правда
  • браузер_навигация_вперед
    • Название: Идти вперед
    • Описание: Перейти на следующую страницу
    • Параметры: Нет
    • Только для чтения: правда

Клавиатура

  • браузер_нажмите_клавишу
    • Название: Нажмите клавишу
    • Описание: Нажмите клавишу на клавиатуре.
    • Параметры:
      • key (строка): название клавиши, которую нужно нажать, или символ, который нужно сгенерировать, например, ArrowLeft``a
    • Только для чтения: ложно

Консоль

  • сообщения_консоли_браузера
    • Название: Получить консольные сообщения
    • Описание: Возвращает все сообщения консоли.
    • Параметры: Нет
    • Только для чтения: правда

Файлы и медиа

  • загрузка_файла_браузера
    • Название: Загрузить файлы
    • Описание: Загрузите один или несколько файлов.
    • Параметры:
      • paths (массив): Абсолютные пути к файлам для загрузки. Может быть одним файлом или несколькими файлами.
    • Только для чтения: ложно
  • браузер_pdf_сохранить
    • Название: Сохранить как PDF
    • Описание: Сохранить страницу как PDF
    • Параметры: Нет
    • Только для чтения: правда

Коммунальные услуги

  • браузер_закрыть
    • Заголовок: Закрыть браузер
    • Описание: Закрыть страницу
    • Параметры: Нет
    • Только для чтения: правда
  • браузер_ожидание
    • Название: Подождите
    • Описание: Ожидание в течение указанного времени в секундах.
    • Параметры:
      • time (число): время ожидания в секундах
    • Только для чтения: правда
  • изменение_размера_браузера
    • Название: Изменение размера окна браузера
    • Описание: Изменение размера окна браузера.
    • Параметры:
      • width (число): Ширина окна браузера.
      • height (число): Высота окна браузера.
    • Только для чтения: правда
  • браузер_установить
    • Заголовок: Установка браузера, указанного в конфиге
    • Описание: Установите браузер, указанный в конфигурации. Вызовите его, если вы получили ошибку о том, что браузер не установлен.
    • Параметры: Нет
    • Только для чтения: ложно
  • диалог_обработки_браузера
    • Название: Обработка диалога
    • Описание: Обработка диалога.
    • Параметры:
      • accept (логическое значение): принимать ли диалог.
      • promptText (строка, необязательно): Текст подсказки в случае диалогового окна подсказки.
    • Только для чтения: ложно
  • запросы_браузера_сети
    • Название: Список сетевых запросов
    • Описание: Возвращает все сетевые запросы с момента загрузки страницы.
    • Параметры: Нет
    • Только для чтения: правда

Тестирование

  • браузер_генерировать_драматург_тест
    • Название: Сгенерируйте тест драматурга
    • Описание: Создать тест драматурга для заданного сценария.
    • Параметры:
      • name (строка): Название теста
      • description (строка): Описание теста
      • steps (массив): шаги теста
    • Только для чтения: правда

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Сервер протокола контекста модели, который позволяет магистрам уровня магистра взаимодействовать с веб-страницами посредством структурированных снимков доступности без необходимости использования моделей зрения или снимков экрана.

  1. Основные характеристики
    1. Варианты использования
      1. Пример конфигурации
        1. Оглавление
          1. Установка в VS Code
            1. Командная строка
              1. Профиль пользователя
                1. Файл конфигурации
                  1. Работает на Linux
                    1. Докер
                      1. Программное использование
                        1. Режимы работы инструмента
                          1. Взаимодействия на основе моментальных снимков
                            1. Взаимодействия на основе видения
                              1. Управление вкладками
                                1. Навигация
                                  1. Клавиатура
                                    1. Консоль
                                      1. Файлы и медиа
                                        1. Коммунальные услуги
                                          1. Тестирование

                                            Related MCP Servers

                                            • -
                                              security
                                              A
                                              license
                                              -
                                              quality
                                              A Model Context Protocol server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environment.
                                              Last updated -
                                              3
                                              Python
                                              Apache 2.0
                                            • -
                                              security
                                              A
                                              license
                                              -
                                              quality
                                              A Model Context Protocol server that allows LLMs to interact with web content through standardized tools, currently supporting web scraping functionality.
                                              Last updated -
                                              Python
                                              MIT License
                                              • Linux
                                              • Apple
                                            • -
                                              security
                                              F
                                              license
                                              -
                                              quality
                                              A Model Context Protocol server that enables LLMs to fetch and process web content in multiple formats (HTML, JSON, Markdown, text) with automatic format detection.
                                              Last updated -
                                              TypeScript
                                              • Apple
                                            • A
                                              security
                                              A
                                              license
                                              A
                                              quality
                                              A Model Context Protocol server that enables LLMs to interact with web pages, take screenshots, generate test code, scrape web pages, and execute JavaScript in a real browser environment.
                                              Last updated -
                                              29
                                              10
                                              1
                                              TypeScript
                                              MIT License

                                            View all related MCP servers

                                            ID: 92mrqijm10