Playwright MCP

oficial

Servidor oficial Playwright MCP para automação de navegador, inspeção de páginas, capturas de tela e interação web a partir do Claude, Cursor e outros agentes de IA.

O que você pode fazer com Playwright MCP?

  • Automação de navegador via snapshots de acessibilidade — Peça ao seu IA para navegar em páginas e interagir com elementos usando dados estruturados de acessibilidade, sem necessidade de capturas de tela.
  • Sessões de navegação persistentes — Mantenha estados de login entre conversas com um perfil persistente, ou use sessões isoladas para testes limpos.
  • Suporte a múltiplos navegadores — Automatize tarefas no Chromium, Firefox ou WebKit, com opções para modo headless e emulação de dispositivos.
  • Configuração personalizada do navegador — Configure tamanho da viewport, user agent, configurações de proxy e permissões para atender às suas necessidades de teste.
  • Integração com extensões do navegador — Conecte-se ao seu navegador Chrome ou Edge existente para aproveitar as abas atuais e sessões logadas.

Documentação

Playwright MCP

Um servidor Model Context Protocol (MCP) que fornece capacidades de automação de navegador usando Playwright. Este servidor permite que LLMs interajam com páginas da web por meio de snapshots estruturados de acessibilidade, eliminando a necessidade de capturas de tela ou modelos ajustados visualmente.

Playwright MCP vs Playwright CLI

Este pacote fornece uma interface MCP para o Playwright. Se você está usando um agente de codificação, pode se beneficiar do uso do CLI+SKILLS.

  • CLI: Agentes de codificação modernos favorecem cada vez mais fluxos de trabalho baseados em CLI expostos como SKILLs em vez de MCP, porque invocações de CLI são mais eficientes em tokens: elas evitam carregar grandes esquemas de ferramentas e árvores de acessibilidade verbosas no contexto do modelo, permitindo que agentes atuem por meio de comandos concisos e específicos. Isso torna CLI + SKILLs mais adequados para agentes de codificação de alto rendimento que precisam equilibrar automação de navegador com grandes bases de código, testes e raciocínio dentro de janelas de contexto limitadas.
    Saiba mais sobre Playwright CLI com SKILLs.

  • MCP: MCP permanece relevante para loops agênticos especializados que se beneficiam de estado persistente, introspecção rica e raciocínio iterativo sobre a estrutura da página, como automação exploratória, testes auto-corrigíveis ou fluxos de trabalho autônomos de longa duração onde manter contexto contínuo do navegador supera preocupações com custo de tokens.

Principais Recursos

  • Rápido e leve. Usa a árvore de acessibilidade do Playwright, não entrada baseada em pixels.
  • Amigável para LLMs. Não precisa de modelos de visão, opera puramente em dados estruturados.
  • Aplicação determinística de ferramentas. Evita ambiguidades comuns em abordagens baseadas em capturas de tela.

Requisitos

  • Node.js 18 ou mais recente
  • VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie ou qualquer outro cliente MCP

Começando

Primeiro, instale o servidor Playwright MCP com seu cliente.

Configuração padrão funciona na maioria das ferramentas:

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

Install in VS Code Install in VS Code Insiders

Amp

Adicione via a tela de configurações da extensão Amp do VS Code ou atualizando seu arquivo settings.json:

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

Configuração via CLI do Amp:

Adicione via o comando amp mcp add abaixo

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

Adicione via as configurações do Antigravity ou atualizando seu arquivo de configuração:

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

Use o CLI do Claude Code para adicionar o servidor Playwright MCP:

claude mcp add playwright npx @playwright/mcp@latest
Claude Desktop

Siga o guia de instalação do MCP, use a configuração padrão acima.

Cline

Siga as instruções na seção Configurando Servidores MCP

Exemplo: Configuração Local

Adicione o seguinte ao seu arquivo cline_mcp_settings.json:

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

Use o CLI do Codex para adicionar o servidor Playwright MCP:

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

Alternativamente, crie ou edite o arquivo de configuração ~/.codex/config.toml e adicione:

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

Para mais informações, veja a documentação MCP do Codex.

Copilot

Use o CLI do Copilot para adicionar interativamente o servidor Playwright MCP:

/mcp add

Alternativamente, crie ou edite o arquivo de configuração ~/.copilot/mcp-config.json e adicione:

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

Para mais informações, veja a documentação do CLI do Copilot.

Cursor

Clique no botão para instalar:

Install in Cursor

Ou instale manualmente:

Vá para Cursor Settings -> MCP -> Add new MCP Server. Dê um nome de sua preferência, use o tipo command com o comando npx @playwright/mcp@latest. Você também pode verificar a configuração ou adicionar argumentos de comando clicando em Edit.

Factory

Use o CLI do Factory para adicionar o servidor Playwright MCP:

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

Alternativamente, digite /mcp dentro do Factory droid para abrir uma interface interativa para gerenciar servidores MCP.

Para mais informações, veja a documentação MCP do Factory.

Gemini CLI

Siga o guia de instalação do MCP, use a configuração padrão acima.

Goose

Clique no botão para instalar:

Install in Goose

Ou instale manualmente:

Vá para Advanced settings -> Extensions -> Add custom extension. Dê um nome de sua preferência, use o tipo STDIO, e defina o command para npx @playwright/mcp. Clique em "Add Extension".

Grok

Use o CLI do Grok para adicionar o servidor Playwright MCP:

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

Alternativamente, crie ou edite o arquivo de configuração ~/.grok/config.toml e adicione:

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

Para mais informações, veja a documentação MCP do Grok.

Junie

Para adicionar o servidor Playwright MCP no CLI do Junie:

  1. Digite /mcp
  2. Pressione Ctrl+A para adicionar um novo servidor MCP
  3. Selecione Playwright na lista

Alternativamente, adicione ao .junie/mcp/mcp.json:

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

Para mais informações, veja a documentação de configuração MCP do Junie.

Kiro

Add to Kiro

Siga a documentação de Servidores MCP. Por exemplo, em .kiro/settings/mcp.json:

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

Clique no botão para instalar:

Add MCP Server playwright to LM Studio

Ou instale manualmente:

Vá para Program na barra lateral direita -> Install -> Edit mcp.json. Use a configuração padrão acima.

opencode

Siga a documentação de Servidores MCP. Por exemplo, em ~/.config/opencode/opencode.json:

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

Qodo Gen

Abra o painel de chat do Qodo Gen no VSCode ou IntelliJ → Connect more tools → + Add new MCP → Cole a configuração padrão acima.

Clique em Save.

VS Code

Clique no botão para instalar:

Install in VS Code Install in VS Code Insiders

Ou instale manualmente:

Siga o guia de instalação do MCP, use a configuração padrão acima. Você também pode instalar o servidor Playwright MCP usando o CLI do VS Code:

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

Após a instalação, o servidor Playwright MCP estará disponível para uso com seu agente GitHub Copilot no VS Code.

Warp

Vá para Settings -> AI -> Manage MCP Servers -> + Add para adicionar um Servidor MCP. Use a configuração padrão acima.

Alternativamente, use o comando de barra /add-mcp no prompt do Warp e cole a configuração padrão acima:

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

Siga a documentação MCP do Windsurf. Use a configuração padrão acima.

Configuração

O servidor Playwright MCP suporta os seguintes argumentos. Eles podem ser fornecidos na configuração JSON acima, como parte da lista "args":

OpçãoDescrição
--allowed-hosts <hosts...>lista separada por vírgulas de hosts dos quais este servidor pode servir. O padrão é o host ao qual o servidor está vinculado. Passe '*' para desabilitar a verificação de host.
env PLAYWRIGHT_MCP_ALLOWED_HOSTS
--allowed-origins lista separada por ponto e vírgula de origens CONFIÁVEIS para permitir que o navegador solicite. O padrão é permitir todas. Importante: não serve como limite de segurança e não afeta redirecionamentos.
env PLAYWRIGHT_MCP_ALLOWED_ORIGINS
--allow-unrestricted-file-accesspermite acesso a arquivos fora das raízes do espaço de trabalho. Também permite acesso irrestrito a URLs file://. Por padrão, o acesso ao sistema de arquivos é restrito apenas aos diretórios raiz do espaço de trabalho (ou cwd se nenhuma raiz estiver configurada), e a navegação para URLs file:// é bloqueada.
env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS
--blocked-origins lista separada por ponto e vírgula de origens que o navegador deve ser bloqueado de solicitar. A lista de bloqueio é avaliada antes da lista de permissões. Se usada sem a lista de permissões, solicitações que não correspondem à lista de bloqueio ainda são permitidas. Importante: não serve como limite de segurança e não afeta redirecionamentos.
env PLAYWRIGHT_MCP_BLOCKED_ORIGINS
--block-service-workersbloqueia service workers
env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS
--browser navegador ou canal do Chrome a usar, valores possíveis: chrome, firefox, webkit, msedge.
env PLAYWRIGHT_MCP_BROWSER
--caps lista separada por vírgulas de capacidades adicionais a habilitar, valores possíveis: vision, pdf, devtools.
env PLAYWRIGHT_MCP_CAPS
--cdp-endpoint endpoint CDP ao qual conectar.
env PLAYWRIGHT_MCP_CDP_ENDPOINT
--cdp-header <headers...>cabeçalhos CDP a enviar com a solicitação de conexão, vários podem ser especificados.
env PLAYWRIGHT_MCP_CDP_HEADERS
--cdp-timeout tempo limite em milissegundos para conectar ao endpoint CDP, o padrão é 30000ms
env PLAYWRIGHT_MCP_CDP_TIMEOUT
--codegen especifica o idioma a usar para geração de código, valores possíveis: "typescript", "python", "java", "csharp", "none". O padrão é "typescript".
env PLAYWRIGHT_MCP_CODEGEN
--config caminho para o arquivo de configuração.
env PLAYWRIGHT_MCP_CONFIG
--console-level nível de mensagens de console a retornar: "error", "warning", "info", "debug". Cada nível inclui as mensagens dos níveis mais severos.
env PLAYWRIGHT_MCP_CONSOLE_LEVEL
--device dispositivo a emular, por exemplo: "iPhone 15"
env PLAYWRIGHT_MCP_DEVICE
--mobileemula um dispositivo móvel genérico (Pixel 10 para Chromium, iPhone 17 para WebKit). Páginas móveis geralmente são mais leves, o que economiza tokens. Não pode ser combinado com --device.
env PLAYWRIGHT_MCP_MOBILE
--executable-path caminho para o executável do navegador.
env PLAYWRIGHT_MCP_EXECUTABLE_PATH
--extensionConecta a uma instância de navegador em execução (apenas Edge/Chrome). Requer que a "Playwright Extension" esteja instalada.
env PLAYWRIGHT_MCP_EXTENSION
--endpoint endpoint de navegador vinculado ao qual conectar.
env PLAYWRIGHT_MCP_ENDPOINT
--file-paths como os caminhos de arquivo são renderizados nos resultados das ferramentas, "relative" à raiz do espaço de trabalho ou "absolute". O padrão é "relative".
env PLAYWRIGHT_MCP_FILE_PATHS
--grant-permissions <permissions...>Lista de permissões a conceder ao contexto do navegador, por exemplo "geolocation", "clipboard-read", "clipboard-write".
env PLAYWRIGHT_MCP_GRANT_PERMISSIONS
--headlessexecuta o navegador em modo headless, com interface gráfica por padrão
env PLAYWRIGHT_MCP_HEADLESS
--host host ao qual vincular o servidor. O padrão é localhost. Use 0.0.0.0 para vincular a todas as interfaces.
env PLAYWRIGHT_MCP_HOST
--idle-timeout fecha o navegador após este número de milissegundos sem uma chamada de ferramenta concluída; a próxima chamada de ferramenta o reabre. O padrão é uma hora para navegadores headless, nunca para os com interface gráfica, 0 desabilita.
env PLAYWRIGHT_MCP_IDLE_TIMEOUT
--ignore-https-errorsignora erros de https
env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS
--init-page <path...>caminho para arquivo TypeScript a avaliar no objeto de página do Playwright
env PLAYWRIGHT_MCP_INIT_PAGE
--init-script <path...>caminho para arquivo JavaScript a adicionar como script de inicialização. O script será avaliado em cada página antes de qualquer script da página. Pode ser especificado várias vezes.
env PLAYWRIGHT_MCP_INIT_SCRIPT
--isolatedmantém o perfil do navegador na memória, não o salva no disco.
env PLAYWRIGHT_MCP_ISOLATED
--image-responses se deve enviar respostas de imagem ao cliente. Pode ser "allow", "omit" ou "only". Com "only", uma resposta que carrega uma imagem consiste apenas nas partes de imagem, sem a parte de texto. O padrão é "allow".
env PLAYWRIGHT_MCP_IMAGE_RESPONSES
--no-sandboxdesabilita o sandbox para todos os tipos de processo que normalmente são isolados.
env PLAYWRIGHT_MCP_NO_SANDBOX
--no-webmcpnão coleta nem expõe as ferramentas que uma página registra por meio da API WebMCP.
env PLAYWRIGHT_MCP_WEBMCP=false
--output-dir caminho para o diretório de arquivos de saída com nome automático, por exemplo, uma captura de tela tirada sem nome de arquivo explícito. Arquivos com nome explícito são resolvidos em relação à raiz do espaço de trabalho e não são afetados por esta opção.
env PLAYWRIGHT_MCP_OUTPUT_DIR
--output-max-size Limite para remover arquivos de saída antigos, em bytes.
env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE
--port porta para escutar no transporte SSE.
env PLAYWRIGHT_MCP_PORT
--profile-dir-name nome do diretório de perfil no diretório de dados do usuário ao qual conectar com --extension, por exemplo "Profile 1". O padrão é o último perfil usado que tem a extensão instalada.
env PLAYWRIGHT_MCP_PROFILE_DIR_NAME
--proxy-bypass domínios separados por vírgulas para ignorar o proxy, por exemplo ".com,chromium.org,.domain.com"
env PLAYWRIGHT_MCP_PROXY_BYPASS
--proxy-server especifica o servidor proxy, por exemplo "http://myproxy:3128" ou "socks5://myproxy:8080"
env PLAYWRIGHT_MCP_PROXY_SERVER
--sandboxhabilita o sandbox para todos os tipos de processo que normalmente não são isolados.
env PLAYWRIGHT_MCP_SANDBOX
--save-sessionSe deve salvar a sessão do Playwright MCP no diretório de saída.
env PLAYWRIGHT_MCP_SAVE_SESSION
--secrets caminho para um arquivo contendo segredos no formato dotenv
env PLAYWRIGHT_MCP_SECRETS_FILE
--shared-browser-contextreutiliza o mesmo contexto de navegador entre todos os clientes HTTP conectados.
env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT
--snapshot-boxesinclui a caixa delimitadora de cada elemento como [box=x,y,width,height] nos snapshots. As coordenadas são relativas à viewport, em pixels CSS.
env PLAYWRIGHT_MCP_SNAPSHOT_BOXES
--snapshot-mode ao tirar snapshots para respostas, especifica o modo a usar. Pode ser "full" ou "none". O padrão é "full".
env PLAYWRIGHT_MCP_SNAPSHOT_MODE
--storage-state caminho para o arquivo de estado de armazenamento para sessões isoladas.
env PLAYWRIGHT_MCP_STORAGE_STATE
--test-id-attribute especifica o atributo a usar para IDs de teste, o padrão é "data-testid"
env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE
--timeout-action especifica o tempo limite de ação em milissegundos, o padrão é 5000ms
env PLAYWRIGHT_MCP_TIMEOUT_ACTION
--timeout-navigation especifica o tempo limite de navegação em milissegundos, o padrão é 60000ms
env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION
--timeout-settle quanto tempo esperar após cada ação para que o trabalho acionado se estabilize, em milissegundos, o padrão é 500ms
env PLAYWRIGHT_MCP_TIMEOUT_SETTLE
--user-agent especifica a string de user agent
env PLAYWRIGHT_MCP_USER_AGENT
--user-data-dir caminho para o diretório de dados do usuário. Se não for especificado, um diretório temporário será criado.
env PLAYWRIGHT_MCP_USER_DATA_DIR
--viewport-size especifica o tamanho da viewport do navegador em pixels, por exemplo "1280x720"
env PLAYWRIGHT_MCP_VIEWPORT_SIZE

Perfil do usuário

Você pode executar o Playwright MCP com perfil persistente como um navegador regular (padrão), em contextos isolados para sessões de teste, ou conectar ao seu navegador existente usando a extensão do navegador.

Perfil persistente

Todas as informações de login serão armazenadas no perfil persistente; você pode excluí-lo entre sessões se quiser limpar o estado offline. O perfil persistente está localizado nos seguintes locais e você pode substituí-lo com o argumento --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} é derivado da raiz do espaço de trabalho do cliente MCP, então projetos diferentes recebem perfis separados automaticamente.

[!IMPORTANT] Um perfil persistente só pode ser usado por uma instância de navegador por vez, então clientes MCP concorrentes compartilhando o mesmo espaço de trabalho entrarão em conflito. Para executar vários clientes em paralelo, inicie cada cliente adicional com --isolated ou aponte-o para um --user-data-dir distinto.

Isolado

No modo isolado, cada sessão é iniciada no perfil isolado. Toda vez que você pedir ao MCP para fechar o navegador, a sessão é fechada e todo o estado de armazenamento desta sessão é perdido. Você pode fornecer o estado de armazenamento inicial ao navegador por meio do contextOptions da configuração ou pelo argumento --storage-state. Saiba mais sobre o estado de armazenamento aqui.

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

Extensão do navegador

A extensão do Chrome do Playwright MCP permite que você se conecte a abas existentes do navegador e aproveite suas sessões logadas e o estado do navegador. Veja microsoft/playwright › packages/extension para instruções de instalação e configuração.

Estado inicial

Existem várias maneiras de fornecer o estado inicial ao contexto do navegador ou a uma página.

Para o estado de armazenamento, você pode:

  • Começar com um diretório de dados do usuário usando o argumento --user-data-dir. Isso persistirá todos os dados do navegador entre as sessões.
  • Começar com um arquivo de estado de armazenamento usando o argumento --storage-state. Isso carregará cookies e armazenamento local do arquivo em um contexto de navegador isolado.

Para o estado da página, você pode usar:

  • --init-page para apontar para um arquivo TypeScript que será avaliado no objeto de página do Playwright. Isso permite que você execute código arbitrário para configurar a página.
// 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 para apontar para um arquivo JavaScript que será adicionado como script de inicialização. O script será avaliado em cada página antes de qualquer script da página. Isso é útil para substituir APIs do navegador ou configurar o ambiente.
// init-script.js
window.isPlaywrightMCP = true;

Arquivo de configuração

O servidor Playwright MCP pode ser configurado usando um arquivo de configuração JSON. Você pode especificar o arquivo de configuração usando a opção de linha de comando --config:

npx @playwright/mcp@latest --config path/to/config.json
Esquema do arquivo de configuração
{
  /**
   * 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<string, string>;

  /**
   * 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';
}

Servidor MCP autônomo

Ao executar navegador com interface gráfica em sistema sem display ou a partir de processos de trabalho dos IDEs, execute o servidor MCP a partir do ambiente com o DISPLAY e passe o sinalizador --port para habilitar o transporte HTTP.

npx @playwright/mcp@latest --port 8931

E então, na configuração do cliente MCP, defina o url para o endpoint HTTP:

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

Segurança

Playwright MCP não é um limite de segurança. Consulte Práticas recomendadas de segurança do MCP para obter orientações sobre como proteger sua implantação.

Docker

NOTA: A implementação do Docker atualmente suporta apenas o Chromium em modo headless.

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

Ou, se você preferir executar o contêiner como um serviço de longa duração em vez de deixar o cliente MCP iniciá-lo, use:

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

O servidor escutará na porta do host 8931 e poderá ser acessado por qualquer cliente MCP.

Você pode criar a imagem Docker você mesmo.

docker build -t mcr.microsoft.com/playwright/mcp .
Uso programático
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);

  // ...
});

Ferramentas

Automação principal
  • browser_click
    • Título: Clicar
    • Descrição: Executa um clique em uma página da web
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elemento
      • target (string): Referência exata do elemento alvo no instantâneo da página, ou um seletor de elemento único
      • doubleClick (boolean, opcional): Se deve executar um clique duplo em vez de um clique simples
      • button (string, opcional): Botão para clicar, o padrão é o esquerdo
      • modifiers (array, opcional): Teclas modificadoras a pressionar
    • Somente leitura: false
  • browser_close
    • Título: Fechar navegador
    • Descrição: Fecha a página
    • Parâmetros: Nenhum
    • Somente leitura: false
  • browser_console_messages
    • Título: Obter mensagens do console
    • Descrição: Retorna todas as mensagens do console
    • Parâmetros:
      • level (string): Nível das mensagens do console a retornar. Cada nível inclui as mensagens dos níveis mais severos. O padrão é "info".
      • all (boolean, opcional): Retorna todas as mensagens do console desde o início da sessão, não apenas desde a última navegação. O padrão é false.
      • filename (string, opcional): Nome do arquivo para salvar as mensagens do console. Nomes de arquivo relativos são resolvidos em relação à raiz do espaço de trabalho. Se não for fornecido, as mensagens são retornadas como texto.
    • Somente leitura: true
  • browser_drag
    • Título: Arrastar mouse
    • Descrição: Executa arrastar e soltar entre dois elementos
    • Parâmetros:
      • startElement (string, opcional): Descrição legível do elemento de origem usada para obter permissão de interagir com o elemento
      • startTarget (string): Referência exata do elemento alvo no instantâneo da página, ou um seletor de elemento único
      • endElement (string, opcional): Descrição legível do elemento de destino usada para obter permissão de interagir com o elemento
      • endTarget (string): Referência exata do elemento alvo no instantâneo da página, ou um seletor de elemento único
    • Somente leitura: false
  • browser_drop
    • Título: Soltar arquivos ou dados em um elemento
    • Descrição: Solta arquivos ou dados com tipo MIME em um elemento, como se fossem arrastados de fora da página. Pelo menos um de "paths" ou "data" deve ser fornecido.
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elemento
      • target (string): Referência exata do elemento alvo no instantâneo da página, ou um seletor de elemento único
      • paths (array, opcional): Caminhos absolutos para os arquivos a soltar no elemento.
      • data (object, opcional): Dados a soltar, como um mapa de tipo MIME para valor de string (ex.: {"text/plain": "hello", "text/uri-list": "https://example.com"}).
    • Somente leitura: false
  • browser_emulate_media
    • Título: Emular recursos de mídia
    • Descrição: Emula recursos de mídia CSS para a página, por exemplo, alternar entre o esquema de cores claro e escuro. Parâmetros omitidos permanecem inalterados; null limpa uma substituição.
    • Parâmetros:
      • colorScheme (opcional): Emula o recurso de mídia prefers-color-scheme
      • reducedMotion (opcional): Emula o recurso de mídia prefers-reduced-motion
      • forcedColors (opcional): Emula o recurso de mídia forced-colors
      • contrast (opcional): Emula o recurso de mídia prefers-contrast
      • media (opcional): Altera o tipo de mídia CSS da página
    • Somente leitura: false
  • browser_evaluate
    • Título: Avaliar JavaScript
    • Descrição: Avalia expressão JavaScript na página ou no elemento
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elemento
      • target (string, opcional): Referência exata do elemento alvo no instantâneo da página, ou um seletor de elemento único
      • function (string): () => { /* código / } ou (element) => { / código */ } quando o elemento é fornecido
      • filename (string, opcional): Nome do arquivo para salvar o resultado. Nomes de arquivo relativos são resolvidos em relação à raiz do espaço de trabalho. Se não for fornecido, o resultado é retornado como texto.
    • Somente leitura: false
  • browser_file_upload
    • Título: Enviar arquivos
    • Descrição: Envia um ou vários arquivos
    • Parâmetros:
      • paths (array, opcional): Os caminhos absolutos para os arquivos a enviar. Pode ser um único arquivo ou vários arquivos. Se omitido, o seletor de arquivos é cancelado.
    • Somente leitura: false
  • browser_fill_form
    • Título: Preencher formulário
    • Descrição: Preenche vários campos de formulário
    • Parâmetros:
      • fields (array): Campos a preencher
    • Somente leitura: false
  • browser_find
    • Título: Encontrar no instantâneo da página
    • Descrição: Pesquisa o instantâneo de acessibilidade da página atual por texto ou expressão regular. Retorna nós correspondentes do instantâneo com algumas linhas de contexto ao redor (como trechos de pesquisa), cada um mostrado sob seu caminho a partir da raiz da árvore, o que é mais barato do que capturar o instantâneo inteiro quando você só precisa localizar um elemento e sua referência.
    • Parâmetros:
      • text (string, opcional): Texto simples para pesquisar no instantâneo da página (correspondência de substring sem diferenciar maiúsculas de minúsculas). Forneça texto ou regex, não ambos.
      • regex (string, opcional): Expressão regular para pesquisar no instantâneo da página. A correspondência diferencia maiúsculas de minúsculas por padrão; envolva o padrão em barras para adicionar flags, ex.: "/error/i" para não diferenciar maiúsculas de minúsculas. Forneça texto ou regex, não ambos.
      • filename (string, opcional): Salvar resultados em um arquivo em vez de retorná-los na resposta. Nomes de arquivo relativos são resolvidos em relação à raiz do espaço de trabalho.
    • Somente leitura: true
  • browser_handle_dialog
    • Título: Lidar com um diálogo
    • Descrição: Lida com um diálogo
    • Parâmetros:
      • accept (boolean): Se deve aceitar o diálogo.
      • promptText (string, opcional): O texto do prompt no caso de um diálogo de prompt.
    • Somente leitura: false
  • browser_hover
    • Título: Passar o mouse
    • Descrição: Passa o mouse sobre um elemento na página
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elemento
      • target (string): Referência exata do elemento alvo no instantâneo da página, ou um seletor de elemento único
    • Somente leitura: false
  • browser_navigate
    • Título: Navegar para uma URL
    • Descrição: Navega para uma URL
    • Parâmetros:
      • url (string): A URL para navegar
    • Somente leitura: false
  • browser_navigate_back
    • Título: Voltar
    • Descrição: Volta para a página anterior no histórico
    • Parâmetros: Nenhum
    • Somente leitura: false
  • browser_network_request
    • Título: Mostrar detalhes da solicitação de rede
    • Descrição: Retorna detalhes completos (cabeçalhos e corpo) de uma única solicitação de rede, ou uma única parte se part estiver definido. Use o número de browser_network_requests.
    • Parâmetros:
      • index (integer): Índice baseado em 1 da solicitação, conforme impresso por browser_network_requests.
      • part (string, opcional): Retorna apenas esta parte da solicitação. Omita para retornar detalhes completos.
      • filename (string, opcional): Nome do arquivo para salvar o resultado. Nomes de arquivo relativos são resolvidos em relação à raiz do espaço de trabalho. Se não for fornecido, a saída é retornada como texto.
    • Somente leitura: true
  • browser_network_requests
    • Título: Listar solicitações de rede
    • Descrição: Retorna uma lista numerada de solicitações de rede desde o carregamento da página. Use browser_network_request com o número para obter detalhes completos.
    • Parâmetros:
      • static (boolean): Se deve incluir recursos estáticos bem-sucedidos como imagens, fontes, scripts, etc. O padrão é false.
      • filter (string, opcional): Retorna apenas solicitações cuja URL corresponda a este regexp (ex.: "/api/.*user").
      • filename (string, opcional): Nome do arquivo para salvar as solicitações de rede. Nomes de arquivo relativos são resolvidos em relação à raiz do espaço de trabalho. Se não for fornecido, as solicitações são retornadas como texto.
    • Somente leitura: true
  • browser_press_key
    • Título: Pressionar uma tecla
    • Descrição: Pressiona uma tecla no teclado
    • Parâmetros:
      • key (string): Nome da tecla a pressionar ou um caractere a gerar, como ArrowLeft ou a
    • Somente leitura: false
  • browser_resize
    • Título: Redimensionar janela do navegador
    • Descrição: Redimensiona a janela do navegador
    • Parâmetros:
      • width (number): Largura da janela do navegador
      • height (number): Altura da janela do navegador
    • Somente leitura: false
  • browser_run_code_unsafe
    • Título: Executar código Playwright (inseguro)
    • Descrição: Executa um trecho de código Playwright. Inseguro: executa JavaScript arbitrário no processo do servidor Playwright e é equivalente a RCE.
    • Parâmetros:
      • code (string, opcional): Uma função JavaScript contendo código Playwright a executar. Ela será invocada com um único argumento, page, que você pode usar para qualquer interação com a página. Por exemplo: async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }
      • filename (string, opcional): Carregar código do arquivo especificado. Nomes de arquivo relativos são resolvidos em relação à raiz do espaço de trabalho. Se tanto code quanto filename forem fornecidos, code será ignorado.
    • Somente leitura: false
  • browser_select_option
    • Título: Selecionar opção
    • Descrição: Seleciona uma opção em um menu suspenso
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elemento
      • target (string): Referência exata do elemento alvo no instantâneo da página, ou um seletor de elemento único
      • values (array): Matriz de valores a selecionar no menu suspenso. Pode ser um único valor ou vários valores.
    • Somente leitura: false
  • browser_snapshot
    • Título: Snapshot da página
    • Descrição: Captura o snapshot de acessibilidade da página atual, isso é melhor que screenshot
    • Parâmetros:
      • target (string, opcional): Referência exata do elemento alvo do snapshot da página, ou um seletor de elemento único
      • filename (string, opcional): Salvar o snapshot em um arquivo em vez de retorná-lo na resposta. Nomes de arquivos relativos são resolvidos em relação à raiz do workspace.
      • depth (number, opcional): Limitar a profundidade da árvore do snapshot
      • boxes (boolean, opcional): Incluir o bounding box de cada elemento como [box=x,y,width,height] no snapshot. As coordenadas são relativas ao viewport, em pixels CSS (Element.getBoundingClientRect)
    • Somente leitura: true
  • browser_take_screenshot
    • Título: Tirar um screenshot
    • Descrição: Tirar um screenshot da página atual. Você não pode executar ações com base no screenshot, use browser_snapshot para ações.
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elemento
      • target (string, opcional): Referência exata do elemento alvo do snapshot da página, ou um seletor de elemento único
      • type (string, opcional): Formato de imagem para o screenshot. Se não definido, inferido da extensão do arquivo, caso contrário png.
      • filename (string, opcional): Nome do arquivo para salvar o screenshot. Nomes de arquivos relativos são resolvidos em relação à raiz do workspace. Se não especificado, o screenshot é salvo no diretório de saída como page-{timestamp}.{png|jpeg|webp}.
      • fullPage (boolean, opcional): Quando true, tira um screenshot da página inteira rolável, em vez do viewport atualmente visível. Não pode ser usado com screenshots de elementos.
      • scale (string): Escala de resolução da imagem. "css" produz um screenshot dimensionado em pixels CSS (menor, consistente entre dispositivos). "device" produz um screenshot de alta resolução usando pixels do dispositivo (maior, considera a proporção de pixels do dispositivo). O padrão é css.
    • Somente leitura: true
  • browser_type
    • Título: Digitar texto
    • Descrição: Digitar texto em um elemento editável
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elemento
      • target (string): Referência exata do elemento alvo do snapshot da página, ou um seletor de elemento único
      • text (string): Texto para digitar no elemento
      • submit (boolean, opcional): Se deve enviar o texto digitado (pressionar Enter depois)
      • slowly (boolean, opcional): Se deve digitar um caractere por vez. Útil para acionar manipuladores de teclado na página. Por padrão, todo o texto é preenchido de uma vez.
    • Somente leitura: false
  • browser_wait_for
    • Título: Aguardar por
    • Descrição: Aguardar o texto aparecer ou desaparecer, ou um tempo especificado passar
    • Parâmetros:
      • time (number, opcional): O tempo de espera em segundos, no máximo 30
      • text (string, opcional): O texto para aguardar
      • textGone (string, opcional): O texto para aguardar desaparecer
    • Somente leitura: false
Gerenciamento de abas
  • browser_tabs
    • Título: Gerenciar abas
    • Descrição: Listar, criar, fechar ou selecionar uma aba do navegador.
    • Parâmetros:
      • action (string): Operação a ser executada
      • index (number, opcional): Índice da aba, usado para fechar/selecionar. Se omitido para fechar, a aba atual é fechada.
      • url (string, opcional): URL para navegar na nova aba, usado para nova.
    • Somente leitura: false
Instalação do navegador
Configuração (opt-in via --caps=config)
  • browser_get_config
    • Título: Obter configuração
    • Descrição: Obter a configuração final resolvida após mesclar opções de CLI, variáveis de ambiente e arquivo de configuração.
    • Parâmetros: Nenhum
    • Somente leitura: true
Rede (opt-in via --caps=network)
  • browser_network_state_set
    • Título: Definir estado da rede
    • Descrição: Define o estado da rede do navegador para online ou offline. Quando offline, todas as solicitações de rede falharão.
    • Parâmetros:
      • state (string): Defina como "offline" para simular o modo offline, "online" para restaurar a conectividade de rede
    • Somente leitura: false
  • browser_route
    • Título: Simular solicitações de rede
    • Descrição: Configurar uma rota para simular solicitações de rede que correspondem a um padrão de URL
    • Parâmetros:
      • pattern (string): Padrão de URL para corresponder (ex.: "/api/users", "/*.{png,jpg}")
      • status (number, opcional): Código de status HTTP para retornar (padrão: 200)
      • body (string, opcional): Corpo da resposta (texto ou string JSON)
      • contentType (string, opcional): Cabeçalho Content-Type (ex.: "application/json", "text/html")
      • headers (array, opcional): Cabeçalhos para adicionar no formato "Nome: Valor"
      • removeHeaders (string, opcional): Lista separada por vírgulas de nomes de cabeçalhos para remover da solicitação
    • Somente leitura: false
  • browser_route_list
    • Título: Listar rotas de rede
    • Descrição: Listar todas as rotas de rede ativas
    • Parâmetros: Nenhum
    • Somente leitura: true
  • browser_unroute
    • Título: Remover rotas de rede
    • Descrição: Remover rotas de rede que correspondem a um padrão (ou todas as rotas se nenhum padrão for especificado)
    • Parâmetros:
      • pattern (string, opcional): Padrão de URL para remover rota (omitir para remover todas as rotas)
    • Somente leitura: false
Armazenamento (opt-in via --caps=storage)
  • browser_cookie_clear
    • Título: Limpar cookies
    • Descrição: Limpar todos os cookies
    • Parâmetros: Nenhum
    • Somente leitura: false
  • browser_cookie_delete
    • Título: Excluir cookie
    • Descrição: Excluir um cookie específico
    • Parâmetros:
      • name (string): Nome do cookie para excluir
    • Somente leitura: false
  • browser_cookie_get
    • Título: Obter cookie
    • Descrição: Obter um cookie específico pelo nome
    • Parâmetros:
      • name (string): Nome do cookie para obter
    • Somente leitura: true
  • browser_cookie_list
    • Título: Listar cookies
    • Descrição: Listar todos os cookies (opcionalmente filtrados por domínio/caminho)
    • Parâmetros:
      • domain (string, opcional): Filtrar cookies por domínio
      • path (string, opcional): Filtrar cookies por caminho
    • Somente leitura: true
  • browser_cookie_set
    • Título: Definir cookie
    • Descrição: Definir um cookie com flags opcionais (domínio, caminho, expiração, httpOnly, secure, sameSite)
    • Parâmetros:
      • name (string): Nome do cookie
      • value (string): Valor do cookie
      • domain (string, opcional): Domínio do cookie
      • path (string, opcional): Caminho do cookie
      • expires (number, opcional): Expiração do cookie como timestamp Unix
      • httpOnly (boolean, opcional): Se o cookie é somente HTTP
      • secure (boolean, opcional): Se o cookie é seguro
      • sameSite (string, opcional): Atributo SameSite do cookie
    • Somente leitura: false
  • browser_localstorage_clear
    • Título: Limpar localStorage
    • Descrição: Limpar todo o localStorage
    • Parâmetros: Nenhum
    • Somente leitura: false
  • browser_localstorage_delete
    • Título: Excluir item do localStorage
    • Descrição: Excluir um item do localStorage
    • Parâmetros:
      • key (string): Chave para excluir
    • Somente leitura: false
  • browser_localstorage_get
    • Título: Obter item do localStorage
    • Descrição: Obter um item do localStorage pela chave
    • Parâmetros:
      • key (string): Chave para obter
    • Somente leitura: true
  • browser_localstorage_list
    • Título: Listar localStorage
    • Descrição: Listar todos os pares chave-valor do localStorage
    • Parâmetros: Nenhum
    • Somente leitura: true
  • browser_localstorage_set
    • Título: Definir item do localStorage
    • Descrição: Definir um item do localStorage
    • Parâmetros:
      • key (string): Chave para definir
      • value (string): Valor para definir
    • Somente leitura: false
  • browser_sessionstorage_clear
    • Título: Limpar sessionStorage
    • Descrição: Limpar todo o sessionStorage
    • Parâmetros: Nenhum
    • Somente leitura: false
  • browser_sessionstorage_delete
    • Título: Excluir item do sessionStorage
    • Descrição: Excluir um item do sessionStorage
    • Parâmetros:
      • key (string): Chave para excluir
    • Somente leitura: false
  • browser_sessionstorage_get
    • Título: Obter item do sessionStorage
    • Descrição: Obter um item do sessionStorage pela chave
    • Parâmetros:
      • key (string): Chave para obter
    • Somente leitura: true
  • browser_sessionstorage_list
    • Título: Listar sessionStorage
    • Descrição: Listar todos os pares chave-valor do sessionStorage
    • Parâmetros: Nenhum
    • Somente leitura: true
  • browser_sessionstorage_set
    • Título: Definir item do sessionStorage
    • Descrição: Definir um item do sessionStorage
    • Parâmetros:
      • key (string): Chave para definir
      • value (string): Valor para definir
    • Somente leitura: false
  • browser_set_storage_state
    • Título: Restaurar estado de armazenamento
    • Descrição: Restaurar o estado de armazenamento (cookies, armazenamento local) de um arquivo. Isso limpa cookies e armazenamento local existentes antes de restaurar.
    • Parâmetros:
      • filename (string): Caminho para o arquivo de estado de armazenamento para restaurar. Nomes de arquivos relativos são resolvidos em relação à raiz do workspace.
    • Somente leitura: false
  • browser_storage_state
    • Título: Salvar estado de armazenamento
    • Descrição: Salvar o estado de armazenamento (cookies, armazenamento local) em um arquivo para reutilização posterior
    • Parâmetros:
      • filename (string, opcional): Nome do arquivo para salvar o estado de armazenamento. Nomes de arquivos relativos são resolvidos em relação à raiz do workspace. Se não especificado, o estado de armazenamento é salvo no diretório de saída como storage-state-{timestamp}.json.
    • Somente leitura: true
DevTools (opt-in via --caps=devtools)
  • browser_annotate
    • Título: Anotar a página atual
    • Descrição: Abrir o Playwright Dashboard no modo de anotação para a página atual e aguardar o usuário desenhar anotações. Retorna o screenshot anotado, o snapshot ARIA e a lista de anotações.
    • Parâmetros: Nenhum
    • Somente leitura: true
  • browser_hide_highlight
    • Título: Ocultar destaque do elemento
    • Descrição: Remover uma sobreposição de destaque adicionada anteriormente para o elemento.
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada ao adicionar o destaque; deve corresponder ao valor passado para browser_highlight.
      • target (string, opcional): Referência exata do elemento alvo do snapshot da página, ou um seletor de elemento único
    • Somente leitura: true
  • browser_highlight
    • Título: Destacar elemento
    • Descrição: Mostra uma sobreposição de destaque persistente ao redor do elemento na página.
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elemento
      • target (string): Referência exata do elemento alvo no snapshot da página, ou um seletor de elemento único
      • style (string, opcional): CSS inline adicional aplicado à sobreposição de destaque, ex.: "outline: 2px dashed red".
    • Somente leitura: true
  • browser_resume
    • Título: Retomar execução de script pausada
    • Descrição: Retoma a execução do script após ter sido pausada. Quando chamado com step definido como true, a execução pausará novamente antes da próxima ação.
    • Parâmetros:
      • step (boolean, opcional): Quando true, a execução pausará novamente antes da próxima ação, permitindo depuração passo a passo.
      • location (string, opcional): Pausa a execução em um : específico, ex.: "example.spec.ts:42".
    • Somente leitura: false
  • browser_start_recording
    • Título: Iniciar gravação de ações do usuário
    • Descrição: Inicia a gravação das ações que o usuário realiza no navegador como código Playwright. Use quando o usuário quiser demonstrar um fluxo manualmente. Chame browser_stop_recording quando o usuário disser que terminou para recuperar as ações gravadas.
    • Parâmetros: Nenhum
    • Somente leitura: true
  • browser_start_tracing
    • Título: Iniciar rastreamento
    • Descrição: Inicia a gravação de rastreamento
    • Parâmetros: Nenhum
    • Somente leitura: true
  • browser_start_video
    • Título: Iniciar vídeo
    • Descrição: Inicia a gravação de vídeo
    • Parâmetros:
      • filename (string, opcional): Nome do arquivo para salvar o vídeo. Nomes de arquivo relativos são resolvidos em relação à raiz do workspace. Se não especificado, o vídeo é salvo no diretório de saída como video-{timestamp}.webm.
      • size (objeto, opcional): Tamanho do vídeo
      • fps (número, opcional): Taxa de quadros do vídeo em quadros por segundo, padrão é 25
      • cursor (boolean, opcional): Renderiza um cursor de mouse animado que viaja até cada ponto de ação. Espaça as ações em 800ms para que o cursor tenha tempo de viajar.
    • Somente leitura: true
  • browser_stop_recording
    • Título: Parar gravação de ações do usuário
    • Descrição: Para a gravação iniciada com browser_start_recording e retorna as ações gravadas como código Playwright.
    • Parâmetros: Nenhum
    • Somente leitura: true
  • browser_stop_tracing
    • Título: Parar rastreamento
    • Descrição: Para a gravação de rastreamento
    • Parâmetros: Nenhum
    • Somente leitura: true
  • browser_stop_video
    • Título: Parar vídeo
    • Descrição: Para a gravação de vídeo
    • Parâmetros: Nenhum
    • Somente leitura: true
  • browser_video_chapter
    • Título: Capítulo de vídeo
    • Descrição: Adiciona um marcador de capítulo à gravação de vídeo. Mostra um cartão de capítulo em tela cheia com fundo desfocado.
    • Parâmetros:
      • title (string): Título do capítulo
      • description (string, opcional): Descrição do capítulo
      • duration (número, opcional): Duração em milissegundos para exibir o cartão do capítulo
    • Somente leitura: true
  • browser_video_hide_actions
    • Título: Ocultar sobreposições de ação
    • Descrição: Para de anotar ações realizadas na página.
    • Parâmetros: Nenhum
    • Somente leitura: true
  • browser_video_show_actions
    • Título: Mostrar sobreposições de ação
    • Descrição: Anota ações subsequentes realizadas na página com um rótulo que nomeia a ação e, quando estilizado, marca o ponto de ação e destaca o elemento alvo. Útil durante gravação de vídeo ou screencasting.
    • Parâmetros:
      • duration (número, opcional): Por quanto tempo cada anotação de ação permanece na tela, em milissegundos. Padrão é 500.
      • position (string, opcional): Onde posicionar o título da ação em relação à página. Padrão é canto superior direito.
      • cursor (string, opcional): Decoração do cursor para ações de ponteiro. "pointer" (padrão) anima um ponteiro de mouse do ponto de ação anterior para o próximo; "none" desativa a decoração do cursor.
      • style (objeto, opcional): Estilos das decorações de ação.
    • Somente leitura: true
Baseado em coordenadas (opt-in via --caps=vision)
  • browser_mouse_click_xy
    • Título: Clicar
    • Descrição: Clica o botão do mouse em uma posição determinada
    • Parâmetros:
      • x (número): Coordenada X
      • y (número): Coordenada Y
      • button (string, opcional): Botão para clicar, padrão é esquerdo
      • clickCount (número, opcional): Número de cliques, padrão é 1
      • delay (número, opcional): Tempo de espera entre pressionar e soltar o mouse em milissegundos, padrão é 0
    • Somente leitura: false
  • browser_mouse_down
    • Título: Pressionar mouse para baixo
    • Descrição: Pressiona o botão do mouse
    • Parâmetros:
      • button (string, opcional): Botão para pressionar, padrão é esquerdo
    • Somente leitura: false
  • browser_mouse_drag_xy
    • Título: Arrastar mouse
    • Descrição: Arrasta o botão esquerdo do mouse até uma posição determinada
    • Parâmetros:
      • startX (número): Coordenada X inicial
      • startY (número): Coordenada Y inicial
      • endX (número): Coordenada X final
      • endY (número): Coordenada Y final
    • Somente leitura: false
  • browser_mouse_move_xy
    • Título: Mover mouse
    • Descrição: Move o mouse até uma posição determinada
    • Parâmetros:
      • x (número): Coordenada X
      • y (número): Coordenada Y
    • Somente leitura: false
  • browser_mouse_up
    • Título: Soltar mouse
    • Descrição: Solta o botão do mouse
    • Parâmetros:
      • button (string, opcional): Botão para soltar, padrão é esquerdo
    • Somente leitura: false
  • browser_mouse_wheel
    • Título: Rolar roda do mouse
    • Descrição: Rola a roda do mouse
    • Parâmetros:
      • deltaX (número): Delta X
      • deltaY (número): Delta Y
    • Somente leitura: false
Geração de PDF (opt-in via --caps=pdf)
  • browser_pdf_save
    • Título: Salvar como PDF
    • Descrição: Salva a página como PDF
    • Parâmetros:
      • filename (string, opcional): Nome do arquivo para salvar o PDF. Nomes de arquivo relativos são resolvidos em relação à raiz do workspace. Se não especificado, o PDF é salvo no diretório de saída como page-{timestamp}.pdf.
    • Somente leitura: true
Asserções de teste (opt-in via --caps=testing)
  • browser_generate_locator
    • Título: Criar localizador para elemento
    • Descrição: Gera um localizador para o elemento fornecido para uso em testes
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elemento
      • target (string): Referência exata do elemento alvo no snapshot da página, ou um seletor de elemento único
    • Somente leitura: true
  • browser_verify_element_visible
    • Título: Verificar elemento visível
    • Descrição: Verifica se o elemento está visível na página
    • Parâmetros:
      • role (string): FUNÇÃO do elemento. Pode ser encontrada no snapshot assim: - {ROLE} "Accessible Name":
      • accessibleName (string): NOME_ACESSÍVEL do elemento. Pode ser encontrado no snapshot assim: - role "{ACCESSIBLE_NAME}"
    • Somente leitura: false
  • browser_verify_list_visible
    • Título: Verificar lista visível
    • Descrição: Verifica se a lista está visível na página
    • Parâmetros:
      • element (string): Descrição legível da lista
      • target (string): Referência exata do elemento alvo que aponta para a lista
      • items (array): Itens para verificar
    • Somente leitura: false
  • browser_verify_text_visible
    • Título: Verificar texto visível
    • Descrição: Verifica se o texto está visível na página. Prefira browser_verify_element_visible se possível.
    • Parâmetros:
      • text (string): TEXTO para verificar. Pode ser encontrado no snapshot assim: - role "Accessible Name": {TEXT} ou assim: - text: {TEXT}
    • Somente leitura: false
  • browser_verify_value
    • Título: Verificar valor
    • Descrição: Verifica o valor do elemento
    • Parâmetros:
      • type (string): Tipo do elemento
      • element (string): Descrição legível do elemento
      • target (string): Referência exata do elemento alvo no snapshot da página
      • value (string): Valor para verificar. Para caixa de seleção, use "true" ou "false".
    • Somente leitura: false