Playwright MCP 실전 가이드: Claude, Codex, Cursor가 브라우저를 직접 제어하게 하기

"Playwright MCP 공식 문서는 이 server가 structured accessibility snapshots를 통해 브라우저 자동화를 노출하며, browser_run_code_unsafe를 RCE-equivalent 고위험 도구로 표시한다고 설명합니다."
.codex/config.toml에 [mcp_servers.playwright]를 한 줄 추가하고 codex를 실행하면 브라우저가 실제로 열립니다. 그런데 AI가 브라우저 도구를 호출하지 않거나, 페이지는 열었지만 내비게이션 바의 버튼을 찾지 못합니다. 이 글에서는 Claude Code, Codex, Cursor 세 client의 전체 설정 절차, 첫 검증 작업의 체크리스트, 그리고 AI에게 함부로 넘기면 안 되는 브라우저 권한을 정리합니다.
Playwright MCP란 무엇인가
Playwright MCP는 Microsoft가 공식 유지보수하는 MCP server입니다. Playwright의 브라우저 자동화 기능을 Model Context Protocol을 통해 AI 코딩 도구에 노출합니다. 핵심 원리는 스크린샷 인식이 아니라 accessibility tree 조작입니다. AI에게 페이지의 구조화된 뷰를 제공해 버튼, 링크, 입력 필드 등 상호작용 가능한 요소를 찾게 합니다.
핵심 기능과 도구 목록
Playwright MCP가 제공하는 도구는 브라우저 자동화의 주요 시나리오를 포괄합니다.
- 내비게이션: URL 열기, 뒤로/앞으로 이동, 새로고침
- 클릭과 입력: 요소 클릭, 폼 입력, 키보드 조작
- 스크린샷과 snapshot: 페이지 스크린샷 촬영, accessibility snapshot 가져오기
- 대화상자와 탭: alert/confirm/prompt 처리, 여러 탭 관리
- 네트워크와 console: 네트워크 요청 확인, console log 캡처
- 저장 상태: cookies, localStorage, sessionStorage 저장 및 복원
이 기능들로 단순한 페이지 클릭부터 복잡한 폼 제출 흐름까지 처리할 수 있습니다.
Playwright CLI/SKILLS와의 차이
Microsoft 공식 README는 두 경로의 선택 기준을 명확히 설명합니다.
- MCP 경로: 지속 상태, 풍부한 introspection, 계속 유지되는 브라우저 컨텍스트가 필요한 상황에 적합합니다. 예를 들면 탐색형 자동화, 자가 복구 테스트, 장시간 작업입니다. 단점은 tool schema와 accessibility tree가 컨텍스트에 들어가 token을 소모한다는 점입니다.
- CLI + SKILLS 경로: 높은 처리량의 코드 워크플로에 적합하며 컨텍스트 사용량이 더 작습니다. 대신 명령줄이나 스크립트로 Playwright를 호출해야 합니다.
이미 Claude Code, Codex, Cursor 같은 MCP 지원 AI 코딩 도구를 쓰고 있다면, Playwright MCP가 기존 워크플로에 브라우저 도구를 붙이는 가장 직접적인 방법입니다.
Browser Use와의 차이
Browser Use는 Python agent loop입니다. Python 코드로 API를 호출하고, agent가 prompt에 따라 브라우저 동작을 결정합니다. Playwright MCP는 다릅니다. agent loop를 제공하지 않고 브라우저 도구 계층만 제공합니다. 언제 브라우저 도구를 호출할지는 Claude Code, Codex, Cursor 같은 기존 MCP client가 판단합니다.
Python 개발자로서 Browser Agent를 빠르게 시작하고 싶다면, AI로 웹페이지를 열고 버튼을 클릭하고 정보를 추출하는 Browser Use 입문 튜토리얼을 먼저 보세요. 이미 MCP client를 쓰고 있고 기존 도구에 브라우저 기능을 연결하고 싶다면, 이 글이 Playwright MCP를 설치하고 검증하고 안전하게 설정하는 데 도움이 됩니다.
테스트 프레임워크의 대체물이 아니다
Playwright MCP는 Playwright 테스트 프레임워크의 대체물이 아닙니다. 탐색형 자동화와 프론트엔드 검수에는 적합하지만, 안정적인 E2E 테스트 스위트는 여전히 Playwright 테스트 프레임워크로 테스트 스크립트를 작성해야 합니다. 테스트에는 결정성, 반복 가능성, 유지보수성이 필요하고 AI의 브라우저 조작은 완전히 통제할 수 없기 때문입니다. 브라우저 모드 테스트에 관심이 있다면 Vitest Browser Mode도 참고할 수 있습니다.
Claude Code에서 Playwright MCP 설정하기
전제 조건
Claude Code에서 Playwright MCP를 실행하려면 Node.js 18+가 필요합니다. Node 버전을 확인합니다.
node --version
18보다 낮다면 먼저 Node.js를 업그레이드해야 합니다.
추가 명령
Claude Code는 MCP 관리 명령을 제공합니다. 프로젝트 루트에서 실행합니다.
claude mcp add playwright npx @playwright/mcp@latest
이 명령은 Playwright MCP server를 Claude Code에 등록합니다. @playwright/mcp@latest를 사용하세요. @executeautomation/playwright-mcp-server 같은 오래된 커뮤니티 패키지명을 그대로 복사하지 마세요.
프로젝트 수준 .mcp.json
Playwright MCP 설정을 팀원과 공유하려면 프로젝트 루트에 .mcp.json을 만들 수 있습니다.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"],
"env": {
"BROWSER_PATH": "/usr/bin/chromium"
}
}
}
}
Claude Code는 프로젝트 수준 .mcp.json을 발견하면 승인 요청을 표시합니다. 프로젝트가 신뢰할 수 없는 MCP server를 끌어오는 일을 막기 위한 안전장치입니다.
환경 변수 확장
.mcp.json은 머신별 경로와 민감한 값에 사용할 환경 변수 확장을 지원합니다.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"],
"env": {
"HOME": "${env:HOME}",
"STORAGE_STATE_PATH": "${env:STORAGE_STATE_PATH}"
}
}
}
}
Tool Search와 출력 token 관리
Claude Code는 기본적으로 MCP Tool Search를 활성화합니다. 도구를 지연 로드해 컨텍스트 사용량을 줄입니다. MCP 출력이 클 때 Claude Code는 token 관리도 적용하며, 기본 최대 출력은 25,000 tokens입니다. AI가 브라우저 도구를 사용하지 않는다면 다음을 확인합니다.
- MCP server가 제대로 시작됐는지 확인합니다(Claude Code 로그 확인)
- Tool Search가 활성화되어 있는지 확인합니다(Claude Code에서는 기본 활성화)
- Node.js 버전이 18 이상인지 확인합니다
Codex에서 Playwright MCP 설정하기
OpenAI Codex는 CLI와 IDE extension 모두에서 MCP servers를 지원하지만, 설정 방식은 Claude Code와 다릅니다.
추가 명령
Codex CLI에는 MCP 관리 명령이 있습니다.
codex mcp add playwright -- npx @playwright/mcp@latest
Codex 명령은 server 이름과 실제 명령을 --로 구분해야 합니다.
설정 파일 위치
Codex MCP 설정은 config.toml에 저장됩니다. 위치는 두 가지입니다.
- 사용자 수준:
~/.codex/config.toml(전역 적용) - 프로젝트 수준: 프로젝트 루트의
.codex/config.toml(해당 프로젝트에만 적용)
CLI와 IDE extension은 같은 설정을 공유합니다.
config.toml 설정 조각
수동 설정 시 config.toml에 다음을 추가합니다.
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
환경 변수를 전달하거나 도구 승인 방식을 조정해야 한다면 다음을 추가합니다.
env_vars = ["HOME", "STORAGE_STATE_PATH"]
approval_mode = "prompt"
도구 승인 모드
Codex는 세 가지 도구 승인 모드를 제공합니다.
approval_mode = "allow": 모든 도구 호출을 자동 실행합니다approval_mode = "prompt": 각 도구 호출 전에 사용자 확인을 요청합니다approval_mode = "deny": 모든 도구 호출을 거부합니다
browser_run_code_unsafe 같은 Playwright MCP 고위험 도구에는 다음 설정을 권장합니다.
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
disabled_tools = ["browser_run_code_unsafe"]
approval_mode = "prompt"
이렇게 하면 고위험 도구가 자동 실행되지 않고, 민감한 동작은 사람의 승인 뒤에 놓입니다.
HTTP server 지원
Codex는 두 종류의 MCP server를 지원합니다.
- STDIO server: 로컬 프로세스 통신입니다. Playwright MCP처럼 로컬 시스템 접근이 필요한 도구에 적합합니다
- HTTP server: bearer token과 OAuth 인증을 지원합니다
Playwright MCP는 STDIO를 사용하므로 기본 설정에서는 HTTP 구성이 필요 없습니다.
Cursor에서 Playwright MCP 설정하기
Cursor의 MCP 설정은 Settings UI에서 합니다. Claude Code와 Codex의 명령줄 방식과 다릅니다.
UI 설정 단계
Playwright 공식 문서 기준 Cursor 설정 절차는 다음과 같습니다.
- Cursor Settings를 엽니다(
Cmd+,또는 Settings 메뉴) - MCP 설정 페이지로 이동합니다(Settings -> MCP)
- “Add new MCP Server”를 클릭합니다
- 설정을 입력합니다.
- Server name:
playwright - Command type:
npx - Command:
@playwright/mcp@latest
- Server name:
표준 파라미터 설정
Cursor의 MCP server 설정은 Playwright MCP의 표준 파라미터를 지원합니다.
--headless: 헤드리스 모드입니다. 개발 단계에서는 headed가 관찰하기 쉽습니다--browser: 브라우저 선택(chrome/firefox/webkit/msedge)--output-dir: 출력 디렉터리 경로--storage-state: 로그인 상태 파일 경로
전체 파라미터 설명은 아래 “표준 설정 파라미터 대조표”를 참고하세요.
설정 참고
Cursor 공식 MCP 문서는 Cursor 공식 문서에서 확인할 수 있습니다. 세부 설정은 Playwright 공식 문서와 Microsoft README를 기준으로 하고, 공식 패키지명 @playwright/mcp@latest를 사용하세요.
표준 설정 파라미터 대조표
Playwright MCP는 브라우저 동작, 보안 경계, 출력 관리를 제어하는 여러 설정 파라미터를 제공합니다.
| 파라미터 | 역할 | 기본값 | 보안 참고 |
|---|---|---|---|
--headless | 브라우저 창을 표시하지 않는 헤드리스 모드 | false (headed) | 개발 단계에서는 브라우저 동작을 볼 수 있는 headed를 권장 |
--browser | 브라우저 종류 선택 | chrome | chrome, firefox, webkit, msedge 선택 가능 |
--allowed-origins | 허용 origin 목록 | 제한 없음 | 보안 경계가 아닙니다. redirects에 영향을 주지 않고 민감한 사이트 접근을 막는 수단이 아닙니다 |
--blocked-origins | 차단 origin 목록 | 없음 | 보안 경계가 아닙니다, 위와 같은 주의가 필요합니다 |
--isolated | 격리 모드, 세션마다 독립 profile 사용 | false | 병렬 client 또는 여러 프로젝트에 권장 |
--storage-state | 로그인 상태 파일 경로 지정 | 없음 | cookies와 localStorage를 저장하므로 실제 계정 사용에 주의 |
--output-dir | 스크린샷, 로그 등 출력 디렉터리 | 없음 | 결과를 찾기 쉽도록 경로 지정 |
--save-session | 세션 상태 저장 | false | persistent profile과 함께 사용 |
--snapshot-mode | accessibility snapshot 모드 | default | snapshot 상세도를 제어 |
--allow-unrestricted-file-access | 제한 없는 파일 접근 허용 | false | 고위험 옵션이므로 신중히 사용 |
--secrets | 환경 변수 또는 파일 기반 secret 설정 | 없음 | 민감 정보 관리에 사용 |
핵심 알림: 공식 문서는 --allowed-origins와 --blocked-origins가 보안 경계가 아니며, redirects에도 영향을 주지 않는다고 명확히 설명합니다. AI가 접근할 수 있는 사이트를 제한해야 한다면 이 두 파라미터에만 의존하면 안 됩니다.
Profile 모드 세 가지 대조표
Playwright MCP는 세 가지 profile 모드를 지원하며, 로그인 상태 저장, 병렬 실행, 보안 경계에 영향을 줍니다.
| 모드 | 로그인 상태 저장 | Profile 경로 | 병렬 지원 | 적합한 상황 | 보안 권장 |
|---|---|---|---|---|---|
| persistent | cookies, localStorage 등을 저장 | macOS: ~/Library/Caches/ms-playwright/mcp-{channel}-{workspace-hash} | 하나의 profile은 동시에 하나의 browser instance만 사용 가능 | AI가 로그인 상태를 기억해야 하는 장시간 작업 | 실제 계정은 권장하지 않으며 테스트 계정부터 시작 |
| isolated | 저장하지 않음, 각 세션 독립 | 임시 디렉터리, 세션마다 자동 정리 | 병렬 client 또는 여러 프로젝트 지원 | 테스트, 탐색, 로그인 상태가 필요 없는 작업 | 운영 환경 기본 선택지로 권장 |
| browser extension | 저장함(브라우저에 따라 다름) | 브라우저 확장 디렉터리 | 브라우저에 따라 다름 | 기존 브라우저 세션에 연결 | 고급 사용법이며 브라우저 확장 보안 모델 이해 필요 |
persistent profile의 제한
하나의 persistent profile은 동시에 하나의 browser instance만 사용할 수 있습니다. 여러 client나 여러 프로젝트가 Playwright MCP를 동시에 사용해야 한다면 다음이 필요합니다.
--isolated모드 사용- 또는 client마다 다른
--user-data-dir설정
macOS의 persistent profile 경로 예시는 다음과 같습니다.
~/Library/Caches/ms-playwright/mcp-chrome-a1b2c3d4
경로의 {workspace-hash}는 프로젝트에 따라 자동 생성되므로, 프로젝트마다 다른 profile을 사용합니다.
로그인 상태와 보안 경계
persistent profile은 cookies, localStorage, sessionStorage를 저장합니다. AI는 브라우저에 저장된 로그인 상태에 접근할 수 있습니다. 실제 계정으로 로그인했다면 개인 데이터, 결제 정보, 계정 설정에 접근할 가능성이 있습니다.
권장 방식:
- 운영 환경에서는
--isolated를 사용해 로그인 상태를 저장하지 않습니다 - AI가 로그인 상태를 다뤄야 한다면 실제 계정이 아니라 테스트 계정을 사용합니다
- AI가 실제 계정에 자동 로그인하거나 결제 페이지에 접근하게 하지 않습니다
로그인 상태 관리는 후속 글인 AI 브라우저 로그인 상태 관리에서 더 깊게 다룹니다. 이 글에서는 경계만 짚습니다.
browser_run_code_unsafe 보안 경고
보안 경고:
browser_run_code_unsafe는 임의의 Playwright 스크립트를 실행할 수 있으며, 공식 문서에서 RCE-equivalent(원격 코드 실행에 준함)로 표시됩니다. 완전히 신뢰하는 MCP clients에서만 활성화하세요. 운영 환경에서는 비활성화하거나 Codex의approval_mode: prompt로 사람의 승인을 강제하는 것이 좋습니다.
Playwright MCP에는 browser_run_code_unsafe라는 고위험 도구가 있습니다. 이 도구는 브라우저 컨텍스트에서 임의의 Playwright 스크립트를 실행할 수 있습니다. 위험성은 명확합니다.
- MCP client가 침해되거나 AI 동작을 통제할 수 없으면, 공격자가 이 도구로 임의 코드를 실행할 수 있습니다
- AI는 cookies, localStorage, sessionStorage, 로그인된 계정의 개인 정보를 포함해 브라우저 안의 모든 데이터를 읽을 수 있습니다
- 브라우저가 결제 페이지나 계정 설정 페이지를 보고 있다면, AI가 민감 데이터를 읽고 유출할 수 있습니다
보안 설정 권장
운영 환경:
-
browser_run_code_unsafe를 비활성화합니다.Codex의
~/.codex/config.toml에 다음을 추가합니다.[mcp_servers.playwright] command = "npx" args = ["@playwright/mcp@latest"] disabled_tools = ["browser_run_code_unsafe"] -
또는 승인 모드를 설정합니다.
[mcp_servers.playwright] command = "npx" args = ["@playwright/mcp@latest"] approval_mode = "prompt"이렇게 하면
browser_run_code_unsafe호출 전에 Codex가 확인 대화상자를 표시하고, 수동 승인이 필요합니다.
개발 환경:
정말 browser_run_code_unsafe가 필요하다면 다음을 지킵니다.
- 로컬 개발 환경에서만 활성화하고, 운영 환경이나 실제 계정에서는 사용하지 않습니다
- 실행할 스크립트 내용을 완전히 이해했는지 확인합니다
- AI가 스크립트를 자동 생성해 곧바로 실행하게 하지 말고, 직접 작성한 스크립트를 AI가 실행하게 합니다
초보자에게는 권장하지 않음
Playwright MCP를 처음 접한다면 browser_run_code_unsafe는 권장하지 않습니다. 먼저 browser_click, browser_navigate, browser_screenshot 같은 더 안전한 Playwright MCP 도구를 사용하세요. 이 도구들은 경계가 명확하고 임의 코드를 실행하지 않습니다.
MCP Tools 보안 체크리스트
MCP 프로토콜은 AI가 외부 도구를 호출할 수 있게 합니다. 하지만 “MCP를 연결했다”는 말은 “AI가 무엇이든 자동으로 하게 둔다”는 뜻이 아닙니다. client 측과 server 측 양쪽에서 보안 경계를 제어해야 합니다.
client 측 보안 권장
-
민감한 작업에는 사용자 확인 요청:
browser_run_code_unsafe호출, 결제 페이지 접근, 계정 설정 변경, 데이터 삭제 전에는 사용자 확인을 요청합니다. 이런 고위험 작업을 AI가 자동 실행하게 두지 마세요. -
호출 전 tool inputs 표시: AI가 실행하려는 구체적 파라미터를 사용자에게 보여줍니다. 예를 들어 AI가 버튼을 클릭하려 한다면 selector나 좌표를 보여주고 올바른지 확인합니다.
-
악의적 데이터 유출 방지: 도구 출력을 확인해 비밀번호, token, 개인 정보 같은 민감한 정보가 AI에 의해 읽히고 외부로 전송되지 않도록 합니다. 도구가 민감 데이터를 반환했다면 AI가 이를 로그에 쓰거나 외부 server로 보내게 하지 마세요.
-
timeout 설정: 브라우저 작업은 멈출 수 있고 리소스를 소모하거나 다른 작업을 막을 수 있습니다. 각 tool call에 30초 같은 합리적인 timeout을 설정하고 초과 시 자동 취소합니다.
-
tool usage 기록: 감사와 추적을 위해 작업 로그를 남깁니다. 로그에는 도구 이름, 호출 시간, 입력 파라미터, 출력 결과, 사용자 승인 기록을 포함합니다.
-
tool results 검증: 스크린샷, console log, 네트워크 요청이 기대와 일치하는지 확인합니다. AI가 “클릭 성공”이라고 보고했지만 스크린샷에서 버튼이 눌리지 않았다면 문제를 더 확인해야 합니다.
server 측 보안 권장
직접 MCP server를 개발한다면(Playwright MCP는 공식 server이므로 직접 만들 필요는 없습니다), 다음을 지킵니다.
-
입력 검증: URL, selector, 입력 내용을 검증해 injection 공격을 막습니다. AI가 악의적 URL이나 XSS payload를 그대로 넘기게 하지 마세요.
-
접근 제어: 접근 가능한 도메인, 파일 경로, 브라우저 기능을 제한합니다. 예를 들어 내부 IP나 민감한 경로 접근을 막습니다.
-
rate limit 적용: AI가 도구를 너무 자주 호출해 리소스를 고갈시키거나 대상 사이트에서 차단되지 않도록 합니다. 예를 들어 분당 최대 10회 같은 합리적인 제한을 둡니다.
-
출력 정리: AI에게 반환하기 전에 민감 정보를 제거합니다. 예를 들어 전체 cookie 문자열을 반환하지 말고 필요한 부분만 반환합니다.
첫 검증 작업과 승인 체크리스트
설정이 끝나면 간단한 작업으로 Playwright MCP가 제대로 연결됐는지 검증합니다.
작업 예시
AI에게 로컬 preview 페이지 http://localhost:4321을 열고, 내비게이션 메뉴를 클릭하고, 스크린샷을 찍고, console error를 보고하게 합니다.
단계별 절차:
-
Playwright MCP가 Claude Code, Codex 또는 Cursor client에 추가되어 있는지 확인합니다
-
Astro나 Next.js 같은 로컬 개발 서버를 시작하고
http://localhost:4321에 접근 가능한지 확인합니다 -
Claude Code/Codex/Cursor에 다음 prompt를 입력합니다.
http://localhost:4321을 열고, 내비게이션 메뉴의 "글"을 클릭한 뒤 스크린샷을 찍고 페이지에 console error가 있는지 보고하세요. -
AI가 브라우저 도구를 호출하는지, 브라우저가 시작되는지, 페이지가 열리는지 관찰합니다
승인 체크리스트
| 점검 항목 | 기대 결과 | 확인 방법 |
|---|---|---|
| 브라우저 시작 여부 | headed mode에서는 브라우저 창이 열리고, headless에서는 프로세스가 시작됨 | UI 또는 프로세스 관리자 확인 |
| MCP server 연결 여부 | client log에 “Connected to MCP server” 표시 | client log 확인 |
| accessibility snapshot 반환 여부 | AI가 내비게이션 메뉴를 찾고 클릭 가능 | AI 출력에 클릭 동작 설명 포함 |
| 도구 호출 승인 필요 여부 | 설정에 따라 다르며 Codex는 승인 대화상자를 표시할 수 있음 | client가 승인을 요청하는지 관찰 |
| 출력 디렉터리와 로그 추적 가능 여부 | 스크린샷, console log 등이 --output-dir에 저장됨 | 지정 디렉터리 확인 |
실패 상황 진단
AI가 브라우저 도구를 호출하지 않음:
- MCP server가 제대로 추가됐는지 확인합니다(client log 확인)
- client가 MCP Tool Search를 지원하는지 확인합니다(Claude Code는 기본 활성화)
- Node.js 버전이 18 이상인지 확인합니다
브라우저는 열리지만 버튼을 찾지 못함:
- Playwright MCP는 screenshot이 아니라 accessibility tree를 조작합니다. 페이지에 시맨틱 라벨이나 ARIA 속성이 부족하면 AI가 인식하지 못할 수 있습니다
- 페이지의 HTML 구조를 확인하고 버튼에 accessible label 또는 role이 있는지 확인합니다
- 또는
--snapshot-mode파라미터로 snapshot 상세도를 조정합니다
브라우저가 시작되자마자 닫힘:
- headless mode이거나 스크립트 실행이 끝났을 수 있습니다
- client log를 확인해 브라우저가 정상적으로 시작되고 종료됐는지 봅니다
- headed mode를 사용한다면 AI가 완료 보고를 할 때까지 브라우저 창이 열려 있어야 합니다
Playwright CLI/SKILLS와의 선택 기준
Microsoft 공식 README는 coding agents의 높은 처리량 코드 작업에서는 CLI + SKILLS가 더 적합할 수 있다고 설명합니다. MCP는 tool schema와 accessibility tree를 컨텍스트에 넣어 token을 사용하기 때문입니다. MCP는 지속 상태, 풍부한 introspection, 계속 유지되는 브라우저 컨텍스트가 필요한 탐색형 자동화, 자가 복구 테스트, 장시간 작업에 더 적합합니다.
시나리오 대조표
| 시나리오 | Playwright MCP 권장 | Playwright CLI + SKILLS 권장 |
|---|---|---|
| 탐색형 자동화, 자가 복구 테스트 | 예, 적합 | 아니요, 부적합 |
| 지속 브라우저 컨텍스트가 필요한 장시간 작업 | 예, 적합 | 아니요, 부적합 |
| 높은 처리량의 코드 워크플로 | 아니요, 컨텍스트 사용량이 큼 | 예, 적합 |
| 최소 컨텍스트 사용량이 필요 | 아니요, 부적합 | 예, 적합 |
| 이미 Claude Code/Codex/Cursor 같은 MCP client를 사용 중 | 예, 적합 | 아니요, 부적합 |
이 글에서는 SKILLS의 구체적 사용법을 다루지 않습니다. 후속 글에서 Codex 브라우저 검증 실전을 다룹니다.
정리와 다음 단계
이 글에서는 Claude Code, Codex, Cursor 세 client의 Playwright MCP 설정, 첫 검증 작업 체크리스트, 그리고 보안 경계를 다뤘습니다. 핵심은 browser_run_code_unsafe의 RCE 위험, Profile 모드의 로그인 상태 저장, --allowed-origins가 보안 경계가 아니라는 점입니다.
설정 차이 요약
- Claude Code:
claude mcp add명령 또는 프로젝트 수준.mcp.json을 사용하며, Tool Search는 기본 활성화입니다 - Codex:
codex mcp add명령 또는config.toml을 사용하며, approval_mode로 고위험 도구를 제어할 수 있습니다 - Cursor: Settings UI를 통해 설정하며, 앞의 두 도구와 절차가 다릅니다
다음 단계 제안
- 도구 선택 비교가 필요하다면: Browser Use vs Stagehand vs Playwright MCP: 2026년 AI 브라우저 도구 선택 가이드
- 로그인 상태 관리가 필요하다면: AI 브라우저 로그인 상태 관리
- 프론트엔드 테스트가 필요하다면: Playwright 프론트엔드 테스트와 검증
- Codex 브라우저 검증이 필요하다면: Codex 브라우저 검증 실전
- 관리형 인프라가 필요하다면: 관리형 브라우저 인프라
- 보안 설계가 필요하다면: AI 브라우저 보안과 승인 설계
Playwright MCP를 막 설정했다면 먼저 localhost:4321 검증 작업을 한 번 실행하세요. 브라우저가 시작되고, AI가 도구를 호출하며, 스크린샷이 지정 디렉터리에 출력되는지 확인합니다. 문제가 있다면 FAQ 순서대로 진단하고 Node.js 버전, client log, MCP server 연결 상태를 확인하세요.
Playwright MCP 첫 연결 검증 절차
공식 Playwright MCP server를 MCP client에 연결하고, 저위험 페이지에서 브라우저, snapshot, 동작 결과, 로그를 검증합니다.
- 1
Step 1: Node.js 확인
터미널에서 node --version을 실행하고 Node.js 버전이 18 이상인지 확인합니다. - 2
Step 2: MCP server 추가
사용하는 client에 따라 claude mcp add, codex mcp add 또는 Cursor MCP 설정 페이지를 사용하고, 공식 패키지명 @playwright/mcp@latest를 지정합니다. - 3
Step 3: 저위험 페이지 준비
처음에는 공개 demo나 로컬 preview 페이지를 사용합니다. 기본 계정, 관리자 화면, 결제 페이지로 바로 시작하지 마세요. - 4
Step 4: AI에게 동작 요청
AI에게 페이지를 열고, 관찰 가능한 클릭이나 입력을 수행하고, 스크린샷을 찍고, console error를 보고하라고 요청합니다. - 5
Step 5: 결과 확인
server가 연결되어 있고, accessibility snapshot이 요소를 반환하며, 페이지 결과가 보이고, 스크린샷과 로그를 추적할 수 있는지 확인합니다. - 6
Step 6: 권한 좁히기
작업에 따라 isolated profile, 테스트 계정, disabled_tools 또는 approval mode를 사용해 실제 로그인 상태를 모델에 넘기지 않도록 합니다.
FAQ
Playwright MCP란 무엇이며 Playwright와 어떤 관계인가요?
Playwright MCP와 Browser Use 중 무엇을 먼저 배워야 하나요?
MCP를 추가했는데 브라우저 도구가 보이지 않는 이유는 무엇인가요?
브라우저는 열리는데 AI가 버튼을 찾지 못하는 이유는 무엇인가요?
headed와 headless 중 무엇을 선택해야 하나요?
persistent profile, isolated, storage state는 무엇이 다른가요?
browser_run_code_unsafe는 왜 위험한가요?
Playwright MCP는 로그인 상태, Cookie, CAPTCHA를 다룰 수 있나요?
Playwright MCP가 Playwright 테스트 스크립트를 대체할 수 있나요?
--allowed-origins로 AI가 방문할 수 있는 사이트를 제한할 수 있나요?
4분 읽기 · 게시일: 2026년 9월 4일 · 수정일: 2026년 9월 4일



댓글
GitHub로 로그인하여 댓글을 남기세요