Skip to main content
Glama

Playwright MCP Server

Official
by microsoft

극작가 MCP

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

주요 특징

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

요구 사항

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

시작하기

먼저 클라이언트와 함께 Playwright MCP 서버를 설치하세요. 일반적인 구성은 다음과 같습니다.

지엑스피1

VS Code CLI를 사용하여 Playwright MCP 서버를 설치할 수도 있습니다.

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

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

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

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

Windsuff MCP 설명서를 따르세요. 다음 구성을 사용하세요.

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

MCP 설치 가이드를 따르고 다음 구성을 사용하세요.

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

구성

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

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

사용자 프로필

일반 브라우저(기본값)처럼 지속적인 프로필로 Playwright MCP를 실행하거나 테스트 세션을 위한 격리된 컨텍스트에서 실행할 수 있습니다.

영구 프로필

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

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

외딴

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

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

구성 파일

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

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

독립형 MCP 서버

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

npx @playwright/mcp@latest --port 8931

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

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

참고: Docker 구현은 현재 헤드리스 크로미엄만 지원합니다.

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

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

docker build -t mcr.microsoft.com/playwright/mcp .
import http from 'http'; import { createConnection } from '@playwright/mcp'; import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'; http.createServer(async (req, res) => { // ... // Creates a headless Playwright MCP server with SSE transport const connection = await createConnection({ browser: { launchOptions: { headless: true } } }); const transport = new SSEServerTransport('/messages', res); await connection.connect(transport); // ... });

도구

도구는 두 가지 모드로 제공됩니다.

  1. 스냅샷 모드 (기본값): 더 나은 성능과 안정성을 위해 접근성 스냅샷을 사용합니다.
  2. 비전 모드 : 시각적 기반 상호작용을 위해 스크린샷을 사용합니다.

Vision Mode를 사용하려면 서버를 시작할 때 --vision 플래그를 추가하세요.

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

제공된 스크린샷을 기준으로, 비전 모드는 XY 좌표 공간을 사용하여 요소와 상호 작용할 수 있는 컴퓨터 사용 모델에서 가장 잘 작동합니다.

  • 브라우저 스냅샷
    • 제목: 페이지 스냅샷
    • 설명: 현재 페이지의 접근성 스냅샷을 캡처합니다. 스크린샷보다 낫습니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • 브라우저 클릭
    • 제목: 클릭
    • 설명: 웹 페이지를 클릭합니다.
    • 매개변수:
      • element (문자열): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • ref (문자열): 페이지 스냅샷의 정확한 대상 요소 참조
    • 읽기 전용: false
  • 브라우저 드래그
    • 제목: 드래그 마우스
    • 설명: 두 요소 사이에서 드래그 앤 드롭을 수행합니다.
    • 매개변수:
      • startElement (문자열): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 소스 요소 설명
      • startRef (문자열): 페이지 스냅샷의 정확한 소스 요소 참조
      • endElement (문자열): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 대상 요소 설명
      • endRef (문자열): 페이지 스냅샷의 정확한 대상 요소 참조
    • 읽기 전용: false
  • 브라우저_호버
    • 제목: 마우스를 올려주세요
    • 설명: 페이지의 요소 위에 마우스를 올려 놓으세요
    • 매개변수:
      • element (문자열): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • ref (문자열): 페이지 스냅샷의 정확한 대상 요소 참조
    • 읽기 전용: true
  • 브라우저_유형
    • 제목: 텍스트 입력
    • 설명: 편집 가능한 요소에 텍스트를 입력합니다.
    • 매개변수:
      • element (문자열): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • ref (문자열): 페이지 스냅샷의 정확한 대상 요소 참조
      • text (문자열): 요소에 입력할 텍스트
      • submit (부울, 선택 사항): 입력한 텍스트를 제출할지 여부(제출 후 Enter 키 누름)
      • slowly (부울, 선택 사항): 한 번에 한 글자씩 입력할지 여부입니다. 페이지에서 키 핸들러를 트리거하는 데 유용합니다. 기본적으로 전체 텍스트가 한 번에 채워집니다.
    • 읽기 전용: false
  • 브라우저 선택 옵션
    • 제목: 옵션 선택
    • 설명: 드롭다운에서 옵션을 선택하세요
    • 매개변수:
      • element (문자열): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • ref (문자열): 페이지 스냅샷의 정확한 대상 요소 참조
      • values (배열): 드롭다운에서 선택할 값의 배열입니다. 단일 값 또는 여러 값일 수 있습니다.
    • 읽기 전용: false
  • 브라우저_누르기_
    • 제목: 키를 누르세요
    • 설명: 키보드의 키를 누르세요
    • 매개변수:
      • key (문자열): 누르려는 키의 이름 또는 생성할 문자(예: ArrowLeft``a
    • 읽기 전용: false
  • 브라우저 대기
    • 제목 : 기다리다
    • 설명: 텍스트가 나타나거나 사라지거나 지정된 시간이 지날 때까지 기다립니다.
    • 매개변수:
      • time (숫자, 선택 사항): 대기 시간(초)
      • text (문자열, 선택 사항): 기다릴 텍스트
      • textGone (문자열, 선택 사항): 사라질 때까지 기다릴 텍스트
    • 읽기 전용: true
  • 브라우저 파일 업로드
    • 제목: 파일 업로드
    • 설명: 하나 또는 여러 개의 파일을 업로드합니다.
    • 매개변수:
      • paths (배열): 업로드할 파일의 절대 경로입니다. 단일 파일 또는 여러 파일일 수 있습니다.
    • 읽기 전용: false
  • 브라우저_핸들_대화 상자
    • 제목: 대화 처리
    • 설명: 대화 처리
    • 매개변수:
      • accept (boolean): 대화를 수락할지 여부.
      • promptText (문자열, 선택 사항): 프롬프트 대화 상자의 경우 프롬프트의 텍스트입니다.
    • 읽기 전용: false
  • 브라우저 탐색
    • 제목: URL로 이동
    • 설명: URL로 이동합니다
    • 매개변수:
      • url (문자열): 이동할 URL
    • 읽기 전용: false
  • 브라우저_뒤로_탐색
    • 제목: 돌아가기
    • 설명: 이전 페이지로 돌아가기
    • 매개변수: 없음
    • 읽기 전용: true
  • 브라우저_탐색_포워드
    • 제목: 앞으로 나아가세요
    • 설명: 다음 페이지로 이동합니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • 브라우저_스크린샷_찍기
    • 제목: 스크린샷 찍기
    • 설명: 현재 페이지의 스크린샷을 찍습니다. 스크린샷을 기반으로 다른 작업을 수행할 수 없으므로, 작업에는 browser_snapshot을 사용하세요.
    • 매개변수:
      • raw (부울, 선택 사항): 압축하지 않고 PNG 형식으로 반환할지 여부입니다. 기본값은 false이며, JPEG 이미지를 반환합니다.
      • filename (문자열, 선택 사항): 스크린샷을 저장할 파일 이름입니다. 지정하지 않으면 기본값은 page-{timestamp}.{png|jpeg} .
      • element (문자열, 선택 사항): 사람이 읽을 수 있는 요소 설명으로, 요소의 스크린샷 권한을 얻는 데 사용됩니다. 제공하지 않으면 뷰포트의 스크린샷이 촬영됩니다. element가 제공된 경우 ref도 함께 제공해야 합니다.
      • ref (문자열, 선택 사항): 페이지 스냅샷의 정확한 대상 요소 참조입니다. 지정하지 않으면 뷰포트의 스크린샷이 생성됩니다. ref가 지정되면 요소도 지정해야 합니다.
    • 읽기 전용: true
  • 브라우저_PDF_저장
    • 제목: PDF로 저장
    • 설명: 페이지를 PDF로 저장
    • 매개변수:
      • filename (문자열, 선택 사항): PDF를 저장할 파일 이름입니다. 지정하지 않으면 기본값은 page-{timestamp}.pdf 입니다.
    • 읽기 전용: true
  • 브라우저 네트워크 요청
    • 제목: 네트워크 요청 목록
    • 설명: 페이지를 로드한 이후 모든 네트워크 요청을 반환합니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • 브라우저 콘솔 메시지
    • 제목: 콘솔 메시지 받기
    • 설명: 모든 콘솔 메시지를 반환합니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • 브라우저 설치
    • 제목 : config에 지정된 브라우저 설치
    • 설명: 설정에 지정된 브라우저를 설치합니다. 브라우저가 설치되지 않았다는 오류가 발생하면 이 메서드를 호출합니다.
    • 매개변수: 없음
    • 읽기 전용: false
  • 브라우저 닫기
    • 제목: 브라우저 닫기
    • 설명: 페이지를 닫습니다
    • 매개변수: 없음
    • 읽기 전용: true
  • 브라우저 크기 조정
    • 제목: 브라우저 창 크기 조정
    • 설명: 브라우저 창 크기 조정
    • 매개변수:
      • width (숫자): 브라우저 창의 너비
      • height (숫자): 브라우저 창의 높이
    • 읽기 전용: true
  • 브라우저 탭 목록
    • 제목: 목록 탭
    • 설명: 브라우저 탭 나열
    • 매개변수: 없음
    • 읽기 전용: true
  • 브라우저__새로 만들기
    • 제목: 새 탭 열기
    • 설명: 새 탭을 엽니다
    • 매개변수:
      • url (문자열, 선택 사항): 새 탭에서 이동할 URL입니다. 지정하지 않으면 새 탭이 비어 있게 됩니다.
    • 읽기 전용: true
  • 브라우저__선택
    • 제목: 탭 선택
    • 설명: 인덱스로 탭 선택
    • 매개변수:
      • index (숫자): 선택할 탭의 인덱스
    • 읽기 전용: true
  • 브라우저__닫기
    • 제목: 탭 닫기
    • 설명: 탭 닫기
    • 매개변수:
      • index (숫자, 선택 사항): 닫을 탭의 인덱스입니다. 지정하지 않으면 현재 탭을 닫습니다.
    • 읽기 전용: false
  • 브라우저_생성_플레이라이트_테스트
    • 제목: 극작가 테스트 생성
    • 설명: 주어진 시나리오에 대한 극작가 테스트 생성
    • 매개변수:
      • name (문자열): 테스트의 이름
      • description (문자열): 테스트에 대한 설명
      • steps (배열): 테스트의 단계
    • 읽기 전용: true
  • 브라우저 화면 캡처
    • 제목: 스크린샷 찍기
    • 설명: 현재 페이지의 스크린샷을 찍습니다.
    • 매개변수: 없음
    • 읽기 전용: true
  • 브라우저 화면 마우스 이동
    • 제목: 마우스 이동
    • 설명: 마우스를 주어진 위치로 이동합니다.
    • 매개변수:
      • element (문자열): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • x (숫자): X 좌표
      • y (숫자): Y 좌표
    • 읽기 전용: true
  • 브라우저 화면 클릭
    • 제목: 클릭
    • 설명: 마우스 왼쪽 버튼을 클릭하세요
    • 매개변수:
      • element (문자열): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • x (숫자): X 좌표
      • y (숫자): Y 좌표
    • 읽기 전용: false
  • 브라우저 화면 드래그
    • 제목: 드래그 마우스
    • 설명: 마우스 왼쪽 버튼 드래그
    • 매개변수:
      • element (문자열): 요소와 상호 작용할 수 있는 권한을 얻는 데 사용되는 사람이 읽을 수 있는 요소 설명
      • startX (숫자): 시작 X 좌표
      • startY (숫자): 시작 Y 좌표
      • endX (숫자): 끝 X 좌표
      • endY (숫자): 끝 Y 좌표
    • 읽기 전용: false
  • 브라우저_화면_유형
    • 제목: 텍스트 입력
    • 설명: 텍스트를 입력하세요
    • 매개변수:
      • text (문자열): 요소에 입력할 텍스트
      • submit (부울, 선택 사항): 입력한 텍스트를 제출할지 여부(제출 후 Enter 키 누름)
    • 읽기 전용: false
  • 브라우저_누르기_
    • 제목: 키를 누르세요
    • 설명: 키보드의 키를 누르세요
    • 매개변수:
      • key (문자열): 누르려는 키의 이름 또는 생성할 문자(예: ArrowLeft``a
    • 읽기 전용: false
  • 브라우저 대기
    • 제목 : 기다리다
    • 설명: 텍스트가 나타나거나 사라지거나 지정된 시간이 지날 때까지 기다립니다.
    • 매개변수:
      • time (숫자, 선택 사항): 대기 시간(초)
      • text (문자열, 선택 사항): 기다릴 텍스트
      • textGone (문자열, 선택 사항): 사라질 때까지 기다릴 텍스트
    • 읽기 전용: true
  • 브라우저 파일 업로드
    • 제목: 파일 업로드
    • 설명: 하나 또는 여러 개의 파일을 업로드합니다.
    • 매개변수:
      • paths (배열): 업로드할 파일의 절대 경로입니다. 단일 파일 또는 여러 파일일 수 있습니다.
    • 읽기 전용: false
  • 브라우저_핸들_대화 상자
    • 제목: 대화 처리
    • 설명: 대화 처리
    • 매개변수:
      • accept (boolean): 대화를 수락할지 여부.
      • promptText (문자열, 선택 사항): 프롬프트 대화 상자의 경우 프롬프트의 텍스트입니다.
    • 읽기 전용: false
Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

local-only server

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

비전 모델이나 스크린샷이 필요 없이 구조화된 접근성 스냅샷을 통해 LLM이 웹 페이지와 상호 작용할 수 있도록 하는 모델 컨텍스트 프로토콜 서버입니다.

  1. 주요 특징
    1. 요구 사항
      1. 시작하기
        1. 구성
          1. 사용자 프로필
            1. 구성 파일
              1. 독립형 MCP 서버
                1. 도구

                  Related MCP Servers

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

                  View all related MCP servers

                  MCP directory API

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

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

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