mcp 대신 cdp 로 토큰 80% 아끼기
1. Chrome DevTools Protocol (CDP) 이란?
🔧 Chrome 팀이 F12(개발자 도구)를 위한 내부 프로토콜을 외부로 노출한 것
- 개발자 도구(Developer Tools) 자체가 이 프로토콜로 브라우저와 통신
- 즉, 개발자 도구로 할 수 있는 모든 일을 코드로 실행할 수 있게 해주는 API (WebSocket)
```mermaid flowchart LR A["F12 Developer Tools"] -->|uses| B["Chrome DevTools\\nProtocol"] C["Python / Node Script"] -->|same protocol| B B -->|WebSocket\\nws://localhost:9222| D["Chrome Engine"] style C fill:#10b981,color:#fff style B fill:#3b82f6,color:#fff
```
2. 만능은 아닙니다 — Chromium 기반 앱만 가능
⚠️ CDP는 Chromium 엔진 기반 애플리케이션에서만 동작합니다
| App | Category | CDP Use Case |
|---|---|---|
| Notion | Docs / Wiki | Page CRUD, Block manipulation, Internal API |
| Figma | Design | Component query, Style extraction |
| Slack | Messenger | Message read, Channel management |
| Obsidian | Notes | Markdown manipulation |
| Discord | Community | Message read, Server management |
| VS Code | Code Editor | Editor manipulation, Extension control |
| Cursor | AI Editor | Editor manipulation, AI integration |
3. 테스트할 작업: visualize-notion 스킬
Notion의 다양한 네이티브 기능(Column, Callout, Table, Mermaid 등)을 활용하여 콘텐츠를 시각적으로 구성하는 Claude Code 스킬입니다.
활용하는 Notion 기능
| Feature | Purpose | Effect |
|---|---|---|
| Column | Side-by-side layout | Before/After, A vs B comparison |
| Callout | Highlight key info | Conclusion, Warning, Tip |
| Table | Structured data | Spec comparison, Item-by-item |
| Mermaid | Diagrams / Charts | Flowchart, Sequence diagram |
| Toggle | Collapsible content | Hide long details |
| Divider | Section separator | Visual separation |
⌨️ 호출 방법: Claude Code에서 /visualize-notion 입력
4. 기존 방식: MCP 동작 원리
🔴 LLM은 stateless → 매 턴마다 이전 대화를 처음부터 다시 읽어야 합니다
실제 생성 요청 시 진행 과정
- column 추가 요청 → API 호출 → 결과 반환
- column 결과(context) + callout 추가 요청 → API 호출 → 결과 반환
- column 결과 + callout 결과(context) + table 추가 요청 → API 호출 → 결과 반환
- column + callout + table 결과(context) + mermaid 추가 요청 → API 호출 → 결과 반환
💸 턴 수 \= Notion 블록 수 (API 호출마다 1턴 소모) → context 누적만큼 토큰 소모 기하급수적 증가!
MCP Sequence Diagram
```mermaid sequenceDiagram participant LLM participant MCP as MCP Server participant API as Notion API
Note over LLM: Turn 1 - Input 1,000 tokens
LLM->>MCP: column block append
MCP->>API: API Call
API-->>LLM: result (+500 tokens)
Note over LLM: Turn 2 - Input 1,500 tokens (context grows)
LLM->>MCP: callout block append
MCP->>API: API Call
API-->>LLM: result (+500 tokens)
Note over LLM: Turn 3 - Input 2,000 tokens (context grows)
LLM->>MCP: table block append
MCP->>API: API Call
API-->>LLM: result (+500 tokens)
Note over LLM: Turn N - Input 500xN tokens
LLM->>MCP: block N append
MCP->>API: API Call
API-->>LLM: result (+500 tokens)
```
Turn별 토큰 소모량 (블록 10개 기준)
| Turn | Action | Input Tokens | Cumulative Context |
|---|---|---|---|
| 1 | column 추가 | 1,000 | 500 |
| 2 | callout 추가 | 1,500 | 1,000 |
| 3 | table 추가 | 2,000 | 1,500 |
| 4 | mermaid 추가 | 2,500 | 2,000 |
| 5 | text 추가 | 3,000 | 2,500 |
| ... | ... | ... | ... |
| 10 | 마지막 블록 | 5,500 | 5,000 |
| Total | — | 32,500 | — |
5. 개선 방식: CDP 동작 원리
🟢 CDP는 사람처럼 직접 브라우저를 조작합니다 — / 입력, column 선택, Enter 입력 등
실제 생성 요청 시 진행 과정
- 사람처럼 동작하도록 미리 Script 작성 (토큰 소모!)
- Script 실행 — 모든 Notion 요소(column, callout, table, mermaid) 한번에 생성
- 완료 — 끝!
✅ 턴 수 없음! API 호출이 아니라 직접 브라우저를 열어서 사람처럼 동작하므로 context 누적 없음
CDP Sequence Diagram
```mermaid sequenceDiagram participant LLM participant CDP as CDP WebSocket participant Browser as Notion Browser
Note over LLM: Turn 1 - Script generation (5,000 tokens)
LLM->>LLM: Generate script with ALL blocks
Note over LLM: Turn 2 - Execution (500 tokens)
LLM->>CDP: Execute script
CDP->>Browser: submitTransaction (all blocks at once)
Browser-->>LLM: OK
Note over LLM: Total: 2 turns, 5,500 tokens
```
Turn별 토큰 소모량 (블록 10개 기준)
| Turn | Action | Input Tokens | Note |
|---|---|---|---|
| 1 | Script 작성 | 5,000 | 모든 블록 포함 (토큰 소모!) |
| 2 | Script 실행 | 500 | 결과만 반환 |
| Total | — | 5,500 | Context 누적 없음 |
6. MCP vs CDP 최종 비교
❌ MCP 방식
- 매 턴마다 Notion API 호출
- API 결과가 Context에 누적
- 블록 10개 → 10턴 소요
- 총 32,500 tokens 소모
✅ CDP 방식
- Script 1회 작성 + 1회 실행
- Context 누적 없음
- 블록 10개 → 2턴 소요
- 총 5,500 tokens 소모
| Compare | MCP | CDP |
|---|---|---|
| 동작 방식 | API 호출 (턴마다) | Script 실행 (1회) |
| 턴 수 (블록 10개) | 10턴 | 2턴 |
| Context 누적 | O (매턴 증가) | X (고정) |
| Input Tokens | 32,500 | 5,500 |
| 토큰 절감율 | — | \~83% 절감 |
| 블록 수 증가 시 | 기하급수 증가 | 선형 증가 (Script 크기만) |
7. 핵심 아이디어
🔑 MCP 활용 중 API 호출 후 결과를 받고, 그 결과가 context에 누적되며 다음 API를 호출해야 하는 경우 → context 누적으로 인한 급격한 토큰량 증가
🎯 CDP는 Script 작성 후 실행 → context 누적 없음 → 토큰 \~80% 절감