본문으로 건너뛰기
블로그로 돌아가기

Claude Code에서 MCP보다 CLI를 써야 하는 이유 — 벤치마크와 실전 사례

7분 읽기0

Claude Code에서 MCP보다 CLI를 써야 하는 이유

2026년 2월 말, 전 Heroku CTO Eric Holmes가 "MCP is dead. Long live the CLI"라는 글을 썼습니다. 3월에는 에이전트 기업 Octomind가 "실제로 작동하는 에이전트는 CLI를 쓴다"고 발표했습니다. MCP 피로감이 업계 전반으로 퍼지고 있습니다.

결론부터 말씀드리면, Claude Code는 이미 터미널(Bash)이라는 만능 도구를 내장하고 있습니다. 벤치마크 기준 CLI가 MCP 대비 토큰 효율 33% 높고, 작업 완료 점수 28% 높습니다. 대부분의 경우 MCP 서버를 세팅하는 것보다 CLI를 직접 쓰는 게 더 빠르고, 안정적이고, 투명합니다.

MCP가 가진 구조적 문제

MCP(Model Context Protocol)는 AI가 외부 시스템과 통신하는 표준 프로토콜입니다. 비유하자면 외국어를 모르는 사람을 위한 "통역사"예요. 통역사가 있으면 분명히 도움이 됩니다. 그런데 Claude Code는 이미 한국어(Bash)를 유창하게 구사합니다. 통역사를 한 명 더 고용할 이유가 없죠.

컨텍스트 윈도우 잠식

가장 심각한 문제는 토큰 소비입니다. MCP 서버 4개만 연결해도 대화 시작 전에 67,000 토큰이 소비됩니다. GitHub MCP 하나만 해도 93개 도구를 등록하면서 약 55,000 토큰을 점유합니다. Claude Sonnet 200K 컨텍스트의 27%가 대화도 시작하기 전에 사라지는 셈입니다.

Claude Code의 Tool Search 기능이 이 문제를 일부 완화했지만(약 47% 오버헤드 감소), 근본적으로 MCP 도구 수가 많을수록 추론 품질이 저하됩니다.

서버 연결 안정성

GitHub anthropics/claude-code 저장소에 보고된 실제 장애 사례들입니다:

  • MCP 서버 2개 이상 설정 시 시작 자체가 실패 (#28211)
  • 세션 중에 MCP 연결이 조용히 끊김 — 수동 /mcp 재연결 필요 (#24350)
  • Docker VM 종료 시 Claude Code 전체가 크래시 (#18557)
  • 초기화 직후 즉시 연결이 끊어지는 레이스 컨디션 (#30464)

MCP 서버를 쓸수록 장애점이 기하급수적으로 늘어납니다.

설정 복잡성과 보안

MCP 서버마다 .claude.json 등록, 환경 변수 설정, 의존성 설치가 필요합니다. Node.js 22 LTS가 필요하고, 18 미만이면 프로토콜 호환 에러가 발생합니다. 보안 측면에서도 원격 연결용 내장 인증이 없고, 시크릿이 평문 설정 파일에 저장되며, 도구 호출에 대한 감사 추적이 부재합니다.

CLI가 더 효율적인 이유: 벤치마크 수치

CLI 도구는 이런 문제들이 없습니다. 벤치마크 결과를 보면:

지표CLIMCP차이
작업 완료 점수기준 대비 28% 높음기준+28%
Token Efficiency Score202152+33%
엔터프라이즈 작업 토큰 사용1x35x35배 절약

CLI의 핵심 강점: 별도 서버 없이 즉시 실행, exit code와 stderr로 투명한 에러 파악, 시스템에 설치된 모든 도구를 바로 활용, 파이프(|)로 도구를 자유롭게 조합.

LLM은 이미 CLI를 잘 압니다. 수조 줄의 StackOverflow, GitHub, 매뉴얼 페이지로 훈련되었기 때문에 git, curl, jq, gh 같은 CLI를 별도 스키마 없이 바로 사용할 수 있습니다. MCP 스키마는 LLM이 이미 알고 있는 것을 다시 알려주는 셈입니다.

재현 가능합니다. Claude Code가 실행한 명령어를 그대로 터미널에서 수동으로 돌려볼 수 있습니다. 블랙박스가 없습니다.

생태계가 무한합니다. npm, pip, brew, apt로 설치할 수 있는 모든 CLI 도구가 곧 Claude Code의 도구가 됩니다. MCP 서버를 누군가 만들어줄 때까지 기다릴 필요가 없습니다.

실전: MCP 없이 이렇게 씁니다

실제로 MCP 서버를 대체해서 쓰고 있는 CLI 사례들입니다.

Google Workspace 조작 (gws CLI)

Google Drive, Sheets, Docs를 다루려면 보통 MCP 서버를 찾게 됩니다. 저는 대신 gws CLI를 씁니다.

# Drive 파일 검색
gws drive files list --params '{"q": "name contains '\''보고서'\''", "pageSize": 10}'

# Sheets 데이터 읽기
gws sheets spreadsheets values get \
  --params '{"spreadsheetId": "SHEET_ID", "range": "Sheet1!A1:C10"}'

# Docs 내용 가져오기
gws docs documents get --params '{"documentId": "DOC_ID"}'

MCP 서버를 세팅할 필요 없이, gws auth login으로 인증 한 번만 하면 됩니다.

웹 스크레이핑 (scrapling)

웹 페이지 내용이 필요할 때 fetch MCP 대신 scrapling을 씁니다. Cloudflare로 막힌 사이트도 우회합니다.

# 일반 페이지 마크다운 추출
scrapling extract get "https://example.com/pricing" /tmp/result.md

# Cloudflare 보호 사이트
scrapling extract stealthy-fetch \
  --solve-cloudflare \
  --network-idle \
  "https://protected-site.com" /tmp/result.md

YouTube 자막 추출 (yt-dlp)

YouTube 영상 내용이 필요할 때 MCP 없이 yt-dlp로 해결합니다.

# 한국어 자막 다운로드 (자동생성 포함)
yt-dlp --write-auto-subs --sub-langs ko,en \
  --sub-format srt \
  --skip-download \
  -o "/tmp/subtitle" \
  "https://youtube.com/watch?v=VIDEO_ID"

파이프라인 조합

CLI의 진짜 강점은 파이프로 도구를 연결하는 것입니다. Unix 철학 그대로입니다.

# Drive 파일 목록에서 특정 이름만 추출
gws drive files list --params '{"pageSize": 50}' \
  | jq -r '.files[] | select(.name | contains("2026")) | .name'

# 웹 페이지 가져와서 특정 섹션만 추출
scrapling extract get "https://docs.example.com" /tmp/raw.md \
  && grep -A 20 "## 설치" /tmp/raw.md

MCP 서버 조합으로는 이런 파이프라인을 만들기 어렵습니다.

MCP가 여전히 필요한 경우

CLI가 항상 더 낫다는 말은 아닙니다. MCP가 진짜 필요한 상황이 있습니다.

브라우저 자동화: Playwright MCP처럼 클릭, 입력, 상태 유지가 필요한 경우. CLI로는 브라우저 인터랙션을 흉내 내기 어렵습니다.

복잡한 OAuth 관리: 토큰 갱신이 자동으로 필요한 경우. CLI 도구로 직접 구현하면 코드가 복잡해집니다.

실시간 스트리밍: 데이터가 계속 흘러오는 경우. CLI의 단발성 실행 모델과 맞지 않습니다.

IDE 통합: VS Code 같은 IDE와 긴밀하게 연동해야 하는 경우.

이런 케이스가 아니라면 CLI로 먼저 시도해보시기를 권합니다. 생각보다 많은 경우를 커버할 수 있습니다.

마무리

Claude Code에서 MCP와 CLI의 관계를 정리하면 이렇습니다. MCP는 필요할 때 쓰는 전문 도구, CLI는 매일 쓰는 기본 도구입니다.

새로운 작업이 생겼을 때 "이걸 위한 MCP 서버가 있나?"를 먼저 찾는 대신, "이걸 CLI로 바로 할 수 있나?"를 먼저 물어보세요. 대부분의 경우 설치 한 번, 명령어 한 줄로 해결됩니다. 설정에 쓰는 시간을 줄이고, 실제 작업에 더 집중할 수 있습니다.

Claude Code가 강력한 이유는 MCP 생태계 때문이 아니라, 수십 년간 쌓아온 CLI 생태계 전체를 그대로 사용할 수 있기 때문입니다.


자주 묻는 질문 (FAQ)

Q: MCP와 CLI를 동시에 써도 되나요?

네, 함께 사용할 수 있습니다. 브라우저 자동화처럼 MCP가 꼭 필요한 작업은 MCP를 쓰고, 나머지는 CLI로 처리하는 하이브리드 방식이 실용적입니다. 다만 MCP를 기본값으로 두지 말고, CLI로 해결이 안 될 때 MCP를 고려하는 순서를 권장합니다.

Q: CLI 도구가 시스템에 없으면 어떻게 하나요?

Claude Code가 직접 설치할 수 있습니다. brew install, pip install, npm install 명령어를 Claude Code에 요청하면 됩니다. MCP 서버를 설정하는 것보다 훨씬 빠릅니다.

Q: gws 같은 CLI는 어디서 설치하나요?

gws는 npm 패키지입니다. npm install -g @berstend/gws 또는 프로젝트 README를 참조하세요. scrapling은 pip install scrapling, yt-dlp는 brew install yt-dlp로 설치합니다.

Q: CLI는 보안 관점에서 어떤가요?

CLI는 실행되는 명령어가 그대로 보이기 때문에 오히려 투명합니다. MCP 서버는 내부 동작이 블랙박스에 가깝습니다. 다만 CLI도 시크릿을 환경 변수로만 관리하고, 명령어 로그에 민감 정보가 노출되지 않도록 주의해야 합니다.

Q: Claude Code가 내장 도구(Read/Write/Edit/Bash)를 MCP보다 우선하는 게 맞나요?

맞습니다. Anthropic의 설계 의도도 네이티브 도구(Bash 포함)를 우선 사용하는 것입니다. MCP는 네이티브 도구로 해결이 안 되는 특수 케이스를 위한 확장입니다.


참고 자료