Skip to main content
Glama

Playwright MCP Server

Official
by microsoft

Драматург MCP

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

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

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

Требования

  • Node.js 18 или новее
  • VS Code, Cursor, Windsurf, Claude Desktop или любой другой MCP-клиент

Начиная

Сначала установите сервер Playwright MCP с вашим клиентом. Типичная конфигурация выглядит так:

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

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

Перейдите в Cursor Settings -> MCP -> Add new MCP Server . Назовите по своему вкусу, используйте тип command с командой npx @playwright/mcp . Вы также можете проверить конфигурацию или добавить аргументы, подобные команде, нажав Edit .

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

Следуйте документации Windsuff MCP. Используйте следующую конфигурацию:

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

Следуя руководству по установке MCP, используйте следующую конфигурацию:

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

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

Сервер Playwright MCP поддерживает следующие аргументы. Они могут быть предоставлены в конфигурации JSON выше, как часть списка "args" :

> npx @playwright/mcp@latest --help --allowed-origins <origins> semicolon-separated list of origins to allow the browser to request. Default is to allow all. --blocked-origins <origins> semicolon-separated list of origins to block the browser from requesting. Blocklist is evaluated before allowlist. If used without the allowlist, requests not matching the blocklist are still allowed. --block-service-workers block service workers --browser <browser> browser or chrome channel to use, possible values: chrome, firefox, webkit, msedge. --caps <caps> comma-separated list of capabilities to enable, possible values: tabs, pdf, history, wait, files, install. Default is all. --cdp-endpoint <endpoint> CDP endpoint to connect to. --config <path> path to the configuration file. --device <device> device to emulate, for example: "iPhone 15" --executable-path <path> path to the browser executable. --headless run browser in headless mode, headed by default --host <host> host to bind server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces. --ignore-https-errors ignore https errors --isolated keep the browser profile in memory, do not save it to disk. --no-image-responses do not send image responses to the client. --no-sandbox disable the sandbox for all process types that are normally sandboxed. --output-dir <path> path to the directory for output files. --port <port> port to listen on for SSE transport. --proxy-bypass <bypass> comma-separated domains to bypass proxy, for example ".com,chromium.org,.domain.com" --proxy-server <proxy> specify proxy server, for example "http://myproxy:3128" or "socks5://myproxy:8080" --save-trace Whether to save the Playwright Trace of the session into the output directory. --storage-state <path> path to the storage state file for isolated sessions. --user-agent <ua string> specify user agent string --user-data-dir <path> path to the user data directory. If not specified, a temporary directory will be created. --viewport-size <size> specify browser viewport size in pixels, for example "1280, 720" --vision Run server that uses screenshots (Aria snapshots are used by default)

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

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

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

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

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

Изолированный

В изолированном режиме каждый сеанс запускается в изолированном профиле. Каждый раз, когда вы просите MCP закрыть браузер, сеанс закрывается, и все состояние хранилища для этого сеанса теряется. Вы можете предоставить начальное состояние хранилища браузеру через contextOptions конфигурации или через аргумент --storage-state . Узнайте больше о состоянии хранилища здесь .

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

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

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

npx @playwright/mcp@latest --config path/to/config.json
{ // Browser configuration browser?: { // Browser type to use (chromium, firefox, or webkit) browserName?: 'chromium' | 'firefox' | 'webkit'; // Keep the browser profile in memory, do not save it to disk. isolated?: boolean; // 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[]; }; /** * Do not send image responses to the client. */ noImageResponses?: boolean; }

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

При запуске браузера 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", "--pull=always", "mcr.microsoft.com/playwright/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); // ... });

Инструменты

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

  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 (массив): Массив значений для выбора в раскрывающемся списке. Это может быть одно значение или несколько значений.
    • Только для чтения: ложно
  • браузер_нажмите_клавишу
    • Название: Нажмите клавишу
    • Описание: Нажмите клавишу на клавиатуре.
    • Параметры:
      • key (строка): название клавиши, которую нужно нажать, или символ, который нужно сгенерировать, например, ArrowLeft``a
    • Только для чтения: ложно
  • браузер_ожидание_для
    • Название: Подождите
    • Описание: Ожидание появления или исчезновения текста или истечения указанного времени.
    • Параметры:
      • time (число, необязательно): время ожидания в секундах
      • text (строка, необязательно): Текст, которого нужно ждать
      • textGone (строка, необязательно): Текст, которого нужно дождаться, чтобы исчезнуть.
    • Только для чтения: правда
  • загрузка_файла_браузера
    • Название: Загрузить файлы
    • Описание: Загрузите один или несколько файлов.
    • Параметры:
      • paths (массив): Абсолютные пути к файлам для загрузки. Может быть одним файлом или несколькими файлами.
    • Только для чтения: ложно
  • диалог_обработки_браузера
    • Название: Обработка диалога
    • Описание: Обработка диалога.
    • Параметры:
      • accept (логическое значение): принимать ли диалог.
      • promptText (строка, необязательно): Текст подсказки в случае диалогового окна подсказки.
    • Только для чтения: ложно
  • браузер_навигация
    • Название: Перейти к URL-адресу
    • Описание: Перейдите по URL-адресу
    • Параметры:
      • url (строка): URL-адрес для перехода
    • Только для чтения: ложно
  • браузер_навигация_назад
    • Название: Вернуться назад
    • Описание: Вернуться на предыдущую страницу
    • Параметры: Нет
    • Только для чтения: правда
  • браузер_навигация_вперед
    • Название: Идти вперед
    • Описание: Перейти на следующую страницу
    • Параметры: Нет
    • Только для чтения: правда
  • браузер_сделать_скриншот
    • Название: Сделать снимок экрана
    • Описание: Сделать снимок экрана текущей страницы. Вы не можете выполнять действия на основе снимка экрана, используйте для действий browser_snapshot.
    • Параметры:
      • raw (boolean, необязательно): Возвращать ли без сжатия (в формате PNG). Значение по умолчанию — false, что возвращает изображение JPEG.
      • filename (строка, необязательно): Имя файла для сохранения снимка экрана. По умолчанию page-{timestamp}.{png|jpeg} если не указано иное.
      • element (строка, необязательно): понятное человеку описание элемента, используемое для получения разрешения на снимок экрана элемента. Если не указано, снимок экрана будет сделан из области просмотра. Если элемент указан, необходимо указать также ссылку.
      • ref (строка, необязательно): Точная ссылка на целевой элемент из снимка страницы. Если не указано, снимок экрана будет сделан из области просмотра. Если указано ref, элемент также должен быть указан.
    • Только для чтения: правда
  • браузер_pdf_сохранить
    • Название: Сохранить как PDF
    • Описание: Сохранить страницу как PDF
    • Параметры:
      • filename (строка, необязательно): Имя файла для сохранения PDF-файла. По умолчанию page-{timestamp}.pdf если не указано иное.
    • Только для чтения: правда
  • запросы_браузера_сети
    • Название: Список сетевых запросов
    • Описание: Возвращает все сетевые запросы с момента загрузки страницы.
    • Параметры: Нет
    • Только для чтения: правда
  • сообщения_консоли_браузера
    • Название: Получить консольные сообщения
    • Описание: Возвращает все сообщения консоли.
    • Параметры: Нет
    • Только для чтения: правда
  • браузер_установить
    • Заголовок: Установка браузера, указанного в конфиге
    • Описание: Установите браузер, указанный в конфигурации. Вызовите его, если вы получили ошибку о том, что браузер не установлен.
    • Параметры: Нет
    • Только для чтения: ложно
  • браузер_закрыть
    • Заголовок: Закрыть браузер
    • Описание: Закрыть страницу
    • Параметры: Нет
    • Только для чтения: правда
  • изменение_размера_браузера
    • Название: Изменение размера окна браузера
    • Описание: Изменение размера окна браузера.
    • Параметры:
      • width (число): Ширина окна браузера.
      • height (число): Высота окна браузера.
    • Только для чтения: правда
  • список_вкладок_браузера
    • Название: Список вкладок
    • Описание: Список вкладок браузера
    • Параметры: Нет
    • Только для чтения: правда
  • браузер_вкладка_новая
    • Заголовок: Открыть новую вкладку
    • Описание: Открыть новую вкладку
    • Параметры:
      • url (строка, необязательно): URL для перехода на новую вкладку. Если не указано, новая вкладка будет пустой.
    • Только для чтения: правда
  • выбор_вкладки_браузера
    • Название: Выберите вкладку
    • Описание: Выберите вкладку по индексу
    • Параметры:
      • index (номер): индекс вкладки для выбора.
    • Только для чтения: правда
  • закрыть_вкладку_браузера
    • Заголовок: Закрыть вкладку
    • Описание: Закрыть вкладку
    • Параметры:
      • index (число, необязательно): индекс вкладки для закрытия. Закрывает текущую вкладку, если не указано.
    • Только для чтения: ложно
  • браузер_генерировать_драматург_тест
    • Название: Сгенерируйте тест драматурга
    • Описание: Создать тест драматурга для заданного сценария.
    • Параметры:
      • name (строка): Название теста
      • description (строка): Описание теста
      • steps (массив): шаги теста
    • Только для чтения: правда
  • захват_экрана_браузера
    • Название: Сделать снимок экрана
    • Описание: Сделать снимок экрана текущей страницы.
    • Параметры: Нет
    • Только для чтения: правда
  • экран_браузера_перемещение_мыши
    • Название: Перемещение мыши
    • Описание: Переместить мышь в указанную позицию.
    • Параметры:
      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • x (число): координата X
      • y (число): координата Y
    • Только для чтения: правда
  • щелчок_по_экрану_браузера
    • Название: Щелчок
    • Описание: Щелкните левой кнопкой мыши.
    • Параметры:
      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • x (число): координата X
      • y (число): координата Y
    • Только для чтения: ложно
  • перетаскивание_экрана_браузера
    • Название: Перетаскивание мыши
    • Описание: Перетащите левой кнопкой мыши
    • Параметры:
      • element (строка): понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • startX (число): Начальная координата X
      • startY (число): начальная координата Y
      • endX (число): Конечная координата X
      • endY (число): Конечная координата Y
    • Только для чтения: ложно
  • тип_экрана_браузера
    • Название: Введите текст
    • Описание: Введите текст
    • Параметры:
      • text (строка): Текст для ввода в элемент.
      • submit (логическое значение, необязательно): следует ли отправить введенный текст (нажмите Enter после этого)
    • Только для чтения: ложно
  • браузер_нажмите_клавишу
    • Название: Нажмите клавишу
    • Описание: Нажмите клавишу на клавиатуре.
    • Параметры:
      • key (строка): название клавиши, которую нужно нажать, или символ, который нужно сгенерировать, например, ArrowLeft``a
    • Только для чтения: ложно
  • браузер_ожидание_для
    • Название: Подождите
    • Описание: Ожидание появления или исчезновения текста или истечения указанного времени.
    • Параметры:
      • time (число, необязательно): время ожидания в секундах
      • text (строка, необязательно): Текст, которого нужно ждать
      • textGone (строка, необязательно): Текст, которого нужно дождаться, чтобы исчезнуть.
    • Только для чтения: правда
  • загрузка_файла_браузера
    • Название: Загрузить файлы
    • Описание: Загрузите один или несколько файлов.
    • Параметры:
      • paths (массив): Абсолютные пути к файлам для загрузки. Может быть одним файлом или несколькими файлами.
    • Только для чтения: ложно
  • диалог_обработки_браузера
    • Название: Обработка диалога
    • Описание: Обработка диалога.
    • Параметры:
      • accept (логическое значение): принимать ли диалог.
      • promptText (строка, необязательно): Текст подсказки в случае диалогового окна подсказки.
    • Только для чтения: ложно
Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

local-only server

The server can only run on the client's local machine because it depends on local resources.

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

  1. Основные характеристики
    1. Требования
      1. Начиная
        1. Конфигурация
          1. Профиль пользователя
            1. Файл конфигурации
              1. Автономный MCP-сервер
                1. Инструменты

                  Related MCP Servers

                  • -
                    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
                  • A
                    security
                    A
                    license
                    A
                    quality
                    A Model Context Protocol server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages through structured accessibility snapshots without requiring screenshots or vision models.
                    Last updated -
                    21
                    70,036
                    TypeScript
                    Apache 2.0
                    • Apple
                    • Linux

                  View all related MCP servers

                  MCP directory API

                  We provide all the information about MCP servers via our MCP API.

                  curl -X GET 'https://glama.ai/api/mcp/v1/servers/microsoft/playwright-mcp'

                  If you have feedback or need assistance with the MCP directory API, please join our Discord server