DEEP DIVE · TRENDSHIFT #3

chrome-devtools-mcp — 코딩 에이전트에게
크롬 개발자도구를 통째로 쥐여주는 MCP 서버

Google이 직접 만든 Apache-2.0 오픈소스. Claude·Gemini·Cursor·Copilot이 살아있는 크롬 탭을 클릭하고, 네트워크를 들여다보고, 성능 트레이스를 뜨고, Lighthouse 감사를 돌릴 수 있게 해주는 MCP 서버 1.0.

목차
  1. 한 줄 요약
  2. 왜 지금 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 하드웨어/시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1한 줄 요약

코딩 에이전트가 실제 크롬 탭을 운전하게 만드는 표준 통로

한 줄로

"내 AI 비서한테 크롬 개발자도구(F12)를 통째로 손에 쥐여준다"

chrome-devtools-mcp는 코딩 에이전트(Claude·Gemini·Cursor·Copilot 등)가 실제로 켜져 있는 크롬 브라우저를 직접 조작하고, 그 안을 들여다보고, 성능을 측정할 수 있게 해주는 MCP 서버다. 즉 LLM이 "이 사이트 느린데 왜 그런지 봐줘"라고 하면, 진짜로 크롬 탭을 열고, 트레이스를 뜨고, 네트워크 요청을 분석해서 "LCP 3.2초의 범인은 fonts.gstatic.com에서 받는 470KB의 한글 폰트"라고 답할 수 있다.

Google이 직접 운영하는 공식 레포(ChromeDevTools/chrome-devtools-mcp)이고, Apache-2.0, v1.0.1, npm 한 줄로 설치되는 상태다.

용어 풀이
MCP (Model Context Protocol)
Anthropic이 2024년에 제안한 표준으로, "AI 모델 ↔ 외부 도구" 사이의 통신 규약이다. USB-C 같은 거라고 보면 된다. MCP를 구현한 서버는 어느 LLM/에이전트(클로드든 제미나이든 커서든)와도 동일하게 연결된다.
용어 풀이
Chrome DevTools / Puppeteer / CDP
Chrome DevTools는 F12 누르면 뜨는 그 개발자도구다. CDP(Chrome DevTools Protocol)는 그 도구가 크롬 내부와 통신하는 프로토콜이고, Puppeteer는 그 CDP를 Node.js에서 편하게 부르는 라이브러리다. 이 셋이 chrome-devtools-mcp의 엔진이다.

2왜 지금 주목받는가

TrendShift 3위 · "에이전트가 실제 브라우저를 다룬다"는 흐름의 정점

TrendShift 일간 3위(2026-05-22 기준, 543점). 한 줄로 말하면 "AI 코딩 비서가 더 이상 코드만 읽지 않고 실제 화면을 본다"는 흐름의 결정판이다. 2026년 들어 등장한 비슷한 결의 도구들 — browser-use, claude-in-chrome, playwright-mcp — 중에서도 이 레포가 가장 빠르게 성장하는 데에는 이유가 있다.

CASE 1 · 만든 사람의 정체성

"크롬 개발자도구 팀이 직접 만든 거"

만든 곳이 Google의 Chrome DevTools 팀이다. 즉 devtools-frontend, Lighthouse, CrUX(Chrome User Experience Report) API를 만든 사람들이 그 도구를 LLM이 쓸 수 있는 형태로 다시 노출한 것이다. 다른 브라우저 자동화 MCP들이 "Puppeteer 래퍼"라면, 이건 "DevTools 본체에서 분기된 도구"다.

CASE 2 · 48개 도구의 카테고리 설계

"입력 / 탐색 / 에뮬레이션 / 성능 / 네트워크 / 디버깅 / 메모리 / 확장프로그램" — 사람 개발자가 쓰는 그대로

도구 48개(기본 노출 39개)를 F12 패널 구조와 똑같이 묶었다. click·drag·fill·fillForm·hover·pressKey·typeText·uploadFile 같은 입력 10개, navigate·new_page 같은 탐색 6개, emulate(모바일/네트워크) 2개, performance_start_trace·performance_stop_trace 같은 성능 3개, list_network_requests 같은 네트워크 2개, evaluate_script·get_console_message·lighthouse_audit 같은 디버깅 8개, 메모리 8개, 확장프로그램 5개(기본 비활성). LLM은 사람이 DevTools를 쓰던 멘탈 모델을 그대로 가져다 쓰면 된다.

CASE 3 · 모든 에이전트 클라이언트와 호환

"클로드 코드, 커서, 제미나이, 코파일럿, Codex, Warp, JetBrains, Windsurf, Cline, Opencode... 다 된다"

README 한 페이지에 20+ MCP 클라이언트별 설치 명령이 적혀 있다. 표준(MCP)을 잘 따랐기 때문에 가능한 일이고, 그래서 모든 코딩 에이전트 진영이 "이거 일단 깔자"가 된다. TrendShift 점수가 빠르게 오르는 이유.

CASE 4 · Claude Code 플러그인 마켓플레이스 등록

"/plugin install chrome-devtools-mcp 한 줄"

Claude Code에서는 단순 MCP가 아니라 Plugin(MCP + Skills)으로 설치할 수 있다. 즉 "어떻게 쓰는지"에 대한 한국어/영어 가이드까지 같이 깔리는 거다. 이게 단순 도구가 아니라 "사용법까지 LLM에 주입되는 패키지"라는 시그널.

경쟁 제품 대비 장점

도구강점약점
chrome-devtools-mcp (이 레포)Google 공식 · DevTools 본가 · Lighthouse·CrUX 직결크롬 전용 (파이어폭스/사파리 X)
playwright-mcp크로스 브라우저 (Chromium·Firefox·WebKit)성능 트레이스·Lighthouse 분석은 외부 도구 별도
browser-use비전 기반 — 사이트 디자인이 바뀌어도 안정토큰 비용 큼 (스크린샷 매번 전송)
claude-in-chrome익스텐션 — 로그인된 내 크롬을 그대로 씀Anthropic 클로드 전용
한마디로
"성능 분석·디버깅이 주된 목적이면 chrome-devtools-mcp, 크로스브라우저 e2e면 playwright-mcp"

이 둘은 경쟁이라기보다는 역할이 다르다. 그래서 둘 다 깔아두는 사람도 많다.

3기술 스택 전체 지도

package.json·rollup·CDP까지 — "Google이 직접 쓰는 도구"의 풀스택

런타임 · 코어

스택버전역할
Node.js20.19+ / 22.12+ / 23+MCP 서버를 실행하는 런타임. 사용자 머신에 npm으로 깔린다.
TypeScript6.0.2전체 코드. tsc로 컴파일 후 rollup 번들링
@modelcontextprotocol/sdk1.29.0MCP 표준 구현체 (Anthropic 공식 SDK). 도구 등록·JSON-RPC stdio 처리
puppeteer25.0.4Chrome을 띄우고 CDP로 조종하는 라이브러리
chrome-devtools-frontend1.0.1631386실제 DevTools UI 코드의 인사이트·트레이스 분석 로직을 가져다 씀
lighthouse13.3.0웹페이지 자동 감사 도구 (성능·SEO·접근성 점수)
용어 풀이
--experimental-strip-types
Node.js 22.6부터 들어온 옵션. "빌드 없이 .ts 파일을 그대로 실행"해주는 기능이다. 타입만 떼고 바로 돌린다. chrome-devtools-mcp는 이 방식 대신 tsc → rollup 표준 빌드 파이프라인을 사용한다.

빌드 · 배포

스택역할
tscTS → JS 컴파일 (배포 번들용)
rollup 4 + plugin-commonjs/json/node-resolve여러 모듈을 단일 파일로 묶어 npm 배포 — npm i -g chrome-devtools-mcpnpx로 바로 실행되게 함
rollup-plugin-license의존성 라이선스 자동 수집·고지 (오픈소스 컴플라이언스)
eslint 9 + prettier 3 + @stylistic코드 스타일
sinon 22스파이·스텁·모킹 — 테스트에서 Puppeteer를 가짜로 만든다

에이전트 통합 · 평가

스택역할
@google/genai 2.0Gemini API SDK — npm run eval에서 Gemini로 도구 동작을 자동 평가하는 회귀 테스트
.claude-plugin/plugin.jsonClaude Code 플러그인 매니페스트 — /plugin install로 깔리는 패키지 명세
CrUX API 연동Chrome User Experience Report — 진짜 사용자의 실측 LCP/FID/CLS를 비교 데이터로 가져온다
비유로 이해하기

이 레포는 "Puppeteer라는 자동차 + DevTools라는 계기판 + Lighthouse라는 정비소 + CrUX라는 도로 통계"를 하나로 묶어 LLM이 부를 수 있는 48개 버튼으로 만든 패키지다.

사람 개발자가 F12를 누를 때 머릿속에서 일어나는 일 — "성능 탭 → 녹화 → 트레이스 보고 → LCP 원인 추정" — 을 그대로 도구 시퀀스로 노출했다.

4아키텍처 심화 분석

stdio JSON-RPC · CDP · Puppeteer가 만나는 4-layer 구조

전체 시스템 구조도

┌─────────────────────────────────────────────────────────────────┐ │ 코딩 에이전트 (Claude Code · Cursor · Gemini CLI · Copilot...) │ │ "이 페이지 LCP 원인 알려줘" │ └────────────────────────┬────────────────────────────────────────┘ │ MCP (stdio · JSON-RPC 2.0) │ tools/list, tools/call ▼ ┌─────────────────────────────────────────────────────────────────┐ │ chrome-devtools-mcp 서버 (Node.js, npx로 실행) │ │ │ │ ┌─────────────┐ ┌──────────────┐ ┌───────────────────────┐ │ │ │ MCP SDK │ │ Tool Router │ │ Category Filter │ │ │ │ (stdio) │→ │ click,nav,… │← │ --categoryPerformance │ │ │ └─────────────┘ └──────┬───────┘ └───────────────────────┘ │ │ │ │ │ ┌──────────────┼──────────────┐ │ │ ▼ ▼ ▼ │ │ ┌──────────────┐ ┌──────────────┐ ┌────────────────┐ │ │ │ Browser Pool │ │ Trace Engine │ │ Lighthouse │ │ │ │ (puppeteer) │ │ (devtools-fr)│ │ Runner │ │ │ └──────┬───────┘ └──────┬───────┘ └────────┬───────┘ │ └─────────┼────────────────┼──────────────────┼───────────────────┘ │ CDP (WS) │ trace.json │ HTML report ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ Google Chrome (사용자 머신 또는 --browserUrl로 원격 연결) │ │ ─ user-data-dir: ~/.cache/chrome-devtools-mcp/chrome-profile │ │ ─ DevTools Protocol 노출 (포트 9222 자동 / 수동 선택) │ └────────────┬────────────────────────────────────────────────────┘ │ 트레이스 URL 일부 ▼ ┌─────────────────────────────────────────────────────────────────┐ │ Chrome UX Report API (CrUX) — 실측 LCP/FID/CLS 비교 데이터 │ └─────────────────────────────────────────────────────────────────┘

핵심 설계 패턴 1 · MCP 서버 = "LLM-callable 함수의 카탈로그"

MCP 서버는 본질적으로 JSON-RPC over stdin/stdout이다. 클라이언트(에이전트)가 tools/list를 부르면 서버가 등록된 도구의 JSON 스키마를 응답한다. 에이전트는 그 스키마를 LLM 프롬프트에 함수 선언으로 넣고, LLM이 도구를 부르겠다고 하면 tools/call로 다시 서버에 요청한다.

// MCP 한 사이클 (개념)
client → { jsonrpc:"2.0", method:"tools/list", id:1 }
server ← { tools:[ {name:"click", inputSchema:{...}}, ... 48개 ] }

client → { method:"tools/call", params:{
            name:"performance_start_trace",
            arguments:{ url:"https://example.com" } }, id:2 }
server ← { content:[{ type:"text", text:"Trace recording..." }] }

핵심 설계 패턴 2 · Token-Optimized — "요약을 돌려준다"

이 프로젝트의 design-principles.md에 적혀 있는 한 줄: "LCP was 3.2s"가 "50k lines of JSON"보다 낫다.

퍼포먼스 트레이스 원본은 수십 MB짜리 JSON인데, LLM 컨텍스트에 그걸 통째로 던지면 가격 폭탄 + 의미 추출 실패다. 그래서 devtools-frontend의 분석 로직을 가져다가 "LCP는 X.Xs · 원인은 Y 리소스 · 개선책 Z" 같은 의미 단위 요약을 만들어서 돌려준다. 트레이스 원본은 파일로 저장하고 경로만 알려준다.

설계 원칙
Reference over Value

스크린샷·트레이스·동영상 같은 무거운 자산은 raw 데이터를 절대 응답에 안 넣고 파일 경로(또는 resource URI)만 반환한다. LLM 컨텍스트를 깨끗하게 유지하는 핵심 트릭이다.

핵심 설계 패턴 3 · Small, Deterministic Blocks

"한 번에 사이트 분석 다 해줘" 같은 매직 버튼은 의도적으로 안 만든다. 대신 click·screenshot·evaluate_script 같은 작은 결정적 블록을 늘어놓고, LLM이 그걸 조립하게 한다. 그래야 LLM이 중간 결과를 보고 다음 수를 결정할 수 있다(추론 가능성).

핵심 설계 패턴 4 · 카테고리 토글로 도구 풀 축소

--categoryEmulation=false, --categoryPerformance=false, --categoryNetwork=false, --slim 같은 플래그로 노출 도구 수를 줄일 수 있다. LLM은 도구가 많을수록 잘못 선택할 확률이 커지기 때문에 "이번 작업엔 안 쓸 도구는 아예 숨긴다"는 게 정석.

용어 풀이
--slim
전체 도구 → 3개로 줄인다. navigate + screenshot + evaluate만 노출. "그냥 페이지 한번 열어보고 끝낼 거"라면 이걸로 충분하다.

핵심 설계 패턴 5 · 두 가지 브라우저 연결 모드

모드 A · MCP가 크롬을 직접 띄움 (기본)

npx로 서버가 뜨고, 도구를 부르는 순간 Puppeteer가 새 크롬을 launch한다. user-data-dir은 ~/.cache/chrome-devtools-mcp/chrome-profile-stable에 영구 보관. 격리가 필요하면 --isolated로 임시 디렉토리 사용.

모드 B · 이미 떠 있는 내 크롬에 연결

--browserUrl=http://127.0.0.1:9222 또는 Chrome 144+의 --autoConnect 사용. 로그인된 내 크롬을 그대로 쓰고 싶거나, MCP가 샌드박스 안에 있어 새 브라우저를 못 띄울 때 이 모드를 쓴다. 보안 주의 — 디버깅 포트는 같은 머신의 모든 앱에 열려 있다.

보안 경고
"브라우저 인스턴스 전체가 LLM에게 노출된다"

READMD가 명시한다 — "chrome-devtools-mcp exposes content of the browser instance to the MCP clients". 즉 로그인 세션·쿠키·자동완성 데이터까지 LLM 클라이언트가 다 볼 수 있다. 민감한 사이트가 열려 있는 프로필을 그대로 붙이지 말 것. --isolated가 안전한 기본값이다.

5디렉토리 구조 해부

npm 패키지로 배포되는 단일 서버 레포

chrome-devtools-mcp/ ├── src/ ← TypeScript 소스 │ ├── bin/ │ │ ├── chrome-devtools-mcp.ts ← MCP 서버 진입점 (stdio JSON-RPC) │ │ └── chrome-devtools.ts ← 일반 CLI 진입점 (테스트용) │ ├── tools/ ← 도구 핸들러 (플랫 파일 구조) │ │ ├── input.ts (click, drag, fill, fillForm, hover, pressKey...) │ │ ├── pages.ts (navigate, new_page, list_pages...) │ │ ├── emulation.ts (emulate, resize_page) │ │ ├── performance.ts (start_trace, stop_trace, analyze_insight...) │ │ ├── network.ts (list_network_requests, get_network_request) │ │ ├── script.ts (evaluate_script, get_console_message...) │ │ └── slim/ ← Slim 모드 도구 (3개) │ ├── browser.ts ← Puppeteer 어댑터 + 브라우저 풀 │ └── index.ts ← MCP SDK 초기화 + 도구 라우터 ├── docs/ │ ├── tool-reference.md ← 전체 도구의 자동 생성 레퍼런스 │ ├── slim-tool-reference.md │ ├── design-principles.md ← 이 프로젝트의 7원칙 │ ├── troubleshooting.md │ └── debugging-android.md ← Android 크롬 원격 디버깅 ├── scripts/ ← 빌드·평가·메트릭 자동화 │ ├── generate-cli.ts ← CLI 옵션 자동 동기화 │ ├── generate-docs.ts ← README/tool-reference 자동 생성 │ ├── update-lighthouse.ts │ ├── eval_gemini.ts ← Gemini로 도구 회귀 테스트 │ └── count_tokens.ts ← 도구 설명 토큰 비용 측정 ├── tests/ ← 스냅샷 + sinon 기반 테스트 ├── .claude-plugin/ │ └── plugin.json ← Claude Code 플러그인 매니페스트 ├── rollup.config.mjs ← 단일 파일 번들링 ├── package.json ← 위에서 본 그 매니페스트 └── CHANGELOG.md

특이한 점들

6학습 포인트 (기술별)

이 한 레포에서 뽑아 쓸 수 있는 6가지 학습 갈래

① MCP — Model Context Protocol 표준

이 레포는 "MCP 서버 잘 만든 모범 사례"로 그 자체가 교과서다. @modelcontextprotocol/sdk 사용법, JSON-RPC 흐름, 도구 등록·카테고리·옵션 노출 패턴이 다 들어있다.

실습 아이디어

나만의 MCP 서버를 하나 만들어보자. 예: "내 Notion 페이지를 읽고 쓰는 MCP". tools/list·tools/call 두 메서드만 구현하면 시작이다. 이 레포의 src/index.ts를 템플릿으로 쓰면 30분 만에 동작한다.

② Puppeteer + CDP — "헤드리스가 아닌 진짜 브라우저 자동화"

Puppeteer를 단순 페이지 자동화가 아니라 "DevTools Protocol을 직접 부르는 도구"로 쓰는 법을 본다. page.evaluate(), page.tracing.start(), cdpSession.send('Network.enable') 같은 저수준 API가 어떻게 LLM-callable 도구로 매핑되는지.

실습 아이디어

Puppeteer만으로 "특정 URL의 LCP를 측정해서 콘솔에 출력"을 만들어보자. page.tracing → trace.json → chrome-devtools-frontend의 인사이트 모듈로 분석하는 파이프라인을 따라가본다.

③ Lighthouse 자동 감사

lighthouse_audit 도구는 Lighthouse 13.3을 내부 모듈로 호출한다. CLI 없이 Node 안에서 audit을 돌리고 JSON 결과를 받는 방법, 그리고 그 JSON에서 LLM이 쓸 만한 요약을 추출하는 방법을 익힐 수 있다.

④ TypeScript + tsc + Rollup 빌드 파이프라인

실제 빌드 워크플로: tsc로 src/**/*.tsbuild/에 컴파일한 뒤 rollup으로 단일 파일로 번들링해 npm 배포한다 (npm run build = tsc && node scripts/post-build.ts). Node 22.6+의 --experimental-strip-types는 이 프로젝트가 채택한 패턴이 아니다. "컴파일 → 번들링 → 배포"의 표준적인 npm 패키지 파이프라인을 잘 따르고 있다.

⑤ Rollup으로 단일 파일 npm 패키지 만들기

rollup-plugin-license로 라이선스 자동 수집, plugin-node-resolve로 의존성 인라이닝. npx chrome-devtools-mcp@latest 한 줄로 모든 게 돌아가는 이유가 여기 있다.

⑥ Token-Optimized API 설계 철학

이건 코드보다도 docs/design-principles.md 한 페이지가 본체다. "Reference over Value", "Self-Healing Errors", "Progressive Complexity" 같은 원칙들은 MCP 서버뿐 아니라 모든 LLM-facing API 설계에 그대로 적용된다.

핵심 인사이트
"LLM이 호출할 API는 사람용 API와 다르게 설계해야 한다"

요약 우선, 무거운 자산은 reference, 에러는 self-healing(고치는 법 포함), 작은 결정적 블록으로 쪼개기. 이 원칙은 자기 회사 내부 도구를 만들 때도 똑같이 쓸 수 있다.

7하드웨어/시스템 요구사항

로컬 머신에서 돌리는 가벼운 도구 — 단, Chrome이 떠야 한다

요소요구사항비고
OSmacOS / Linux / Windows3개 다 공식 지원. Windows는 cmd /c 래핑 필요
Node.js20.19+ / 22.12+ / 23+최신 maintenance LTS
Chromecurrent stable 이상Chrome for Testing도 OK. 다른 Chromium 파생(Edge, Brave...)은 보장 안 함
npm최신npx가 동작해야 함
메모리크롬 1탭 + Node 서버대략 500MB~1GB. 트레이스 뜰 때 일시적으로 더 씀
네트워크npm 레지스트리 + (선택) CrUX API--no-performance-crux로 CrUX 끄기 가능
ffmpeg (선택)실험 스크린캐스트 쓰면 필요--experimentalScreencast
디스크user-data-dir 수십~수백 MB~/.cache/chrome-devtools-mcp/에 프로필 영구 보관

샌드박스/원격 환경 주의

샌드박스(Docker, devcontainer, 원격 SSH 머신, VM) 안에서 돌릴 때는 크롬 자체를 띄울 수 없는 경우가 많다. 이때는 --browserUrl로 호스트의 크롬에 붙이는 방식을 써야 한다. README의 "VM ↔ host 포트 포워딩" 트러블슈팅을 미리 읽어두자.

8직접 해볼 수 있는 실습 과제

난이도 ★~★★★★★ · 손이 더러워질수록 배우는 게 많다

난이도 ★ · 30분

실습 1 · 일단 깔고 첫 명령어 돌려보기

Claude Code(또는 Cursor·Gemini CLI 아무거나)에 chrome-devtools-mcp 설치하고, 첫 프롬프트 "Check the performance of https://developers.chrome.com"을 그대로 입력. 크롬이 자동으로 뜨고 트레이스 결과가 나오는 것 확인.

배우는 것: MCP 클라이언트 설정 위치, 첫 도구 호출이 어떻게 일어나는지의 체감.

난이도 ★★ · 1~2시간

실습 2 · 내 사이트 성능 자동 리포트 만들기

본인 블로그/포트폴리오 URL을 줘서 LLM에게 시키기: "이 사이트의 모바일 3G 환경에서 LCP·CLS·INP를 측정하고, 가장 큰 3개의 성능 병목과 해결책을 마크다운으로 정리해줘". emulate(네트워크/CPU throttling) + performance_start_trace + performance_analyze_insight를 LLM이 자동으로 조합하는 걸 본다.

배우는 것: 코어 웹 바이탈 의미, LLM이 도구를 어떻게 조립하는지, 자동 보고서 작성 패턴.

난이도 ★★★ · 반나절

실습 3 · 로그인이 필요한 사이트 e2e 테스트

--browserUrl 모드로 이미 로그인된 내 크롬에 붙이고, "내 GitHub 알림 페이지에 들어가서 unread를 다 읽음 처리해줘" 같은 시나리오 실행. click·wait_for·list_pages를 결합한 자동화 흐름 체험.

배우는 것: 세션 유지 자동화, 비결정적 UI에서 wait_for 패턴, 보안 위험 체감.

난이도 ★★★★ · 주말 프로젝트

실습 4 · GitHub Actions로 매일 성능 리그레션 감지

매일 새벽 chrome-devtools-mcp를 CI에서 돌려 우리 서비스의 LCP를 측정 → 어제 대비 +200ms 이상 회귀하면 Slack 알림. headless 모드 + --isolated + 결과 파일을 GH artifact로 업로드. CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS=1 환경변수 잊지 말 것.

배우는 것: CI 환경의 크롬 동작, headless의 함정, 시계열 메트릭 저장 전략.

난이도 ★★★★★ · 1주일+

실습 5 · 나만의 MCP 서버 — 같은 패턴 복제

이 레포의 구조(src/index.ts + src/tools/*)를 그대로 베껴 "내 Obsidian vault를 검색·수정하는 MCP" 만들기. @modelcontextprotocol/sdk로 시작 → 도구 5~10개 정의 → Claude Code에 연결해서 자연어로 노트 작성. design-principles.md 7원칙을 의식적으로 따라본다.

배우는 것: MCP 서버 설계의 모든 디테일, 토큰 효율적인 도구 응답 만들기, eval 자동화의 가치.

9관련 기술 심화 학습 로드맵

8주 코스 — "에이전트가 브라우저를 다루게 만드는 사람"이 되는 길

주차주제해야 할 일
1주차MCP 기초Anthropic의 MCP 스펙(modelcontextprotocol.io) 정독. JSON-RPC 2.0 복습. chrome-devtools-mcp를 깔고 4~5가지 도구를 직접 호출해본다.
2주차Puppeteerpuppeteer 공식 튜토리얼. page.evaluate·page.screenshot·page.tracing 직접 써보기. Headless vs Headful 차이 이해.
3주차Chrome DevTools ProtocolCDP 메서드 카탈로그 훑기. Network.enable·Performance.getMetrics·Runtime.evaluate가 Puppeteer 안에서 어떻게 호출되는지 추적.
4주차Lighthouse 내부Lighthouse를 Node 모듈로 직접 호출. category·audit 구조 이해. 결과 JSON에서 의미 있는 요약을 뽑는 코드 작성.
5주차Core Web Vitals + CrUXLCP/CLS/INP가 실제로 어떻게 계산되는지. CrUX API로 실측 데이터 받기. 랩 데이터와 필드 데이터의 차이.
6주차MCP 서버 직접 작성실습 5번 — 본인 도메인의 MCP 서버 하나 완성. 도구 5~10개, design-principles 준수.
7주차에이전트 평가(eval)이 레포의 scripts/eval_gemini.ts 따라 만들기. 도구를 LLM이 정확히 부르는지 자동 테스트. token 비용 측정 자동화.
8주차프로덕션 배포Claude Code Plugin 마켓플레이스에 등록 시도. plugin.json 작성, README 다국어, CI eval 게이트.

10핵심 키워드 사전

이 레포를 읽다 만나는 모든 약자·전문용어를 한 번에

KEYWORD
MCP — Model Context Protocol
Anthropic 주도, "LLM ↔ 외부 도구" 표준 프로토콜. stdio·SSE·HTTP 트랜스포트, JSON-RPC 2.0 메시지. 도구·리소스·프롬프트 3가지 기본 객체.
KEYWORD
CDP — Chrome DevTools Protocol
크롬 내부와 외부 도구가 통신하는 프로토콜. WebSocket으로 JSON 메시지 주고받음. Puppeteer·Playwright·DevTools 자체가 모두 이걸 쓴다.
KEYWORD
Puppeteer
Google의 Node.js 라이브러리. CDP를 편하게 부르도록 추상화한 고수준 API. page.goto()·page.click()·page.evaluate()가 시그니처 함수.
KEYWORD
Lighthouse
Google의 웹페이지 자동 감사 도구. 성능·접근성·SEO·PWA·Best Practices 5개 카테고리에 0~100 점수. 100+ 개의 audit이 모여 점수를 만든다.
KEYWORD
CrUX — Chrome User Experience Report
크롬으로 인터넷 쓰는 실제 사용자들이 겪은 LCP/CLS/INP의 통계. 즉 "필드 데이터". 랩(내 컴퓨터)에서 측정한 거랑 다를 수 있어서 둘을 같이 본다.
KEYWORD
LCP / CLS / INP — Core Web Vitals
LCP(Largest Contentful Paint, 가장 큰 콘텐츠 표시 시간 · 2.5s 이하 권장), CLS(Cumulative Layout Shift, 누적 레이아웃 변화 · 0.1 이하), INP(Interaction to Next Paint, 입력 응답 · 200ms 이하). 구글 검색 랭킹에도 반영.
KEYWORD
user-data-dir
크롬이 프로필(쿠키·로그인·확장프로그램·캐시)을 저장하는 디렉토리. 자동화에선 보통 새 디렉토리를 줘서 깨끗한 프로필로 시작. --isolated는 매번 임시 디렉토리.
KEYWORD
Headless / Headful
Headless = UI 없이 백그라운드로 크롬 실행. CI에 적합. Headful = 실제 창이 뜸. 디버깅에 적합. 두 모드의 동작이 미묘하게 다를 때가 있어서 주의.
KEYWORD
stdio JSON-RPC
MCP의 기본 트랜스포트. 클라이언트가 서버 프로세스를 띄우고 stdin/stdout으로 JSON 메시지 주고받음. 네트워크 설정 필요 없어서 로컬 도구로 최적.
KEYWORD
Claude Code Plugin
MCP 서버 + Skills(.md 가이드) + 슬래시 커맨드를 하나로 묶은 설치 단위. /plugin install로 설치, marketplace 등록 가능.
KEYWORD
Slim mode
전체 도구 → 3개(navigate·screenshot·evaluate)로 축소하는 모드. 토큰 비용이 큰 컨텍스트에서 "이건 안 쓸 거 확실"한 도구들을 LLM 시야에서 빼는 트릭.

11참고 링크

시작하기·깊게 가기·이슈 트래킹