> [!quote] > [MCP is dead. Long live the CLI](https://ejholmes.github.io/2026/02/28/mcp-is-dead-long-live-the-cli.html)를 읽고 배운 것과 생각을 정리했습니다. (번역: [MCP는 죽었습니다. CLI여 영원하라!](https://velog.io/@surim014/mcp-is-dead-long-live-the-cli)) MCP 서버를 직접 만들어 쓰고 있었는데, 이 아티클을 읽으면서 CLI의 장점이 구체적으로 느껴졌다. LLM은 이미 CLI를 잘 안다. 수많은 man 페이지와 GitHub 레포로 이미 학습했기 때문에 `gh pr view 123`이라고 하면 그냥 된다. MCP는 새로운 프로토콜과 엔드포인트와 인증 방식을 추가했지만, LLM이 도구를 이해하도록 설명하는 문서화 작업은 여전히 필요했다. 디버깅 얘기에서 확실히 좀 설득이 되었다. MCP에서 뭔가 잘못되면 JSON transport 로그를 뒤져야 한다. CLI였다면 그냥 같은 명령어를 내가 직접 실행해보면 된다. 파이프 조합도 생각지 못했던 부분이라 흥미로웠다. MCP로 큰 결과물을 다른 도구에 넘기려면 전부 컨텍스트에 쏟아붓거나, MCP 서버 안에 필터링 로직을 직접 넣어야 한다. CLI는 `grep`이나 `jq`로 그냥 된다. 권한 제어도 CLI 쪽이 세밀하다. Claude Code에서 `Bash(gh pr view:*)`는 허용하고 `Bash(gh pr merge:*)`는 승인 필요로 설정할 수 있다. MCP는 서버·툴 이름 단위로만 allow/deny가 가능해서 operation 단위 제어가 구조적으로 어렵다. (참고: [Configure permissions](https://code.claude.com/docs/en/permissions)) AI에게 이 아티클에 대해서 좀 더 생각해 볼 부분이 있냐고 했을 때 `gh`, `aws`, `kubectl` 같은 메이저 CLI가 아닌 마이너한 CLI의 경우에도 이 아티클의 주장을 적용할 수 있냐는 질문을 해줬다. 확실히 기존 학습 데이터가 있는 메이저한 CLI와는 다르게 마이너한 케이스는 CLI로 구현하더라도 설명이 필요하기 때문에 문서화가 필요할 것이다. 하지만 LLM 에이전트에서만 동작하는 MCP와는 달리, CLI는 사람도 직접 쓸 수 있다. 터미널에서도, AI도, 다른 스크립트에서도 쓸 수 있다. 더 활용 범위가 넓다는 점에서 확실히 이점이 있어 보인다. 이 아티클을 읽고 나니 뭔가 기존에 자랑스럽게 만들었던 리트코드, 백준 문제 조회 MCP 서버가 좀 부끄러워져서 CLI로 래핑이 가능할지 확인해봐야겠다. 티어 변환 로직이 있어서 단순 `curl + jq`로는 좀 어려울 것 같고,,, 어떻게 할지는 모르겠지만 CLI 구현이 가능하다면 함 해보겠습니다...