Playwright MCP

공식

공식 Playwright MCP 서버로, Claude, Cursor 및 기타 AI 에이전트에서 브라우저 자동화, 페이지 검사, 스크린샷 및 웹 상호작용을 지원합니다.

Playwright MCP(으)로 무엇을 할 수 있나요?

  • 웹 페이지 탐색 및 상호작용 — Playwright의 브라우저 자동화를 사용해 URL 열기, 요소 클릭, 양식 작성 또는 구조화된 접근성 스냅샷 추출을 어시스턴트에 요청하세요.
  • 브라우저 동작 구성--browser, --device, --viewport-size, --user-agent 인수를 통해 브라우저 유형, 뷰포트 크기, 기기 에뮬레이션 또는 사용자 에이전트를 설정하세요.
  • 세션 및 인증 관리 — 영구 프로필(--user-data-dir), 격리된 세션(--isolated) 또는 저장소 상태 파일(--storage-state)을 사용하여 실행 간 로그인 상태를 제어하세요.
  • 기존 브라우저에 연결--extension 플래그를 사용해 실행 중인 Chrome 또는 Edge 인스턴스에 연결하여 재인증 없이 로그인된 세션을 재사용하세요.
  • 출력 및 스냅샷 제어--output-dir, --output-mode, --snapshot-mode를 사용해 콘솔 메시지, 네트워크 로그 및 접근성 스냅샷을 파일이나 표준 출력으로 캡처하세요.

문서

Playwright MCP

Playwright을 사용하여 브라우저 자동화 기능을 제공하는 MCP(Model Context Protocol) 서버입니다. 이 서버를 통해 LLM은 구조화된 접근성 스냅샷을 통해 웹 페이지와 상호 작용할 수 있으므로 스크린샷이나 시각적으로 조정된 모델이 필요하지 않습니다.

Playwright MCP vs Playwright CLI

이 패키지는 Playwright에 대한 MCP 인터페이스를 제공합니다. 코딩 에이전트를 사용하는 경우 대신 CLI+SKILLS를 사용하는 것이 좋습니다.

  • CLI: 최신 코딩 에이전트는 CLI 호출이 더 토큰 효율적이기 때문에 MCP보다 SKILL로 노출되는 CLI 기반 워크플로를 점점 더 선호합니다. 즉, 대규모 도구 스키마와 장황한 접근성 트리를 모델 컨텍스트에 로드하지 않아도 되므로 에이전트가 간결하고 목적에 맞게 구축된 명령을 통해 작업할 수 있습니다. 따라서 CLI + SKILLS는 제한된 컨텍스트 창 내에서 브라우저 자동화와 대규모 코드베이스, 테스트, 추론 간의 균형을 유지해야 하는 처리량이 높은 코딩 에이전트에 더 적합합니다.
    SKILLS가 포함된 Playwright CLI에 대해 자세히 알아보기.

  • MCP: MCP는 탐색적 자동화, 자가 치유 테스트 또는 지속적인 브라우저 컨텍스트 유지가 토큰 비용 문제보다 중요한 장기 실행 자율 워크플로와 같이 영구 상태, 풍부한 내부 검사 및 페이지 구조에 대한 반복적 추론의 이점을 활용하는 특수 에이전트 루프와 여전히 관련이 있습니다.

주요 기능

  • 빠르고 가벼움. 픽셀 기반 입력이 아닌 Playwright의 접근성 트리를 사용합니다.
  • LLM 친화적. 비전 모델이 필요 없으며 구조화된 데이터만으로 작동합니다.
  • 결정적 도구 적용. 스크린샷 기반 접근 방식에서 흔히 발생하는 모호성을 방지합니다.

요구 사항

  • Node.js 18 이상
  • VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie 또는 기타 MCP 클라이언트

시작하기

먼저 클라이언트와 함께 Playwright MCP 서버를 설치합니다.

표준 구성은 대부분의 도구에서 작동합니다:

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

Install in VS Code Install in VS Code Insiders

Amp

Amp VS Code 확장 설정 화면을 통해 또는 settings.json 파일을 업데이트하여 추가합니다:

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

Amp CLI 설정:

아래 amp mcp add 명령을 통해 추가합니다.

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

Antigravity 설정을 통해 또는 구성 파일을 업데이트하여 추가합니다:

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

Claude Code CLI를 사용하여 Playwright MCP 서버를 추가합니다:

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

MCP 설치 가이드를 따르고 위의 표준 구성을 사용합니다.

Cline

MCP 서버 구성 섹션의 지침을 따릅니다.

예: 로컬 설정

cline_mcp_settings.json 파일에 다음을 추가합니다:

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

Codex CLI를 사용하여 Playwright MCP 서버를 추가합니다:

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

또는 구성 파일 ~/.codex/config.toml을(를) 만들거나 편집하고 다음을 추가합니다:

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

자세한 내용은 Codex MCP 문서를 참조하세요.

Copilot

Copilot CLI를 사용하여 대화형으로 Playwright MCP 서버를 추가합니다:

/mcp add

또는 구성 파일 ~/.copilot/mcp-config.json을(를) 만들거나 편집하고 다음을 추가합니다:

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

자세한 내용은 Copilot CLI 문서를 참조하세요.

Cursor

버튼을 클릭하여 설치:

Install in Cursor

또는 수동으로 설치:

Cursor Settings -> MCP -> Add new MCP Server로 이동합니다. 원하는 이름을 지정하고 command 유형과 npx @playwright/mcp@latest 명령을 사용합니다. Edit을(를) 클릭하여 구성을 확인하거나 인수와 같은 명령을 추가할 수도 있습니다.

Factory

Factory CLI를 사용하여 Playwright MCP 서버를 추가합니다:

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

또는 Factory droid 내에서 /mcp을(를) 입력하여 MCP 서버 관리를 위한 대화형 UI를 엽니다.

자세한 내용은 Factory MCP 문서를 참조하세요.

Gemini CLI

MCP 설치 가이드를 따르고 위의 표준 구성을 사용합니다.

Goose

버튼을 클릭하여 설치:

Install in Goose

또는 수동으로 설치:

Advanced settings -> Extensions -> Add custom extension로 이동합니다. 원하는 이름을 지정하고 STDIO 유형을 사용하며 command을(를) npx @playwright/mcp(으)로 설정합니다. "확장 프로그램 추가"를 클릭합니다.

Grok

Grok CLI를 사용하여 Playwright MCP 서버를 추가합니다:

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

또는 구성 파일 ~/.grok/config.toml을(를) 만들거나 편집하고 다음을 추가합니다:

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

자세한 내용은 Grok MCP 문서를 참조하세요.

Junie

Junie CLI에서 Playwright MCP 서버를 추가하려면:

  1. /mcp 입력
  2. Ctrl+A을(를) 눌러 새 MCP 서버 추가
  3. 목록에서 Playwright 선택

또는 .junie/mcp/mcp.json에 추가:

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

자세한 내용은 Junie MCP 구성 문서를 참조하세요.

Kiro

Add to Kiro

MCP 서버 문서를 따릅니다. 예를 들어 .kiro/settings/mcp.json에서:

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

버튼을 클릭하여 설치:

Add MCP Server playwright to LM Studio

또는 수동으로 설치:

오른쪽 사이드바의 Program -> Install -> Edit mcp.json로 이동합니다. 위의 표준 구성을 사용합니다.

opencode

MCP 서버 문서를 따릅니다. 예를 들어 ~/.config/opencode/opencode.json에서:

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

Qodo Gen

VSCode 또는 IntelliJ에서 Qodo Gen 채팅 패널 열기 → 추가 도구 연결 → + 새 MCP 추가 → 위의 표준 구성을 붙여넣습니다.

저장을 클릭합니다.

VS Code

버튼을 클릭하여 설치:

Install in VS Code Install in VS Code Insiders

또는 수동으로 설치:

MCP 설치 가이드를 따르고 위의 표준 구성을 사용합니다. VS Code CLI를 사용하여 Playwright MCP 서버를 설치할 수도 있습니다:

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

설치 후 VS Code에서 GitHub Copilot 에이전트와 함께 Playwright MCP 서버를 사용할 수 있습니다.

Warp

Settings -> AI -> Manage MCP Servers -> + Add로 이동하여 MCP 서버 추가합니다. 위의 표준 구성을 사용합니다.

또는 Warp 프롬프트에서 슬래시 명령 /add-mcp을(를) 사용하고 위의 표준 구성을 붙여넣습니다:

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

Windsurf MCP 문서를 따릅니다. 위의 표준 구성을 사용합니다.

구성

Playwright MCP 서버는 다음 인수를 지원합니다. 위의 JSON 구성에서 "args" 목록의 일부로 제공할 수 있습니다:

옵션설명
--allowed-hosts <hosts...>이 서버가 제공을 허용하는 호스트의 쉼표로 구분된 목록입니다. 기본값은 서버가 바인딩된 호스트입니다. 호스트 확인을 비활성화하려면 '*'를 전달하세요.
env PLAYWRIGHT_MCP_ALLOWED_HOSTS
--allowed-origins 브라우저가 요청하도록 허용할 신뢰할 수 있는 출처의 세미콜론으로 구분된 목록입니다. 기본값은 모두 허용입니다. 중요: 보안 경계 역할을 하지 않으며 리디렉션에 영향을 주지 않습니다.
env PLAYWRIGHT_MCP_ALLOWED_ORIGINS
--allow-unrestricted-file-access작업 영역 루트 외부의 파일에 대한 액세스를 허용합니다. file:// URL에 대한 무제한 액세스도 허용합니다. 기본적으로 파일 시스템 액세스는 작업 영역 루트 디렉터리(또는 루트가 구성되지 않은 경우 cwd)로만 제한되며 file:// URL로의 탐색이 차단됩니다.
env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS
--blocked-origins 브라우저가 요청하지 못하도록 차단할 출처의 세미콜론으로 구분된 목록입니다. 차단 목록은 허용 목록보다 먼저 평가됩니다. 허용 목록 없이 사용하면 차단 목록과 일치하지 않는 요청은 여전히 허용됩니다. 중요: 보안 경계 역할을 하지 않으며 리디렉션에 영향을 주지 않습니다.
env PLAYWRIGHT_MCP_BLOCKED_ORIGINS
--block-service-workers서비스 워커를 차단합니다.
env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS
--browser 사용할 브라우저 또는 Chrome 채널, 가능한 값: chrome, firefox, webkit, msedge.
env PLAYWRIGHT_MCP_BROWSER
--caps 활성화할 추가 기능의 쉼표로 구분된 목록, 가능한 값: vision, pdf, devtools.
env PLAYWRIGHT_MCP_CAPS
--cdp-endpoint 연결할 CDP 엔드포인트입니다.
env PLAYWRIGHT_MCP_CDP_ENDPOINT
--cdp-header <headers...>연결 요청과 함께 보낼 CDP 헤더로, 여러 개를 지정할 수 있습니다.
env PLAYWRIGHT_MCP_CDP_HEADERS
--cdp-timeout CDP 엔드포인트 연결에 대한 밀리초 단위의 타임아웃, 기본값은 30000ms입니다.
env PLAYWRIGHT_MCP_CDP_TIMEOUT
--codegen 코드 생성에 사용할 언어를 지정합니다. 가능한 값: "typescript", "none". 기본값은 "typescript"입니다.
env PLAYWRIGHT_MCP_CODEGEN
--config 구성 파일의 경로입니다.
env PLAYWRIGHT_MCP_CONFIG
--console-level 반환할 콘솔 메시지 수준: "error", "warning", "info", "debug". 각 수준에는 더 심각한 수준의 메시지가 포함됩니다.
env PLAYWRIGHT_MCP_CONSOLE_LEVEL
--device 에뮬레이트할 기기, 예: "iPhone 15"
env PLAYWRIGHT_MCP_DEVICE
--mobile일반적인 모바일 기기를 에뮬레이트합니다(Chromium의 경우 Pixel 10, WebKit의 경우 iPhone 17). 모바일 페이지는 일반적으로 더 가벼워 토큰을 절약합니다. --device와 함께 사용할 수 없습니다.
env PLAYWRIGHT_MCP_MOBILE
--executable-path 브라우저 실행 파일의 경로입니다.
env PLAYWRIGHT_MCP_EXECUTABLE_PATH
--extension실행 중인 브라우저 인스턴스에 연결합니다(Edge/Chrome만 해당). "Playwright Extension"이 설치되어 있어야 합니다.
env PLAYWRIGHT_MCP_EXTENSION
--endpoint 연결할 바인딩된 브라우저 엔드포인트입니다.
env PLAYWRIGHT_MCP_ENDPOINT
--grant-permissions <permissions...>브라우저 컨텍스트에 부여할 권한 목록, 예: "geolocation", "clipboard-read", "clipboard-write".
env PLAYWRIGHT_MCP_GRANT_PERMISSIONS
--headless브라우저를 헤드리스 모드로 실행합니다. 기본값은 헤드 모드입니다.
env PLAYWRIGHT_MCP_HEADLESS
--host 서버를 바인딩할 호스트입니다. 기본값은 localhost입니다. 모든 인터페이스에 바인딩하려면 0.0.0.0을 사용하세요.
env PLAYWRIGHT_MCP_HOST
--ignore-https-errorshttps 오류를 무시합니다.
env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS
--init-page <path...>Playwright 페이지 객체에서 평가할 TypeScript 파일의 경로입니다.
env PLAYWRIGHT_MCP_INIT_PAGE
--init-script <path...>초기화 스크립트로 추가할 JavaScript 파일의 경로입니다. 이 스크립트는 페이지의 모든 스크립트보다 먼저 각 페이지에서 평가됩니다. 여러 번 지정할 수 있습니다.
env PLAYWRIGHT_MCP_INIT_SCRIPT
--isolated브라우저 프로필을 메모리에 유지하고 디스크에 저장하지 않습니다.
env PLAYWRIGHT_MCP_ISOLATED
--image-responses 클라이언트에 이미지 응답을 보낼지 여부입니다. "allow" 또는 "omit"이 될 수 있으며, 기본값은 "allow"입니다.
env PLAYWRIGHT_MCP_IMAGE_RESPONSES
--no-sandbox일반적으로 샌드박스 처리되는 모든 프로세스 유형에 대해 샌드박스를 비활성화합니다.
env PLAYWRIGHT_MCP_NO_SANDBOX
--output-dir 출력 파일을 위한 디렉터리 경로입니다.
env PLAYWRIGHT_MCP_OUTPUT_DIR
--output-max-size 오래된 출력 파일을 제거하기 위한 임계값(바이트)입니다.
env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE
--output-mode 스냅샷, 콘솔 메시지, 네트워크 로그를 파일 또는 표준 출력으로 저장할지 여부입니다. "file" 또는 "stdout"이 될 수 있습니다. 기본값은 "stdout"입니다.
env PLAYWRIGHT_MCP_OUTPUT_MODE
--port SSE 전송을 위해 수신 대기할 포트입니다.
env PLAYWRIGHT_MCP_PORT
--proxy-bypass 프록시를 우회할 쉼표로 구분된 도메인, 예: ".com,chromium.org,.domain.com"
env PLAYWRIGHT_MCP_PROXY_BYPASS
--proxy-server 프록시 서버를 지정합니다, 예: "http://myproxy:3128" 또는 "socks5://myproxy:8080"
env PLAYWRIGHT_MCP_PROXY_SERVER
--sandbox일반적으로 샌드박스 처리되지 않는 모든 프로세스 유형에 대해 샌드박스를 활성화합니다.
env PLAYWRIGHT_MCP_SANDBOX
--save-sessionPlaywright MCP 세션을 출력 디렉터리에 저장할지 여부입니다.
env PLAYWRIGHT_MCP_SAVE_SESSION
--secrets dotenv 형식의 비밀이 포함된 파일의 경로입니다.
env PLAYWRIGHT_MCP_SECRETS_FILE
--shared-browser-context연결된 모든 HTTP 클라이언트 간에 동일한 브라우저 컨텍스트를 재사용합니다.
env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT
--snapshot-mode 응답을 위해 스냅샷을 찍을 때 사용할 모드를 지정합니다. "full" 또는 "none"이 될 수 있습니다. 기본값은 "full"입니다.
env PLAYWRIGHT_MCP_SNAPSHOT_MODE
--storage-state 격리된 세션을 위한 스토리지 상태 파일의 경로입니다.
env PLAYWRIGHT_MCP_STORAGE_STATE
--test-id-attribute 테스트 ID에 사용할 속성을 지정합니다. 기본값은 "data-testid"입니다.
env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE
--timeout-action 작업 타임아웃을 밀리초 단위로 지정합니다. 기본값은 5000ms입니다.
env PLAYWRIGHT_MCP_TIMEOUT_ACTION
--timeout-navigation 탐색 타임아웃을 밀리초 단위로 지정합니다. 기본값은 60000ms입니다.
env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION
--user-agent 사용자 에이전트 문자열을 지정합니다.
env PLAYWRIGHT_MCP_USER_AGENT
--user-data-dir 사용자 데이터 디렉터리의 경로입니다. 지정하지 않으면 임시 디렉터리가 생성됩니다.
env PLAYWRIGHT_MCP_USER_DATA_DIR
--viewport-size 브라우저 뷰포트 크기를 픽셀 단위로 지정합니다, 예: "1280x720"
env PLAYWRIGHT_MCP_VIEWPORT_SIZE

사용자 프로필

Playwright MCP를 일반 브라우저처럼 영구 프로필로 실행하거나(기본값), 테스트 세션을 위해 격리된 컨텍스트에서 실행하거나, 브라우저 확장 프로그램을 사용하여 기존 브라우저에 연결할 수 있습니다.

영구 프로필

로그인된 모든 정보는 영구 프로필에 저장되며, 오프라인 상태를 지우려면 세션 간에 삭제할 수 있습니다. 영구 프로필은 다음 위치에 있으며 --user-data-dir 인수를 사용하여 재정의할 수 있습니다.

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

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

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

{workspace-hash}은(는) MCP 클라이언트의 작업 영역 루트에서 파생되므로 프로젝트마다 자동으로 별도의 프로필이 생성됩니다.

[!IMPORTANT] 영구 프로필은 한 번에 하나의 브라우저 인스턴스에서만 사용할 수 있으므로 동일한 작업 영역을 공유하는 동시 MCP 클라이언트는 충돌합니다. 여러 클라이언트를 병렬로 실행하려면 각 추가 클라이언트를 --isolated로 시작하거나 별도의 --user-data-dir을(를) 지정하세요.

격리됨

격리 모드에서는 각 세션이 격리된 프로필에서 시작됩니다. MCP에 브라우저를 닫도록 요청할 때마다 세션이 종료되고 이 세션의 모든 스토리지 상태가 손실됩니다. 구성의 contextOptions 또는 --storage-state 인수를 통해 브라우저에 초기 스토리지 상태를 제공할 수 있습니다. 스토리지 상태에 대한 자세한 내용은 여기에서 확인하세요.

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

브라우저 확장 프로그램

Playwright MCP Chrome 확장 프로그램을 사용하면 기존 브라우저 탭에 연결하고 로그인된 세션 및 브라우저 상태를 활용할 수 있습니다. 설치 및 설정 지침은 microsoft/playwright › packages/extension을(를) 참조하세요.

초기 상태

브라우저 컨텍스트나 페이지에 초기 상태를 제공하는 여러 가지 방법이 있습니다.

스토리지 상태의 경우 다음 중 하나를 수행할 수 있습니다.

  • --user-data-dir 인수를 사용하여 사용자 데이터 디렉터리로 시작합니다. 이렇게 하면 모든 브라우저 데이터가 세션 간에 유지됩니다.
  • --storage-state 인수를 사용하여 스토리지 상태 파일로 시작합니다. 이렇게 하면 파일에서 쿠키와 로컬 스토리지가 격리된 브라우저 컨텍스트로 로드됩니다.

페이지 상태의 경우 다음을 사용할 수 있습니다.

  • --init-page을(를) 사용하여 Playwright 페이지 객체에서 평가될 TypeScript 파일을 가리킵니다. 이를 통해 페이지 설정을 위한 임의의 코드를 실행할 수 있습니다.
// init-page.ts
export default async ({ page }) => {
  await page.context().grantPermissions(['geolocation']);
  await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 });
  await page.setViewportSize({ width: 1280, height: 720 });
};
  • --init-script을(를) 사용하여 초기화 스크립트로 추가될 JavaScript 파일을 가리킵니다. 이 스크립트는 페이지의 모든 스크립트보다 먼저 각 페이지에서 평가됩니다. 이는 브라우저 API를 재정의하거나 환경을 설정하는 데 유용합니다.
// init-script.js
window.isPlaywrightMCP = true;

구성 파일

Playwright MCP 서버는 JSON 구성 파일을 사용하여 구성할 수 있습니다. --config 명령줄 옵션을 사용하여 구성 파일을 지정할 수 있습니다.

npx @playwright/mcp@latest --config path/to/config.json
구성 파일 스키마
{
  /**
   * The browser to use.
   */
  browser?: {
    /**
     * The type of browser to use.
     */
    browserName?: 'chromium' | 'firefox' | 'webkit';

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /**
   * 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 to save output files.
   */
  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;
  };

  /**
   * Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
   */
  imageResponses?: 'allow' | 'omit';

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

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

독립형 MCP 서버

디스플레이가 없는 시스템이나 IDE의 작업자 프로세스에서 헤드 브라우저를 실행할 때는 DISPLAY가 있는 환경에서 MCP 서버를 실행하고 --port 플래그를 전달하여 HTTP 전송을 활성화하세요.

npx @playwright/mcp@latest --port 8931

그런 다음 MCP 클라이언트 구성에서 url을(를) HTTP 엔드포인트로 설정합니다.

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

보안

Playwright MCP는 보안 경계가 아닙니다. 배포 보안에 대한 지침은 MCP 보안 모범 사례를 참조하세요.

Docker

참고: Docker 구현은 현재 헤드리스 chromium만 지원합니다.

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

또는 MCP 클라이언트가 컨테이너를 생성하도록 하는 대신 장기 실행 서비스로 컨테이너를 실행하려면 다음을 사용하세요.

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

서버는 호스트 포트 8931에서 수신 대기하며 모든 MCP 클라이언트에서 연결할 수 있습니다.

Docker 이미지를 직접 빌드할 수 있습니다.

docker build -t mcr.microsoft.com/playwright/mcp .
프로그래밍 방식 사용
import http from 'http';

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

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

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

  // ...
});

도구

핵심 자동화 - **browser_click**
  • 제목: 클릭
  • 설명: 웹 페이지에서 클릭을 수행합니다
  • 매개변수:
    • element (문자열, 선택 사항): 요소와 상호 작용하기 위한 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
    • target (문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
    • doubleClick (불리언, 선택 사항): 단일 클릭 대신 더블 클릭을 수행할지 여부
    • button (문자열, 선택 사항): 클릭할 버튼, 기본값은 왼쪽
    • modifiers (배열, 선택 사항): 누를 보조 키
  • 읽기 전용: false
  • browser_close
    • 제목: 브라우저 닫기
    • 설명: 페이지를 닫습니다
    • 매개변수: 없음
    • 읽기 전용: false
  • browser_console_messages
    • 제목: 콘솔 메시지 가져오기
    • 설명: 모든 콘솔 메시지를 반환합니다
    • 매개변수:
      • level (문자열): 반환할 콘솔 메시지의 레벨입니다. 각 레벨에는 더 심각한 레벨의 메시지가 포함됩니다. 기본값은 "info"입니다.
      • all (불리언, 선택 사항): 마지막 탐색 이후뿐만 아니라 세션 시작 이후의 모든 콘솔 메시지를 반환합니다. 기본값은 false입니다.
      • filename (문자열, 선택 사항): 콘솔 메시지를 저장할 파일 이름입니다. 제공되지 않으면 메시지가 텍스트로 반환됩니다.
    • 읽기 전용: true
  • browser_drag
    • 제목: 마우스 드래그
    • 설명: 두 요소 간에 드래그 앤 드롭을 수행합니다
    • 매개변수:
      • startElement (문자열, 선택 사항): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 소스 요소 설명
      • startTarget (문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
      • endElement (문자열, 선택 사항): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 대상 요소 설명
      • endTarget (문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
    • 읽기 전용: false
  • browser_drop
    • 제목: 요소에 파일 또는 데이터 드롭
    • 설명: 페이지 외부에서 드래그한 것처럼 요소에 파일 또는 MIME 유형 데이터를 드롭합니다. "paths" 또는 "data" 중 하나 이상을 제공해야 합니다.
    • 매개변수:
      • element (문자열, 선택 사항): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • target (문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
      • paths (배열, 선택 사항): 요소에 드롭할 파일의 절대 경로입니다.
      • data (객체, 선택 사항): MIME 유형을 문자열 값에 매핑한 드롭할 데이터입니다 (예: {"text/plain": "hello", "text/uri-list": "https://example.com"}).
    • 읽기 전용: false
  • browser_evaluate
    • 제목: JavaScript 평가
    • 설명: 페이지 또는 요소에서 JavaScript 표현식을 평가합니다
    • 매개변수:
      • element (문자열, 선택 사항): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • target (문자열, 선택 사항): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
      • function (문자열): () => { /* code / } 또는 요소가 제공된 경우 (element) => { / code */ }
      • filename (문자열, 선택 사항): 결과를 저장할 파일 이름입니다. 제공되지 않으면 결과가 텍스트로 반환됩니다.
    • 읽기 전용: false
  • browser_file_upload
    • 제목: 파일 업로드
    • 설명: 하나 이상의 파일을 업로드합니다
    • 매개변수:
      • paths (배열, 선택 사항): 업로드할 파일의 절대 경로입니다. 단일 파일 또는 여러 파일이 될 수 있습니다. 생략하면 파일 선택기가 취소됩니다.
    • 읽기 전용: false
  • browser_fill_form
    • 제목: 양식 채우기
    • 설명: 여러 양식 필드를 채웁니다
    • 매개변수:
      • fields (배열): 채울 필드
    • 읽기 전용: false
  • browser_find
    • 제목: 페이지 스냅샷에서 찾기
    • 설명: 현재 페이지의 접근성 스냅샷에서 텍스트 또는 정규 표현식을 검색합니다. 일치하는 스냅샷 노드를 주변 컨텍스트 몇 줄(검색 스니펫과 유사)과 함께 반환하며, 각각은 트리 루트로부터의 경로 아래에 표시됩니다. 이는 요소와 해당 참조를 찾기만 하면 될 때 전체 스냅샷을 캡처하는 것보다 저렴합니다.
    • 매개변수:
      • text (문자열, 선택 사항): 페이지 스냅샷에서 검색할 일반 텍스트입니다 (대소문자 구분 없는 부분 문자열 일치). 텍스트 또는 정규 표현식 중 하나만 제공해야 합니다.
      • regex (문자열, 선택 사항): 페이지 스냅샷에서 검색할 정규 표현식입니다. 기본적으로 대소문자를 구분합니다. 플래그를 추가하려면 패턴을 슬래시로 묶으십시오 (예: 대소문자 구분 없는 경우 "/error/i"). 텍스트 또는 정규 표현식 중 하나만 제공해야 합니다.
    • 읽기 전용: true
  • browser_handle_dialog
    • 제목: 대화 상자 처리
    • 설명: 대화 상자를 처리합니다
    • 매개변수:
      • accept (불리언): 대화 상자를 수락할지 여부입니다.
      • promptText (문자열, 선택 사항): 프롬프트 대화 상자인 경우 프롬프트 텍스트입니다.
    • 읽기 전용: false
  • browser_hover
    • 제목: 마우스 호버
    • 설명: 페이지의 요소 위에 마우스를 올립니다
    • 매개변수:
      • element (문자열, 선택 사항): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • target (문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
    • 읽기 전용: false
  • browser_navigate
    • 제목: URL로 이동
    • 설명: URL로 이동합니다
    • 매개변수:
      • url (문자열): 이동할 URL
    • 읽기 전용: false
  • browser_navigate_back
    • 제목: 뒤로 가기
    • 설명: 히스토리에서 이전 페이지로 돌아갑니다
    • 매개변수: 없음
    • 읽기 전용: false
  • browser_network_request
    • 제목: 네트워크 요청 세부 정보 표시
    • 설명: 단일 네트워크 요청의 전체 세부 정보(헤더 및 본문)를 반환하거나, part이 설정된 경우 단일 부분을 반환합니다. browser_network_requests의 번호를 사용하십시오.
    • 매개변수:
      • index (정수): browser_network_requests에 의해 출력된 요청의 1 기반 인덱스입니다.
      • part (문자열, 선택 사항): 요청의 이 부분만 반환합니다. 전체 세부 정보를 반환하려면 생략하십시오.
      • filename (문자열, 선택 사항): 결과를 저장할 파일 이름입니다. 제공되지 않으면 출력이 텍스트로 반환됩니다.
    • 읽기 전용: true
  • browser_network_requests
    • 제목: 네트워크 요청 목록
    • 설명: 페이지 로드 이후의 네트워크 요청 번호 목록을 반환합니다. 전체 세부 정보를 얻으려면 번호와 함께 browser_network_request를 사용하십시오.
    • 매개변수:
      • static (불리언): 이미지, 글꼴, 스크립트 등과 같은 성공적인 정적 리소스를 포함할지 여부입니다. 기본값은 false입니다.
      • filter (문자열, 선택 사항): URL이 이 정규 표현식과 일치하는 요청만 반환합니다 (예: "/api/.*user").
      • filename (문자열, 선택 사항): 네트워크 요청을 저장할 파일 이름입니다. 제공되지 않으면 요청이 텍스트로 반환됩니다.
    • 읽기 전용: true
  • browser_press_key
    • 제목: 키 누르기
    • 설명: 키보드의 키를 누릅니다
    • 매개변수:
      • key (문자열): 누를 키의 이름 또는 생성할 문자 (예: ArrowLeft 또는 a)
    • 읽기 전용: false
  • browser_resize
    • 제목: 브라우저 창 크기 조정
    • 설명: 브라우저 창 크기를 조정합니다
    • 매개변수:
      • width (숫자): 브라우저 창의 너비
      • height (숫자): 브라우저 창의 높이
    • 읽기 전용: false
  • browser_run_code_unsafe
    • 제목: Playwright 코드 실행 (안전하지 않음)
    • 설명: Playwright 코드 스니펫을 실행합니다. 안전하지 않음: Playwright 서버 프로세스에서 임의의 JavaScript를 실행하며 RCE와 동등합니다.
    • 매개변수:
      • code (문자열, 선택 사항): 실행할 Playwright 코드가 포함된 JavaScript 함수입니다. 페이지 상호 작용에 사용할 수 있는 단일 인수 page와 함께 호출됩니다. 예: async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }
      • filename (문자열, 선택 사항): 지정된 파일에서 코드를 로드합니다. 코드와 파일 이름이 모두 제공되면 코드는 무시됩니다.
    • 읽기 전용: false
  • browser_select_option
    • 제목: 옵션 선택
    • 설명: 드롭다운에서 옵션을 선택합니다
    • 매개변수:
      • element (문자열, 선택 사항): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • target (문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
      • values (배열): 드롭다운에서 선택할 값의 배열입니다. 단일 값 또는 여러 값이 될 수 있습니다.
    • 읽기 전용: false
  • browser_snapshot
    • 제목: 페이지 스냅샷
    • 설명: 현재 페이지의 접근성 스냅샷을 캡처합니다. 스크린샷보다 낫습니다.
    • 매개변수:
      • target (문자열, 선택 사항): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
      • filename (문자열, 선택 사항): 응답으로 반환하는 대신 스냅샷을 마크다운 파일에 저장합니다.
      • depth (숫자, 선택 사항): 스냅샷 트리의 깊이를 제한합니다.
      • boxes (불리언, 선택 사항): 스냅샷에 각 요소의 경계 상자를 [box=x,y,width,height]로 포함합니다. 좌표는 뷰포트 기준이며 CSS 픽셀 단위입니다 (Element.getBoundingClientRect).
    • 읽기 전용: true
  • browser_take_screenshot
    • 제목: 스크린샷 찍기
    • 설명: 현재 페이지의 스크린샷을 찍습니다. 스크린샷을 기반으로 작업을 수행할 수 없으므로 작업에는 browser_snapshot을 사용하십시오.
    • 매개변수:
      • element (문자열, 선택 사항): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • target (문자열, 선택 사항): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
      • type (문자열): 스크린샷의 이미지 형식입니다. 기본값은 png입니다.
      • filename (문자열, 선택 사항): 스크린샷을 저장할 파일 이름입니다. 지정하지 않으면 기본값은 page-{timestamp}.{png|jpeg}입니다. 출력 디렉터리 내에 유지하려면 상대 파일 이름을 선호하십시오.
      • fullPage (불리언, 선택 사항): true인 경우 현재 보이는 뷰포트 대신 스크롤 가능한 전체 페이지의 스크린샷을 찍습니다. 요소 스크린샷과 함께 사용할 수 없습니다.
      • scale (문자열): 이미지 해상도 배율입니다. "css"는 CSS 픽셀 크기의 스크린샷을 생성합니다 (더 작고 기기 간 일관됨). "device"는 기기 픽셀을 사용하는 고해상도 스크린샷을 생성합니다 (더 크고 기기 픽셀 비율을 고려함). 기본값은 css입니다.
    • 읽기 전용: true
  • browser_type
    • 제목: 텍스트 입력
    • 설명: 편집 가능한 요소에 텍스트를 입력합니다
    • 매개변수:
      • element (문자열, 선택 사항): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • target (문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
      • text (문자열): 요소에 입력할 텍스트
      • submit (불리언, 선택 사항): 입력된 텍스트를 제출할지 여부입니다 (이후 Enter 키 누름).
      • slowly (불리언, 선택 사항): 한 번에 한 문자씩 입력할지 여부입니다. 페이지에서 키 핸들러를 트리거하는 데 유용합니다. 기본적으로 전체 텍스트가 한 번에 채워집니다.
    • 읽기 전용: false
  • browser_wait_for
    • 제목: 대기
    • 설명: 텍스트가 나타나거나 사라질 때까지 또는 지정된 시간이 경과할 때까지 대기합니다.
    • 매개변수:
      • time (숫자, 선택 사항): 대기할 시간(초)
      • text (문자열, 선택 사항): 나타날 때까지 대기할 텍스트
      • textGone (문자열, 선택 사항): 사라질 때까지 대기할 텍스트
    • 읽기 전용: false
탭 관리
  • browser_tabs
    • 제목: 탭 관리
    • 설명: 브라우저 탭을 나열, 생성, 닫기 또는 선택합니다.
    • 매개변수:
      • action (문자열): 수행할 작업
      • index (숫자, 선택 사항): 탭 인덱스, 닫기/선택에 사용됩니다. 닫기 시 생략하면 현재 탭이 닫힙니다.
      • url (문자열, 선택 사항): 새 탭에서 이동할 URL, 새 탭 생성 시 사용됩니다.
    • 읽기 전용: false
브라우저 설치
구성 (--caps=config를 통해 선택적 활성화)
  • browser_get_config
    • 제목: 구성 가져오기
    • 설명: CLI 옵션, 환경 변수 및 구성 파일을 병합한 최종 해석된 구성을 가져옵니다.
    • 매개변수: 없음
    • 읽기 전용: true
네트워크 (--caps=network를 통해 선택적 활성화)
  • browser_network_state_set
    • 제목: 네트워크 상태 설정
    • 설명: 브라우저 네트워크 상태를 온라인 또는 오프라인으로 설정합니다. 오프라인 시 모든 네트워크 요청이 실패합니다.
    • 매개변수:
      • state (문자열): 오프라인 모드를 시뮬레이션하려면 "offline", 네트워크 연결을 복원하려면 "online"으로 설정합니다.
    • 읽기 전용: false
  • browser_route
    • 제목: 네트워크 요청 모의 처리
    • 설명: URL 패턴과 일치하는 네트워크 요청을 모의 처리하도록 경로를 설정합니다.
    • 매개변수:
      • pattern (문자열): 일치시킬 URL 패턴 (예: "/api/users", "/*.{png,jpg}")
      • status (숫자, 선택 사항): 반환할 HTTP 상태 코드 (기본값: 200)
      • body (문자열, 선택 사항): 응답 본문 (텍스트 또는 JSON 문자열)
      • contentType (문자열, 선택 사항): Content-Type 헤더 (예: "application/json", "text/html")
      • headers (배열, 선택 사항): "이름: 값" 형식으로 추가할 헤더
      • removeHeaders (문자열, 선택 사항): 요청에서 제거할 헤더 이름의 쉼표로 구분된 목록
    • 읽기 전용: false
  • browser_route_list
    • 제목: 네트워크 경로 나열
    • 설명: 모든 활성 네트워크 경로를 나열합니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • browser_unroute
    • 제목: 네트워크 경로 제거
    • 설명: 패턴과 일치하는 네트워크 경로를 제거합니다 (패턴이 지정되지 않은 경우 모든 경로 제거).
    • 매개변수:
      • pattern (문자열, 선택 사항): 경로를 제거할 URL 패턴 (모든 경로를 제거하려면 생략)
    • 읽기 전용: false
저장소 (--caps=storage를 통해 선택적 활성화)
  • browser_cookie_clear
    • 제목: 쿠키 지우기
    • 설명: 모든 쿠키를 지웁니다.
    • 매개변수: 없음
    • 읽기 전용: false
  • browser_cookie_delete
    • 제목: 쿠키 삭제
    • 설명: 특정 쿠키를 삭제합니다.
    • 매개변수:
      • name (문자열): 삭제할 쿠키 이름
    • 읽기 전용: false
  • browser_cookie_get
    • 제목: 쿠키 가져오기
    • 설명: 이름으로 특정 쿠키를 가져옵니다.
    • 매개변수:
      • name (문자열): 가져올 쿠키 이름
    • 읽기 전용: true
  • browser_cookie_list
    • 제목: 쿠키 나열
    • 설명: 모든 쿠키를 나열합니다 (선택적으로 도메인/경로로 필터링).
    • 매개변수:
      • domain (문자열, 선택 사항): 도메인으로 쿠키 필터링
      • path (문자열, 선택 사항): 경로로 쿠키 필터링
    • 읽기 전용: true
  • browser_cookie_set
    • 제목: 쿠키 설정
    • 설명: 선택적 플래그(domain, path, expires, httpOnly, secure, sameSite)와 함께 쿠키를 설정합니다.
    • 매개변수:
      • name (문자열): 쿠키 이름
      • value (문자열): 쿠키 값
      • domain (문자열, 선택 사항): 쿠키 도메인
      • path (문자열, 선택 사항): 쿠키 경로
      • expires (숫자, 선택 사항): Unix 타임스탬프로 나타낸 쿠키 만료 시간
      • httpOnly (부울, 선택 사항): 쿠키의 HTTP 전용 여부
      • secure (부울, 선택 사항): 쿠키의 보안 여부
      • sameSite (문자열, 선택 사항): 쿠키 SameSite 속성
    • 읽기 전용: false
  • browser_localstorage_clear
    • 제목: localStorage 지우기
    • 설명: 모든 localStorage를 지웁니다.
    • 매개변수: 없음
    • 읽기 전용: false
  • browser_localstorage_delete
    • 제목: localStorage 항목 삭제
    • 설명: localStorage 항목을 삭제합니다.
    • 매개변수:
      • key (문자열): 삭제할 키
    • 읽기 전용: false
  • browser_localstorage_get
    • 제목: localStorage 항목 가져오기
    • 설명: 키로 localStorage 항목을 가져옵니다.
    • 매개변수:
      • key (문자열): 가져올 키
    • 읽기 전용: true
  • browser_localstorage_list
    • 제목: localStorage 나열
    • 설명: 모든 localStorage 키-값 쌍을 나열합니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • browser_localstorage_set
    • 제목: localStorage 항목 설정
    • 설명: localStorage 항목을 설정합니다.
    • 매개변수:
      • key (문자열): 설정할 키
      • value (문자열): 설정할 값
    • 읽기 전용: false
  • browser_sessionstorage_clear
    • 제목: sessionStorage 지우기
    • 설명: 모든 sessionStorage를 지웁니다.
    • 매개변수: 없음
    • 읽기 전용: false
  • browser_sessionstorage_delete
    • 제목: sessionStorage 항목 삭제
    • 설명: sessionStorage 항목을 삭제합니다.
    • 매개변수:
      • key (문자열): 삭제할 키
    • 읽기 전용: false
  • browser_sessionstorage_get
    • 제목: sessionStorage 항목 가져오기
    • 설명: 키로 sessionStorage 항목을 가져옵니다.
    • 매개변수:
      • key (문자열): 가져올 키
    • 읽기 전용: true
  • browser_sessionstorage_list
    • 제목: sessionStorage 나열
    • 설명: 모든 sessionStorage 키-값 쌍을 나열합니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • browser_sessionstorage_set
    • 제목: sessionStorage 항목 설정
    • 설명: sessionStorage 항목을 설정합니다.
    • 매개변수:
      • key (문자열): 설정할 키
      • value (문자열): 설정할 값
    • 읽기 전용: false
  • browser_set_storage_state
    • 제목: 저장소 상태 복원
    • 설명: 파일에서 저장소 상태(쿠키, 로컬 저장소)를 복원합니다. 복원 전에 기존 쿠키와 로컬 저장소를 지웁니다.
    • 매개변수:
      • filename (문자열): 복원할 저장소 상태 파일의 경로
    • 읽기 전용: false
  • browser_storage_state
    • 제목: 저장소 상태 저장
    • 설명: 나중에 재사용할 수 있도록 저장소 상태(쿠키, 로컬 저장소)를 파일에 저장합니다.
    • 매개변수:
      • filename (문자열, 선택 사항): 저장소 상태를 저장할 파일 이름. 지정하지 않으면 기본값은 storage-state-{timestamp}.json입니다.
    • 읽기 전용: true
DevTools (--caps=devtools를 통해 선택적 활성화)
  • browser_annotate
    • 제목: 현재 페이지에 주석 달기
    • 설명: 현재 페이지에 대해 주석 모드로 Playwright Dashboard를 열고 사용자가 주석을 그릴 때까지 기다립니다. 주석이 달린 스크린샷, ARIA 스냅샷 및 주석 목록을 반환합니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • browser_hide_highlight
    • 제목: 요소 강조 표시 숨기기
    • 설명: 이전에 요소에 추가된 강조 표시 오버레이를 제거합니다.
    • 매개변수:
      • element (문자열, 선택 사항): 강조 표시를 추가할 때 사용된 사람이 읽을 수 있는 요소 설명; browser_highlight에 전달된 값과 일치해야 합니다.
      • target (문자열, 선택 사항): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
    • 읽기 전용: true
  • browser_highlight
    • 제목: 요소 강조 표시
    • 설명: 페이지의 요소 주위에 지속적인 강조 표시 오버레이를 표시합니다.
    • 매개변수:
      • element (문자열, 선택 사항): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • target (문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
      • style (문자열, 선택 사항): 강조 표시 오버레이에 적용되는 추가 인라인 CSS (예: "outline: 2px dashed red").
    • 읽기 전용: true
  • browser_resume
    • 제목: 일시 중지된 스크립트 실행 재개
    • 설명: 일시 중지된 후 스크립트 실행을 재개합니다. step이 true로 설정된 상태로 호출되면 다음 작업 전에 실행이 다시 일시 중지됩니다.
    • 매개변수:
      • step (부울, 선택 사항): true인 경우 다음 작업 전에 실행이 다시 일시 중지되어 단계별 디버깅이 가능합니다.
      • location (문자열, 선택 사항): 특정 :에서 실행을 일시 중지합니다 (예: "example.spec.ts:42").
    • 읽기 전용: false
  • browser_start_tracing
    • 제목: 추적 시작
    • 설명: 추적 기록을 시작합니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • browser_start_video
    • 제목: 비디오 시작
    • 설명: 비디오 녹화를 시작합니다.
    • 매개변수:
      • filename (문자열, 선택 사항): 비디오를 저장할 파일 이름.
      • size (객체, 선택 사항): 비디오 크기
    • 읽기 전용: true
  • browser_stop_tracing
    • 제목: 추적 중지
    • 설명: 추적 기록을 중지합니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • browser_stop_video
    • 제목: 비디오 중지
    • 설명: 비디오 녹화를 중지합니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • browser_video_chapter
    • 제목: 비디오 챕터
    • 설명: 비디오 녹화에 챕터 마커를 추가합니다. 흐린 배경의 전체 화면 챕터 카드를 표시합니다.
    • 매개변수:
      • title (문자열): 챕터 제목
      • description (문자열, 선택 사항): 챕터 설명
      • duration (숫자, 선택 사항): 챕터 카드를 표시할 시간(밀리초)
    • 읽기 전용: true
  • browser_video_hide_actions
    • 제목: 작업 오버레이 숨기기
    • 설명: 페이지에서 수행된 작업에 대한 주석 달기를 중지합니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • browser_video_show_actions
    • 제목: 작업 오버레이 표시
    • 설명: 작업 이름을 지정하고 대상 요소를 강조 표시하는 설명선으로 페이지에서 수행되는 후속 작업에 주석을 답니다. 비디오 녹화 또는 화면 캐스팅 시 유용합니다.
    • 매개변수:
      • duration (숫자, 선택 사항): 각 작업 주석이 화면에 유지되는 시간(밀리초). 기본값은 500입니다.
      • position (문자열, 선택 사항): 페이지를 기준으로 작업 제목을 배치할 위치. 기본값은 top-right입니다.
      • cursor (문자열, 선택 사항): 포인터 작업을 위한 커서 장식. "pointer"(기본값)는 이전 작업 지점에서 다음 작업 지점으로 마우스 포인터를 애니메이션으로 표시합니다. "none"은 커서 장식을 비활성화합니다.
    • 읽기 전용: true
좌표 기반 (--caps=vision으로 선택 활성화)
  • browser_mouse_click_xy
    • 제목: 클릭
    • 설명: 지정된 위치에서 마우스 버튼 클릭
    • 매개변수:
      • x (숫자): X 좌표
      • y (숫자): Y 좌표
      • button (문자열, 선택 사항): 클릭할 버튼, 기본값은 왼쪽
      • clickCount (숫자, 선택 사항): 클릭 횟수, 기본값은 1
      • delay (숫자, 선택 사항): 마우스 누름과 뗌 사이의 대기 시간(밀리초), 기본값은 0
    • 읽기 전용: false
  • browser_mouse_down
    • 제목: 마우스 누름
    • 설명: 마우스 버튼 누름
    • 매개변수:
      • button (문자열, 선택 사항): 누를 버튼, 기본값은 왼쪽
    • 읽기 전용: false
  • browser_mouse_drag_xy
    • 제목: 마우스 드래그
    • 설명: 왼쪽 마우스 버튼을 지정된 위치로 드래그
    • 매개변수:
      • startX (숫자): 시작 X 좌표
      • startY (숫자): 시작 Y 좌표
      • endX (숫자): 끝 X 좌표
      • endY (숫자): 끝 Y 좌표
    • 읽기 전용: false
  • browser_mouse_move_xy
    • 제목: 마우스 이동
    • 설명: 마우스를 지정된 위치로 이동
    • 매개변수:
      • x (숫자): X 좌표
      • y (숫자): Y 좌표
    • 읽기 전용: false
  • browser_mouse_up
    • 제목: 마우스 뗌
    • 설명: 마우스 버튼 뗌
    • 매개변수:
      • button (문자열, 선택 사항): 뗄 버튼, 기본값은 왼쪽
    • 읽기 전용: false
  • browser_mouse_wheel
    • 제목: 마우스 휠 스크롤
    • 설명: 마우스 휠 스크롤
    • 매개변수:
      • deltaX (숫자): X 변화량
      • deltaY (숫자): Y 변화량
    • 읽기 전용: false
PDF 생성 (--caps=pdf로 선택 활성화)
  • browser_pdf_save
    • 제목: PDF로 저장
    • 설명: 페이지를 PDF로 저장
    • 매개변수:
      • filename (문자열, 선택 사항): PDF를 저장할 파일 이름. 지정하지 않으면 기본값은 page-{timestamp}.pdf입니다. 출력 디렉터리 내에 유지하려면 상대 파일 이름을 사용하는 것이 좋습니다.
    • 읽기 전용: true
테스트 어설션 (--caps=testing으로 선택 활성화)
  • browser_generate_locator
    • 제목: 요소 로케이터 생성
    • 설명: 테스트에 사용할 주어진 요소에 대한 로케이터 생성
    • 매개변수:
      • element (문자열, 선택 사항): 요소와 상호 작용하기 위한 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • target (문자열): 페이지 스냅샷의 정확한 대상 요소 참조 또는 고유한 요소 선택자
    • 읽기 전용: true
  • browser_verify_element_visible
    • 제목: 요소 표시 확인
    • 설명: 페이지에 요소가 표시되는지 확인
    • 매개변수:
      • role (문자열): 요소의 ROLE. 스냅샷에서 다음과 같이 찾을 수 있습니다: - {ROLE} "Accessible Name":
      • accessibleName (문자열): 요소의 ACCESSIBLE_NAME. 스냅샷에서 다음과 같이 찾을 수 있습니다: - role "{ACCESSIBLE_NAME}"
    • 읽기 전용: false
  • browser_verify_list_visible
    • 제목: 목록 표시 확인
    • 설명: 페이지에 목록이 표시되는지 확인
    • 매개변수:
      • element (문자열): 사람이 읽을 수 있는 목록 설명
      • target (문자열): 목록을 가리키는 정확한 대상 요소 참조
      • items (배열): 확인할 항목
    • 읽기 전용: false
  • browser_verify_text_visible
    • 제목: 텍스트 표시 확인
    • 설명: 페이지에 텍스트가 표시되는지 확인. 가능하면 browser_verify_element_visible을 사용하는 것이 좋습니다.
    • 매개변수:
      • text (문자열): 확인할 TEXT. 스냅샷에서 다음과 같이 찾을 수 있습니다: - role "Accessible Name": {TEXT} 또는 다음과 같이: - text: {TEXT}
    • 읽기 전용: false
  • browser_verify_value
    • 제목: 값 확인
    • 설명: 요소 값 확인
    • 매개변수:
      • type (문자열): 요소의 유형
      • element (문자열): 사람이 읽을 수 있는 요소 설명
      • target (문자열): 페이지 스냅샷의 정확한 대상 요소 참조
      • value (문자열): 확인할 값. 체크박스의 경우 "true" 또는 "false"를 사용합니다.
    • 읽기 전용: false