Claude Code에서 MCP 대신 CLI로 전환한 이유
Switched from MCPs to CLIs for Claude Code and honestly never going back
TL;DR Highlight
Claude Code에서 MCP 쓰다가 CLI로 갈아탔더니 파라미터 오류·인증 문제·타임아웃이 사라졌다.
Who Should Read
Claude Code로 개발 자동화를 구축 중인 개발자. 특히 MCP 설정 삽질에 지쳐 더 안정적인 에이전트 도구 연결 방식을 찾는 사람.
Core Mechanics
- MCP는 파라미터 오류, 인증 랜덤 실패, 타임아웃 등 실사용에서 잦은 문제가 발생함.
- CLI가 더 잘 작동하는 핵심 이유: Claude가 수년간의 shell script, 공식 문서, Stack Overflow로 학습돼 있어서 CLI 플래그와 엣지 케이스를 잘 암.
- 에이전트 친화적 CLI의 3가지 필수 조건: 구조화된 출력(--json, --jq), 비대화형(non-interactive) 모드, API 키 인증.
- 실전 추천 CLI 조합: gh(GitHub), ripgrep(코드 검색), composio(범용 에이전트 도구 연결), stripe(웹훅 테스트), supabase(로컬 DB), vercel(배포), sentry-cli(릴리즈 관리), neon(Postgres 브랜치).
- --json / --jq 플래그 지원 여부가 에이전트에서 CLI를 쓸 수 있는지 없는지를 가르는 핵심 기준.
Evidence
- MCP 대비 CLI는 파라미터 오류, 인증 실패, 타임아웃 등 실사용 장애 요인이 구조적으로 제거됨 (정량 수치 없음, 실사용 경험 기반).
- gh CLI는 --json + --jq 조합으로 GitHub 데이터를 구조화해 에이전트가 파싱 없이 바로 활용 가능.
- composio는 단일 CLI로 수백 개 외부 서비스를 에이전트에 연결할 수 있어 MCP 개별 설정 비용 대비 효율적.
How to Apply
- 기존에 MCP로 연결한 GitHub, Stripe, Supabase 등의 도구를 각 공식 CLI로 교체하고, --json 출력 + 환경변수 API 키 방식으로 Claude Code에 노출하면 된다.
- 새 CLI 도구를 에이전트에 붙이기 전에 '구조화 출력 있나(--json/--output json)?', '비대화형 모드 되나?', 'API 키 인증 되나?' 세 가지를 먼저 확인하는 체크리스트로 쓸 수 있다.
- composio CLI 하나만 설치하면 Claude Code가 Slack, Notion, Jira 등 수백 개 서비스를 CLI 명령 하나로 호출할 수 있어, 다수 MCP 서버 관리 부담을 줄일 수 있다.
Code Example
snippet
# 에이전트 친화적 CLI 패턴 예시
# GitHub: 구조화 출력으로 PR 목록 조회
gh pr list --json number,title,state --jq '.[] | select(.state=="OPEN")'
# Stripe: 웹훅 이벤트 로컬 테스트
stripe listen --forward-to localhost:3000/webhook --output json
# Supabase: 로컬 DB 마이그레이션
supabase db push --local
# Sentry: 릴리즈 등록
sentry-cli releases new $VERSION --format json
# Neon: Postgres 브랜치 생성 (피처 브랜치별 DB)
neon branches create --name feature/my-feature
# Ripgrep: 코드 검색 (JSON 출력)
rg 'TODO' --json | jq '.data.lines.text'Terminology
MCPModel Context Protocol. Claude 같은 AI 모델이 외부 도구/서비스와 연결되도록 Anthropic이 만든 표준 인터페이스. 플러그인처럼 붙였다 뗄 수 있지만 설정이 복잡함.
CLICommand Line Interface. 터미널에서 명령어로 쓰는 프로그램. `gh pr list`처럼 텍스트 명령으로 GitHub 같은 서비스를 제어할 수 있음.
non-interactive mode사람이 개입하지 않아도 자동으로 실행 완료되는 모드. 에이전트가 쓰려면 중간에 '계속할까요? (y/n)' 같은 입력 요청이 없어야 함.
structured outputJSON처럼 프로그램이 파싱하기 쉬운 형식으로 결과를 출력하는 것. --json 플래그로 켜는 경우가 많음.
composio수백 개 외부 서비스를 에이전트에 연결해주는 범용 CLI/SDK. MCP를 여러 개 설치하는 대신 composio 하나로 대부분의 서비스를 에이전트에 붙일 수 있음.
jqJSON을 터미널에서 필터링·변환하는 커맨드라인 도구. `gh ... --jq '.[] | .title'`처럼 CLI 출력을 바로 가공할 때 씀.
Neon서버리스 Postgres 서비스. 브랜치 기능이 있어서 Git처럼 DB를 피처 브랜치별로 분기해 쓸 수 있음.