12개의 질문을 실행한 결과, Bash 래퍼(wrappers)가 7개의 스키마를 가진 Model Context Protocol(MCP)보다 더 많은 토큰을 소비했습니다. 이는 셸(shell)이 많은 엔지니어가 생각하는 것처럼 저렴한 지름길이 아님을 보여줍니다. 토큰 사용량은 대규모로 운영되는 대규모 언어 모델(LLM) 에이전트의 비용과 직결됩니다.
상황을 뒤집은 실험
한 개발자가 LLM 에이전트가 선박 데이터를 가져오는 네 가지 방법을 측정했습니다:
- MCP – Model Context Protocol을 통해 호스팅되는 7개의 도구 스키마.
- Bash + curl (cold) – 추가 프롬프트가 없는 순수 셸 호출.
- Bash + curl (warm) – 동일한 셸 호출에 안전한 사용을 안내하는 시스템 프롬프트가 추가된 형태.
- 전용 CLI 도구 – 특정 목적을 위해 구축된 명령줄 인터페이스.
네 가지 방식 모두 12번의 질문이 오가는 대화를 통해 실행되었습니다. API 비용을 결정하는 토큰 소비량은 다음과 같았습니다:
- MCP: 109,779 토큰
- Bash + curl (cold): 158,021 토큰
- Bash + curl (warm): 178,577 토큰
전용 CLI 도구의 수치는 공개되지 않았지만, 두 가지 Bash 변형 방식만으로도 이미 MCP의 비용을 넘어섰습니다.
셸이 프로토콜보다 비용이 더 많이 드는 이유
각 Bash 도구에는 에이전트에게 셸을 안전하게 호출하고, 출력을 파싱하며, 오류를 처리하는 방법을 알려주는 지침인 **"하네스 프롬프트(harness prompts)"**가 약 2,700 토큰씩 필요했습니다. 이 프롬프트만으로도 7개 MCP 스키마 전체의 총 토큰 양을 초과합니다.
비용은 초기 호출에서만 발생하는 것이 아닙니다. 실제 운영 환경에서 동일한 에이전트는 시작 시 11개의 MCP 서버를 미리 로드하여, 첫 번째 사용자 쿼리가 도착하기도 전에 19,800 토큰을 소비했습니다. 그 후 매 턴마다 에이전트는 모든 서버의 모든 스키마를 다시 읽었기 때문에, "지금 몇 시야?"와 같은 사소한 요청조차도 다른 모든 도구 설명에 대한 토큰 비용을 지불해야 했습니다.
조기 로딩(Eager loading)의 숨겨진 소모
LLM 에이전트가 매 턴마다 모든 도구 서버를 조기 로딩(eagerly load)하면 토큰 비용이 급격히 불어납니다. 실험 결과, Bash 사용의 "실제" 비용은 셸 명령 자체라기보다 매번 모델에 전송해야 하는 주변 컨텍스트(context)에 있었습니다.
- 고정 비용 도구(MCP 스키마)는 턴당 예측 가능한 토큰 오버헤드를 추가합니다.
- 동적 페이로드(curl 응답)는 대화 길이와 데이터 크기에 따라 늘어나는 부채를 추가합니다.
따라서 겉보기에는 "무료"처럼 보이는 셸이 실제로는 더 크고 가변적인 토큰 세금을 부과합니다.
AI 엔지니어가 다음에 해야 할 일
- 지연 로딩(Lazy loading)을 도입하세요. 도구 서버는 스키마가 실제로 필요할 때만 로드하고, 매번 다시 읽는 대신 턴이 바뀌어도 메모리에 유지하세요.
- 도구 스키마를 턴당 고정 비용으로 취급하세요. 셸 명령이 무료라고 가정하기보다 알려진 MCP 정의 크기를 기준으로 토큰 예산을 계획하세요.
- "셸 = 저렴함"이라는 가정을 재평가하세요. 설계를 확정하기 전에 각 도구 경로에 대한 토큰 사용량을 프로파일링하세요.
- 소형 모델에는 구조화된 도구를 활용하세요. 컨텍스트 창이 제한적이더라도 잘 정의된 스키마는 추론, 단위 변환 및 오류 처리를 향상시킵니다.
핵심 요약: 비용을 결정하는 것은 프로토콜 설계가 아니라 토큰 경제학입니다. 도구 서버를 언제 어떻게 로드할지 관리하면 대화에서 수만 개의 토큰을 절약할 수 있으며, 이는 운영 비용의 직접적인 절감으로 이어집니다.
Source: https://dev.to/clarkbw--/enabling-bash-costs-more-context-than-seven-mcp-tool-schemas-2h82
