CLI over MCP: Copilot CLI에서 진행한 작은 Chrome DevTools 실험

발행: (2026년 6월 11일 AM 12:25 GMT+9)
10 분 소요
원문: Dev.to

Source: Dev.to

두 경로를 통해 동일한 브라우저 스모크 테스트를 실행했습니다: 직접 Chrome DevTools MCPmcp2cli를 둘러싼 맞춤형 CLI 스킬. GitHub Copilot CLI에서 gpt-5.3-codex-medium을 사용했을 때, 직접 Chrome DevTools MCP는 에이전트가 작업을 시작하기 전에 약 5k 토큰의 선행 컨텍스트를 추가했습니다. 런타임 표는 너무 작고 잡음이 많아 도구를 순위 매기기에 충분하지 않습니다. 중요한 질문은 에이전트가 브라우저 제어 표면을 발견하는 데 비용을 어디에 지불하느냐는 점입니다.

mcp2cli README는 “툴 스키마에 낭비되는 토큰을 매 턴마다 96‑99 % 절감할 수 있다”고 주장합니다. 이는 강력한 주장이고 솔직히 그런 수치를 기대하지 않았습니다… CLI 부분이 특히 끌렸습니다—(a) CLI는 시스템 프롬프트 오염이 없고, (b) gh CLI와 GitHub MCP 중에서 선택한다면 모델이 이미 도구를 알고 있어 JSON 스키마와 툴 호출에 낭비되는 토큰이 적기 때문에 전자가 더 좋습니다.

저는 Chrome DevTools MCP를 많이 사용했으며, mcp2cli를 시험해 보기 위해 이 MCP를 테스트베드로 선택했습니다. 최소한의 pi 코딩 에이전트로 실험을 시작했는데, 이 에이전트는 MCP 통합을 전혀 포함하지 않고 기본 bash 도구만 제공했습니다. 전용 MCP 플러그인으로 설치를 부풀리지 않아도 되어 매우 만족했습니다. 다만 이번 경우에는 완전한 GitHub CLI를 사용해 MCP와 CLI를 비교했습니다.

툴 발견은 실험의 일부입니다. 네이티브 MCP는 스키마를 컨텍스트에 로드함으로써 에이전트에게 툴 표면을 제공합니다. CLI 래퍼는 에이전트가 다른 커맨드라인 도구를 발견하는 방식—목록 조회, 검색, 도움말 요청, 작은 프로브 실행, 작동한 것을 기록—으로 표면을 발견하게 합니다. 이는 발견 비용이 어디에 발생하는지를 바꿉니다.

설정

GitHub Copilot CLI에서 gpt-5.3-codex-medium을 사용해 실행했습니다:

  • Copilot 기본 MCP 서버는 비활성화했습니다.
  • 테스트 대상 앱은 개인 Python/Streamlit 코드베이스였습니다.
  • 브라우저 작업은 두 변형 모두 동일한 9단계 스모크 테스트였습니다.
  • 한 변형은 직접 Chrome DevTools MCP를 사용했습니다.
  • 다른 변형은 mcp2cli를 통해 Chrome DevTools MCP를 감싸는 맞춤형 스킬을 사용했습니다.
  • 맞춤형 스킬 자체는 임시 에이전트 작업으로 시작했습니다: gpt-5.4-mini와 함께 pi에 Chrome DevTools MCP와 mcp2cli 레포를 가리키게 하고, MCP를 감싸는 스킬을 준비하도록 요청한 뒤, GitHub CLI에서 gpt-5.3-codex-high로 검증·다듬었습니다.

Copilot CLI는 작은 하니스가 아닙니다. 빈 실행만 해도 에이전트가 앱에 손을 대기 전에 이미 약 19k 토큰이 소모되었습니다. 반면 pi는 새 대화에서 거의 0에 가깝게 시작합니다. 따라서 5k 툴‑스키마 세금은 위치에 따라 다르게 보입니다.

  ○ ○ ◌ ◌ ● · · · · ·   gpt-5.3-codex · 19k/400k tokens (5%)
  · · · · · · · · · ·   ○ System Prompt           8.7k   (2%)
  · · · · · · · · · ·   ○ Custom Instructions     1.3k  (<1%)
  · · · · · · · · · ·   ◌ System Tools            8.8k   (2%)
  · · · · · · · · · ·   ● MCP Tools                155  (<1%)
  · · ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎   ◉ Messages                   0   (0%)
  ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎   · Free Space            239.5k  (60%)
  ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎   ◎ Buffer                141.6k  (35%)

첫 번째 스킬 버전은 두 개의 GitHub 링크(Chrome DevTools와 mcp2cli)를 공유하는 프롬프트로 에이전트가 작성했습니다—공개 문서와 CLI를 통한 런타임 검증을 기반으로 부트스트랩되었습니다. 이 MCP 서버에 대해서는 충분했습니다. 필요한 워크플로가 좁았기 때문이죠: 세션 시작, 탐색, 페이지 상태 검사, 상호작용, 정리. 더 복잡한 MCP 서버라면 스킬을 구축하는 동안 서버를 동시에 실행시켜 에이전트가 실제 런타임 동작을 발견하도록 해야 할 것입니다. 문서와 스키마만 믿는 것이 아니라 말이죠.

컨텍스트 부풀림

모드빈 전체MCP 툴 라인CLI 경로 대비 차이
CLI 스킬 경로19k155기준
직접 Chrome DevTools MCP24k4.9k+5k

직접 Chrome DevTools MCP는 이 Copilot CLI 설정에서 약 5k의 선행 컨텍스트를 추가했습니다. 비슷한 규모의 MCP 서버를 두 개 더 활성화한다면, 사용자 프롬프트와 실제 작업 전까지 대략 10k 토큰이 더 소모될 것으로 예상됩니다.

실행 결과

각 설정마다 동일한 프롬프트를 사용해 3번씩 실행했으며, 에이전트가 Google Chrome을 구동해 각 페이지를 살펴보도록 했습니다.

모드시도전체 컨텍스트메시지런타임결과비고
CLI 스킬#139k20.5k기록되지 않음요약되지 않음컨텍스트 통계만
CLI 스킬#237k18.1k259 s9/9 통과체크박스 플레이크, 재시도·폼 채우기로 복구
CLI 스킬#338k18.9k141 s9/9 통과체크박스 UID 실패, 라벨 클릭은 성공
직접 MCP#140k16.1k기록되지 않음요약되지 않음컨텍스트 통계만
직접 MCP#262k38.7k~101 s9/9 통과가장 빠른 기록된 완료 실행
직접 MCP#379k55.9k241 s9/9 통과에이전트가 긴 대기 시간을 사용; 최소 120 s 규모 지연 경로가 나타남

직접 MCP가 가장 빠른 완료 실행을 기록했습니다. CLI 스킬은 메시지 증가가 더 안정적이었습니다. MCP 시도 #3은 긴 대기 시간으로 인해 이전 실행보다 훨씬 무거워졌습니다.

이 샘플만으로 도구를 순위 매기지는 못합니다. 모델이 긴 브라우저 트레이스를 따라가는 방식이 인터페이스 선택을 좌우할 수 있기 때문입니다. 하나의 오래된 UID, 하나의 대기 루프, 하나의 불필요한 리로드, 하나의 과도한 스냅샷만 있어도 깔끔한 비교는 금세 무너지게 됩니다. 컨텍스트 엔지니어링은 로컬 패치일 수 있지만, 에이전트의 무작위 워크가 세션 길이와 비용을 결정하는 핵심 요인입니다.

스모크 테스트 프롬프트

(레포가 비공개라 중간 부분은 생략)

로컬 앱에 대한 브라우저 스모크 테스트를 실행하고, 다양한 브라우저 구동 방식 간 토큰 사용량을 비교할 수 있는 간결한 실행 보고서를 제공하십시오.

목표:
- 앱이 실행되고 기본 탐색·상호작용이 정상 동작하는지 확인한다.
- 가능한 한 읽기 전용 동작만 수행한다.
- 단계가 실패하더라도 다음 단계로 진행하고 실패 세부 정보를 보고한다.

설정:
1. 워크스페이스 루트에서 앱을 시작한다:
   [비공개 레포 명령 생략]
2. 앱이 표시
0 조회
Back to Blog

관련 글

더 보기 »

Eidentic 소개

Today we're releasing Eidentic, an open-source TypeScript SDK for building AI agents with self-improving memory and the production fundamentals built in — not b...

Typescript의 타입

Introdução Tipos são uma forma de definir a “forma” ou o contrato dos dados que estamos usando no código. Pensando em Javascript puro, ele é dinâmico: você pode...