LLM 보조 소프트웨어 개발 시대에 MCP보다 CLI 애플리케이션이 더 효과적인 이유와, 텍스트 기반 도구가 AI와 특히 잘 맞는 이유를 살펴본다.
지난 한 달 남짓 동안, 나는 개발 작업을 보조하기 위해 Claude Code를 사용해 왔다1. LLM 보조 프로그래밍 생태계에서 나를 가장 혼란스럽게 한 것 중 하나는 Model Context Protocol (MCP) 환경이다. 이론적으로 MCP는 구조화된 프로토콜을 통해 외부 시스템의 데이터를 LLM에 제공하는 방법이다. 그러나 이것은형편없다. 알고 보니 AI가 외부 시스템의 데이터를 직접 분석하고 조작하는 코드를 그냥 작성하게 하는 편이 더 효율적이다. 외부 시스템의 데이터를 LLM의 컨텍스트 창에 밀어 넣고 LLM이 그것을 더듬거리며 처리하게 하는 대신, LLM이 작성한 코드는 필요한 데이터 처리를 그냥 수행할 수 있다. 컴퓨터는 아주 오랫동안 대규모 데이터셋에 대해 명령을 실행하는 데 능숙해 왔고, AI는 그것을 대체하지 못할 것이다.
하지만 AI가 외부 시스템과 상호작용하기 위한 즉석 코드를 작성하게 하는 것보다 더 나은 방법은 무엇일까? 그냥 그 외부 시스템을 위한 완전한 기능의 CLI를 제공하면 된다! 제대로 만들어진 CLI 애플리케이션이 있다면, LLM은 즉석 코드를 작성할 때 외부 시스템의 기능을 추측할 필요가 없다. 대신 명령줄을 통해 매우 구조화된 텍스트 기반 방식으로 그것과 상호작용할 수 있다.
Claude를 짧게 사용해 본 동안, 나는 이것을 몇 가지 상황에서 실제로 확인했다:
sed, awk, grep 같은 고전적인 GNU 유틸리티를 사용하는 것을 꽤 좋아한다. 이러한 CLI는 아주 오래전부터 존재해 왔고, 매우 안정적이며, 아주 강력하다. 나는 모든 플래그를 알지도 못하고 올바른 awk나 sed 동작을 작성하는 방법도 모르지만, 인터넷은 알고 있고, 따라서 Claude도 안다.CLI가 LLM 친화적인 주된 이유는 CLI가 텍스트 기반이어서 모드 변환으로 낭비되는 토큰이 없기 때문이라는 점이 꽤 분명하다고 생각한다. LLM 보조 소프트웨어 엔지니어링의 시대에 접어들면서, 개발자 도구가 CLI 네이티브인 것은 필수적일 것이라고 나는 생각한다. 가능한 한 많이 컴퓨팅에서 명령줄을 사용하는 법을 배우는 데 많은 시간을 투자해 온 사람으로서, 이것은 꽤 통쾌한 일이다.
이것은 또한 UNIX 철학에도 꽤 통쾌한 일인데, 그 철학은 (부분적으로) “프로그램은 자신의 출력이 아직 알려지지 않은 다른 프로그램의 입력이 될 것이라고 예상해야 한다” 그리고 “프로그램은 텍스트 스트림을 다루도록 작성되어야 한다. 왜냐하면 그것이 보편적인 인터페이스이기 때문이다”라고 말한다. 알고 보니 UNIX 철학을 따른 CLI 애플리케이션은 AI 혁명에서 대체에 가장 잘 버티는 존재가 되었다.
참고 2026년 5월 18일: 아래에는 이 글과 같은 정서를 가진 다른 블로그 글들의 목록을 모으고 있다.