같은 서비스, 다른 접근법 | CLI 도구 활용
같은 GitHub을 MCP 대신 gh CLI로 사용하면서, MCP는 AI 전용이고 CLI는 개발자와 AI 모두의 도구라는 핵심 차이를 이해합니다
Overview
GitHub MCP로 이슈를 조회했습니다. MCP는 Claude에게 외부 시스템 접근권을 주는 표준 프로토콜이었습니다. 그런데 같은 GitHub을 완전히 다른 방식으로 사용할 수 있습니다. gh CLI로 연결하면, 개발자가 터미널에서 직접 쓰는 같은 명령어를 Claude도 그대로 사용합니다. 이번 레슨에서는 같은 서비스를 MCP와 CLI로 각각 사용해보고, 왜 CLI가 AI와 잘 맞는지 이해합니다.
학습 목표
- MCP와 CLI의 본질적 차이(AI 전용 vs 개발자+AI 공용)를 설명할 수 있습니다
- CLI가 AI와 잘 맞는 4가지 이유를 설명할 수 있습니다
- gh CLI를 설치하고 GitHub 데이터를 조회할 수 있습니다
- 생소한 CLI는 CLAUDE.md나 Skill로 별도로 사용법을 알려줘야 하는 이유를 설명할 수 있습니다
시작하기 전 확인사항
- GitHub 계정이 있어야 합니다 (Lesson 01에서 사용한 계정 재사용)
- 실습 프로젝트의 시작 브랜치로 전환합니다 (
git checkout ch07-02)
같은 GitHub, 다른 경험

GitHub MCP를 설치하고 이슈를 조회했습니다. Claude가 MCP를 통해 GitHub에 접근하고, 결과를 대화창에 보여줬습니다. 이번에는 같은 GitHub을 gh CLI로 사용합니다.
두 방식의 가장 큰 차이는 "누가 쓸 수 있는가"입니다.
| MCP | CLI | |
|---|---|---|
| 누가 쓰는가 | AI만 | 개발자도, AI도 |
| 디버깅 | AI가 뭘 했는지 로그로 추적 | 같은 명령어를 터미널에서 직접 실행 |
| 데이터 흐름 | 결과가 대화창에 들어옴 | 결과를 터미널에서 직접 확인하거나 파이프로 가공 |
| 설치 후 관리 | 항상 켜져 있는 프로세스 필요 | 명령어 실행하면 끝, 프로세스 없음 |
MCP는 AI를 위해 새로 만들어진 연결 방식입니다. 개발자가 직접 쓸 수 없고, AI가 내부적으로 호출하는 과정을 지켜봐야 합니다. 뭔가 잘못되면 JSON 로그를 뒤져야 합니다.
CLI는 원래 개발자를 위한 도구입니다. gh issue list라는 명령어를 개발자가 터미널에서 직접 실행할 수 있고, Claude도 같은 명령어를 그대로 사용합니다. Claude가 실행한 명령어를 복사해서 터미널에 붙여넣으면, 같은 결과를 직접 확인할 수 있습니다.
CLI가 AI와 잘 맞는 이유
AI가 이미 CLI를 안다
Claude는 수백만 개의 man page, Stack Overflow 답변, GitHub의 셸 스크립트로 훈련되었습니다. gh pr list, aws s3 ls, kubectl get pods 같은 명령어 패턴은 학습 데이터에 이미 포함되어 있습니다.
MCP의 JSON-RPC 스키마는 AI가 새로 배워야 하는 형식이지만, CLI는 이미 아는 형식입니다. 새 도구를 배우는 것보다 익숙한 도구를 쓰는 것이 정확도가 높습니다.
사용법을 물어볼 수 있다
CLI 도구는 --help 한 줄이면 사용법을 알 수 있습니다.
gh issue list --helpClaude가 gh CLI의 옵션이 기억나지 않으면, --help를 실행해서 확인합니다. 필요할 때만 사용법을 확인하므로, 대화창을 차지하는 양이 최소화됩니다.
MCP는 서버에 연결하는 순간 모든 도구의 설명이 한꺼번에 로드됩니다. 서버 하나에 도구가 10개면, 10개의 설명이 모두 대화창에 올라옵니다. CLI는 실제로 쓸 도구의 --help만 확인합니다.
결과를 가공할 수 있다
CLI 결과는 파이프(|)로 다른 명령어에 전달할 수 있습니다.
gh issue list --repo vercel/next.js --json number,title,state -L 10
gh issue list --repo vercel/next.js --json number,title,state -L 10 | jq '.[].title'MCP 결과는 통째로 대화창에 들어오지만, CLI 결과는 필요한 부분만 골라서 볼 수 있습니다.
실행하고 끝난다
MCP 서버는 Claude Code가 시작될 때 함께 실행되고, 종료될 때까지 계속 켜져 있어야 합니다. 서버가 조용히 멈추거나 초기화에 실패하면 /mcp에서 연결 상태를 확인하고 재시작해야 합니다.
CLI 도구는 명령어를 실행하면 결과를 반환하고 끝납니다. 백그라운드에서 돌아가는 프로세스가 없으므로, 멈추거나 충돌할 프로세스 자체가 없습니다.
직접 써보기: gh CLI
같은 GitHub을 gh CLI로 사용해봅니다. MCP로 했던 것과 같은 작업을 CLI로 수행하고, 차이를 비교합니다.
Step 1: gh CLI 설치
| OS | 설치 명령어 |
|---|---|
| macOS | brew install gh |
| Windows | winget install GitHub.cli |
설치가 완료되면 버전을 확인합니다.
gh --versionStep 2: 인증
브라우저로 인증합니다.
gh auth loginGitHub.com을 선택하고, HTTPS 방식으로, 브라우저 인증을 선택합니다. 브라우저에서 승인하면 터미널에 성공 메시지가 표시됩니다.
인증 상태를 확인합니다.
gh auth status"Logged in" 상태가 표시되면 성공입니다.
Step 3: CLI로 직접 조회
먼저 개발자가 직접 CLI를 실행해서 동작을 확인합니다.
gh issue list --repo vercel/next.js --json number,title,state,labels -L 10| 부분 | 의미 |
|---|---|
issue list | 이슈 목록을 조회하는 명령어 |
--repo vercel/next.js | 대상 저장소 지정 |
--json number,title,state,labels | 결과를 JSON 형식으로, 필요한 필드만 출력 |
-L 10 | 최대 10개까지만 조회 |
터미널에 JSON 형식의 이슈 목록이 출력됩니다.
Step 4: GitHub MCP 제거
Lesson 01에서 설치한 GitHub MCP를 제거합니다. 같은 서비스를 CLI로 대체하므로, MCP를 유지할 이유가 없습니다.
claude mcp remove github -s projectClaude Code를 재시작한 뒤, /mcp로 GitHub이 목록에서 사라졌는지 확인합니다.
Step 5: Claude에게 조회 요청
새 세션을 시작하고, Claude에게 GitHub 데이터를 가져오도록 요청합니다.
vercel/next.js 저장소의 최근 PR 5개를 조회하고 어떤 변경이 진행 중인지 요약해줘
Claude가 gh pr list 명령어를 실행합니다. MCP로 같은 작업을 했을 때와 비교하면, Claude가 실행하는 것이 JSON-RPC 호출이 아니라 터미널 명령어라는 차이가 보입니다.
Step 6: 개발자가 직접 확인
Claude가 실행한 명령어를 터미널에 복사해서 붙여넣으면 같은 결과를 확인할 수 있습니다. MCP로 가져온 결과는 대화창 안에만 존재했지만, CLI로 가져온 결과는 터미널에서 직접 재현할 수 있습니다.
생소한 CLI는 가르쳐야 한다
gh처럼 널리 쓰이는 CLI는 Claude가 이미 사용법을 알고 있습니다. 별도 설정 없이 바로 사용할 수 있습니다.
반면 사내에서 만든 CLI 도구나 새로 나온 생소한 CLI는 다릅니다. Claude가 학습한 적이 없으므로, CLAUDE.md에 사용법을 적거나, Skill로 워크플로우를 만들어 사용법을 알려줘야 합니다.
핵심 포인트 정리
- MCP는 AI 전용, CLI는 개발자와 AI 모두의 도구입니다: CLI는 개발자가 터미널에서 직접 쓰던 도구를 Claude도 그대로 사용합니다. Claude가 실행한 명령어를 복사해서 터미널에 붙여넣으면 같은 결과를 확인할 수 있습니다
- 유명 CLI는 별도 설정 없이 바로 사용할 수 있습니다:
gh,aws같은 도구는 Claude가 이미 사용법을 알고 있습니다. 생소한 CLI만 CLAUDE.md나 Skill로 사용법을 사용법을 알려줘야 합니다 - 복잡한 워크플로우가 필요하면 Skill을 만듭니다: "이슈 목록 가져와"는 CLI 단독으로 충분합니다. 하지만 "브랜치 만들고, PR 올리고, 스쿼시 머지"처럼 여러 단계가 필요하면, CLI + Skill 결합이 효과적입니다
FAQ
-
Q: 그러면 MCP는 쓸모가 없나요?
- A: CLI가 없는 서비스에는 MCP가 유일한 선택지입니다. Figma, Notion, Stitch처럼 공식 CLI를 제공하지 않는 서비스는 MCP로 연결해야 합니다. 또한 비개발자가 사용하는 AI 도구(Claude Desktop 등)에서는 MCP가 더 적합합니다
-
Q: 어떤 CLI 도구가 있는지 어떻게 알 수 있나요?
- A: 대부분의 서비스는 공식 CLI를 제공합니다.
gh(GitHub),aws(AWS),kubectl(Kubernetes),vercel(Vercel),jira(Jira) 등이 대표적입니다. 서비스 이름 + CLI로 검색하면 공식 CLI가 있는지 확인할 수 있습니다
- A: 대부분의 서비스는 공식 CLI를 제공합니다.
이어서 배울 내용
CLI가 있는 서비스는 CLI를 쓰면 됩니다. 하지만 사내 API나 자체 데이터베이스처럼 공개 CLI가 없는 내부 시스템은 어떻게 연결할까요?