본문 바로가기
프로그램 (PHP,Python)

브라우저를 이해하는 AI: Chrome DevTools MCP로 끝내는 웹 자동화

by 날으는물고기 2025. 11. 8.

브라우저를 이해하는 AI: Chrome DevTools MCP로 끝내는 웹 자동화

728x90

AI 코딩 에이전트가 실제 크롬 브라우저를 열고, DevTools로 성능 추적을 녹화하고, 콘솔·네트워크를 읽고, 버튼 클릭·폼 입력까지 수행한다면? 바로 그걸 가능하게 하는 게 Chrome DevTools MCP(Model Context Protocol) 서버입니다. 공개 프리뷰를 발표한 크롬팀 공식 글과 레퍼런스, 그리고 현업 중심의 훌륭한 사용기 정리를 바탕으로 도입 배경 → 핵심 기능 → 실전 예시 → 설치/연동 → 보안 가이드까지 한 번에 담았습니다.

MCP & Chrome DevTools MCP 한눈에 보기

  • MCP란? LLM이 외부 도구·데이터 소스와 표준 방식으로 통신하도록 만든 오픈 프로토콜. 동일한 문법으로 다양한 도구를 부릴 수 있게 합니다.
  • Chrome DevTools MCP: MCP 서버 형태로, AI 에이전트(Claude, Gemini, Copilot, Cursor 등)가 실제 Chrome을 제어·관찰해 신뢰성 높은 자동화, 깊은 디버깅, 성능 분석을 수행하게 해줍니다.
  • 왜 주목? 기존 ‘대충 추론’이 아니라 실행 결과를 눈으로 확인하며 디버깅/테스트/튜닝을 자동화—개발 효율과 정확도를 끌어올립니다. 현장 사용기에서도 콘솔/네트워크 분석, E2E 자동 시나리오, 접근성 트리 기반 스냅샷이 강점으로 꼽힙니다.

Puppeteer/Playwright MCP vs Chrome DevTools MCP: 뭐가 다른가?

  • 공식 지원: Chrome 팀이 직접 개발·유지 → 최신 DevTools 기능(Performance Insights, Core Web Vitals 등) 즉시 활용 & 호환성 안정성 ↑.
  • 성능 분석 내장: performance_start_trace → stop → analyze_insight로 트레이스/인사이트를 도구 차원에서 제공합니다(타 도구는 보통 수동 구현).
  • 접근성 트리(Accessibility Tree) 기반 스냅샷: 의미론적 요소(“로그인 버튼”)로 UI를 식별 → DOM 클래스명 변경에 테스트 안정성 유지, LLM 토큰 소비도 절감.

핵심 기능 & 코드 스니펫

아래는 GitHub 레퍼런스 기준으로 정리한 대표 도구군과 예시입니다. (실제 호출명 일치)

1. 내비게이션 & 페이지 제어

// 페이지 이동/히스토리/새 탭
await mcp.navigate_page({ url: 'https://example.com' });
await mcp.navigate_page_history({ navigate: 'back' });
await mcp.new_page({ url: 'https://example.com' });

블로그 사용기에서도 동일 패턴을 예시로 제시합니다.

2. 스냅샷 & 스크린샷

// 접근성 트리 기반 스냅샷
const snapshot = await mcp.take_snapshot({ verbose: false });
// 스크린샷
await mcp.take_screenshot({ format:'png', fullPage:true, filePath:'./screen.png' });

접근성 트리 기반이라 LLM이 구조를 이해하기 수월합니다.

3. 사용자 상호작용(Automation)

await mcp.click({ uid: 'button-123' });
await mcp.fill({ uid: 'input-email', value: 'user@example.com' });
await mcp.fill_form({ elements:[{uid:'name', value:'John'}] });

UID는 의미 기반 식별자로 DOM 변화에 강합니다.

4. 콘솔/네트워크 모니터링

const logs = await mcp.list_console_messages({ types:['error','warn'] });
const reqs = await mcp.list_network_requests({ resourceTypes:['xhr','fetch'], pageSize:50 });

필요 시 get_console_message, get_network_request로 상세 스택/헤더/바디까지 조회.

5. 성능 트레이스 & 인사이트

await mcp.performance_start_trace({ reload:true, autoStop:false });
// ... 사용자 플로우 수행
const trace = await mcp.performance_stop_trace();
const insight = await mcp.performance_analyze_insight({ insightName:'LCPBreakdown' });

LCP/CLS 등 Core Web Vitals 중심의 개선 포인트를 자동 도출. 공식 블로그 시나리오와도 일치합니다.

6. 임의 스크립트 실행

const result = await mcp.evaluate_script({
  function: `() => ({ title: document.title, url: location.href })`
});

브라우저 컨텍스트에서 즉시 값 수집/검증에 유용.

300x250

실무 시나리오 — “이럴 때 진가가 폭발”

시나리오 A. 프로덕션 에러 원인 자동 특정

  1. 페이지 접속 → 2) 콘솔 에러 수집 → 3) 에러 상세(스택) → 4) 네트워크 응답 검증 → 5) 스크린샷 첨부 리포트.
    실사용기에서는 가격 필드가 문자열 “1,000원”으로 내려와 JSON 파싱이 깨진 케이스를 5분 내 특정했다고 소개합니다.

시나리오 B. E2E 흐름 + 성능 병목 동시 분석

  • 결제 플로우를 자동화로 실행하며 트레이스 녹화performance_analyze_insightLCP 병목(예: 외부 스크립트 블록) 도출 → 우선순위 개선안 제시.

시나리오 C. UI 회복력 있는 테스트(접근성 트리 기반)

  • 클래스명/DOM 구조가 바뀌어도 “로그인 버튼” 의미 UID로 안정적 클릭/검증 → 테스트 깨짐을 대폭 감소.

설치 & IDE·에이전트 연동(실전)

가장 빠른 시작: MCP 클라이언트 설정에 npx 서버 실행만 추가하면 됩니다.

1. 공통(MCP 클라이언트) 설정

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp@latest"]
    }
  }
}
  • Node.js 20.19+ / 최신 Chrome / npm 필요. @latest로 최신 MCP 서버 사용 권장.

2. 각 환경별 예시

  • Claude Code CLI
    claude mcp add chrome-devtools npx chrome-devtools-mcp@latest
  • VS Code
    code --add-mcp '{"name":"chrome-devtools","command":"npx","args":["chrome-devtools-mcp@latest"]}'
  • Gemini CLI (프로젝트 범위)
    gemini mcp add chrome-devtools npx chrome-devtools-mcp@latest
  • Cursor: Settings → MCP → New MCP Server → 위 JSON 입력.
    (추가: Copilot CLI, JetBrains, Warp, Windsurf, Kiro, Qoder 등도 가이드 제공)

3. 첫 점검 프롬프트

Check the performance of https://developers.chrome.com

정상이라면 브라우저가 열리고 트레이스가 수집됩니다.

4. 고급 옵션

  • 이미 떠 있는 Chrome에 붙기
    --browserUrl 또는 --wsEndpoint 지정(원격 디버깅 문서 참고). 샌드박스 환경 제약 시 유용.

보안·거버넌스 가이드

MCP 서버는 브라우저 인스턴스 내용을 MCP 클라이언트에 노출합니다. 설계·운영·규정 측면 통제가 필수입니다.

① 권한 최소화 & 역할 분리

  • 누가 MCP로 브라우저를 제어할 수 있는지 RBAC 정의.
  • 관리자·개발·테스터 분리, 프로덕션은 제한.

② 민감정보 노출 통제

  • 네트워크/콘솔 수집 시 토큰·세션·PII 마스킹 규칙.
  • 툴 호출은 필터 조건 기본값 적용(예: types:['error','warn'], resourceTypes:['xhr','fetch']).

③ 감사지표 로깅

  • “누가/언제/어떤 페이지/어떤 도구/어떤 결과” 사용했는지 감사 로그 중앙 수집.
  • 실패/예외(스크립트 실행, 파일 업로드 등) 이벤트 별도 경보.

④ 테스트/운영 환경 분리

  • MCP 자동화는 스테이징 우선. 운영 적용 전 승인·릴리즈노트 동반. 공식 가이드는 OS 샌드박스/원격 디버깅 등 제약사항을 명시합니다.

⑤ 자동 수정(코드 변경) 게이트

  • AI가 수정 제안 → PR 자동 생성까지만 허용, 머지는 필수 리뷰.
  • E2E/성능 회귀 테스트 파이프라인 연동.

⑥ 성능·비용 관리

  • 트레이스·스크린샷 등 고비용 작업은 샘플링/쿨다운 정책.
  • 대량 시나리오는 스케줄링·동시성 제한.

⑦ 버전·호환성 관리

  • Chrome/DevTools/MCP 버전 매트릭스와 호환 테스트 주기화.
  • MCP 클라이언트가 샌드박스일 경우 Chrome 기동 권한 이슈 문서화(우회: --browserUrl).

바로 적용하는 “운영 레시피”

레시피 1. “콘솔 에러 0” 데일리 체킹 봇

  1. 사이트 리스트 순회 → navigate_page
  2. list_console_messages({types:['error']})
  3. 에러 있으면 get_console_message로 스택 추출 & 스크린샷 첨부 → 슬랙 전송.

레시피 2. “API 실패 탐지” 네트워크 워치

  • list_network_requests({resourceTypes:['xhr','fetch']}) + 상태코드·도메인 필터로 5xx/권한 오류 즉시 리포트.

레시피 3. “체감 성능” 야간 트레이스

  • 사용자 여정(홈→검색→상품상세→결제) 자동 실행 중 performance_* 수집 → LCP/CLS 기준 레드·옐로우·그린 분류 및 티켓 자동 발행.

트러블슈팅 힌트

  • 브라우저가 안 뜸: 클라이언트 샌드박스(Seatbelt/컨테이너)로 Chrome 기동 실패 → 샌드박스 제외 또는 --browserUrl로 기동 중인 Chrome에 접속.
  • VM↔호스트 원격 디버깅: 포트 포워딩/엔드포인트 불가 시 공식 Troubleshooting 문서 참고.

“눈을 가진 AI”를 팀의 표준 도구로

Chrome DevTools MCP는 에이전트가 직접 보고 만지는 개발을 실현합니다. 현장 경험담이 말하듯, 콘솔/네트워크/접근성 스냅샷/성능 인사이트가 결합된 워크플로는 디버깅과 품질 관리의 판도를 바꿉니다. 이제 보안·거버넌스 체크리스트만 곁들이면, 팀 차원 표준으로 도입하기에 충분합니다.

참고 & 더 읽을거리

  • duck blog: 실무 중심 활용기(콘솔·네트워크·접근성 스냅샷·E2E)와 예제 코드 다수.
  • Chrome 공식 블로그(공개 프리뷰 공지): 배경·사용 시나리오·개발자 친화 사례.
  • GitHub 레포(공식 레퍼런스): 설치, 도구 목록, IDE/에이전트별 설정, Troubleshooting/제약.
728x90
그리드형(광고전용)

댓글