MCP Server가 Context Window를 잡아먹는다 – CLI 기반 AI Agent 인터페이스 대안
Apideck CLI – An AI-agent interface with much lower context consumption than MCP
TL;DR Highlight
Apideck의 CLI 기반 agent 인터페이스는 MCP 툴 정의의 55,000토큰 이상 context bloat 문제를 해결하고 토큰 소비를 ~80토큰으로 감소시킨다.
Who Should Read
AI agent나 LLM 기반 자동화 시스템을 구축 중인 백엔드/풀스택 개발자 중, MCP 서버 연동 시 context window 소진 문제를 겪고 있거나 고민하는 사람.
Core Mechanics
- GitHub, Slack, Sentry처럼 세 개의 MCP 서버만 연결해도 agent가 사용자 메시지를 읽기 전에 이미 55,000토큰 이상이 툴 정의로 소모된다. Claude의 200k 컨텍스트 한도에서 무려 27% 이상이 날아가는 셈이다.
- MCP 툴 하나당 이름, 설명, JSON 스키마, 필드 설명, enum, 시스템 인스트럭션을 합치면 550~1,400토큰을 쓴다. SaaS 플랫폼처럼 엔드포인트가 50개 넘으면 툴 설명만으로 50,000토큰이 사라진다.
- 실제로 한 팀은 MCP 서버 세 개가 200,000토큰 중 143,000토큰(72%)을 잡아먹어 실제 대화, RAG 문서, 추론, 응답에 쓸 수 있는 공간이 57,000토큰밖에 남지 않았다고 보고했다.
- Scalekit이 Claude Sonnet 4로 75회 동일 조건 비교 테스트를 돌린 결과, MCP는 CLI 대비 4~32배 더 많은 토큰을 소비했다. 가장 단순한 작업인 저장소 언어 확인 하나에서 CLI는 1,365토큰, MCP는 44,026토큰을 썼다. 차이의 대부분은 43개 툴 정의가 매 대화마다 주입되는 스키마 오버헤드였다.
- Duet을 만든 David Zhang(@dzhng)은 OAuth와 동적 클라이언트 등록까지 다 구현했음에도 MCP 통합을 완전히 걷어냈다. 그는 이 상황을 '트릴레마'라고 불렀다: 모든 툴을 미리 로드하면 추론·히스토리 공간이 사라지고, 통합 수를 제한하면 기능이 줄고, 동적 로딩을 구현하면 레이턴시와 미들웨어 복잡도가 증가한다.
- Apideck이 제안하는 해결책은 MCP 대신 CLI를 agent 인터페이스로 쓰는 것이다. agent 프롬프트를 약 80토큰짜리 셸 명령 안내로 대체하고, 세부 스키마는 `--help` 플래그로 필요할 때만 가져오는 '점진적 공개(progressive disclosure)' 방식을 쓴다. 셸 명령을 실행할 수 있는 agent라면 프로토콜 지원 없이 바로 사용 가능하다.
- 업계 대응 방향은 크게 세 가지로 수렴 중이다: ① MCP를 유지하되 스키마 압축·온디맨드 툴 검색으로 싸우기, ② MCP를 버리고 CLI/스크립트로 전환하기, ③ 두 방식을 혼합해 agent에게 BASH와 CLI 래퍼만 주고 MCP는 백엔드에서만 쓰기.
Evidence
- MCP Core Maintainer라고 밝힌 댓글 작성자는 'context window 문제는 agent harness 문제이지 MCP 프로토콜 자체의 문제가 아니다'라고 반박했다. Claude Code나 Codex 같은 주요 harness는 이미 수개월 전부터 스마트 툴 검색을 지원해서 전체 툴 목록을 매번 전송하는 방식을 쓰지 않는다는 주장이다. MCP vs CLI 논쟁 자체가 블로그 포스트에서 포스트로 반복되는 '클리셰'가 됐다는 비판도 덧붙였다.
- CLI의 보안 취약점을 지적한 의견이 있었다. CLI에서 API 시크릿을 관리할 때 환경변수는 프롬프트 인젝션 공격 한 방에 덤프될 수 있고, 크리덴셜 파일도 agent가 접근 가능하다는 문제가 있다. 반면 MCP는 서버 프로세스 안에 시크릿을 격리해서 agent가 악성화되더라도 덤프하기 어렵게 만들 수 있다는 장점이 있다고 설명했다. CLI로 동일한 보안 수준을 달성하려면 결국 MCP와 비슷한 소켓 서버 구조를 재발명하게 된다는 경험도 공유됐다.
- 실제로 85개 툴을 가진 MCP 서버를 만들면서 툴 매니페스트만 ~17,000토큰이 나왔다는 개발자가 경험을 공유했다. 해결책으로 툴셋을 minimal/authoring/experimental 티어로 나누고 환경변수로 제어하는 방식을 썼으며, 80%의 툴은 `_connect` 호출 전까지 '미연결' 상태로 두는 레이지 로딩 패턴을 적용해 실제 노출되는 툴 수를 줄였다.
- CLI의 단점으로 '점진적 공개(progressive disclosure)'가 실제로는 레이턴시를 증가시킨다는 반론이 있었다. `--help`로 스키마를 필요할 때마다 가져오면 새 스레드마다 모델과 추가 왕복이 발생하고, CLI 사용법을 프롬프트에 직접 넣으면 결국 MCP를 임시방편으로 재발명하는 꼴이라는 지적이다. 비용 절감 vs 레이턴시 트레이드오프를 상황에 맞게 선택해야 한다는 의견이었다.
- Unix 철학을 인용한 의견도 있었다. 파일과 파이프, 프로세스로 composability를 해결한 Unix처럼, AI agent도 BASH와 CLI 래퍼만 주고 MCP는 백엔드에서만 처리하는 방식이 실용적이라는 경험담이 나왔다. 실제로 소규모 비즈니스 agent를 이렇게 구축해서 잘 작동하고 있다는 사례도 공유됐다.
How to Apply
- MCP 서버를 여러 개 연결했더니 context window가 자꾸 초과되는 경우, 툴 정의를 전부 미리 주입하는 대신 환경변수로 툴셋 티어(minimal/full)를 분리하거나 `_connect` 패턴으로 레이지 로딩을 구현하면 실제 노출 토큰 수를 80% 이상 줄일 수 있다.
- 내부 자동화 도구를 agent에 연결할 때, API를 CLI로 래핑하고 agent에게는 셸 실행 권한만 주는 방식을 검토해볼 수 있다. 세부 스키마는 `--help`로 필요할 때만 조회하게 하면 초기 컨텍스트 점유를 수만 토큰에서 수백 토큰 수준으로 낮출 수 있다. 단, 새 스레드마다 `--help` 왕복이 추가되므로 레이턴시가 중요한 서비스엔 맞지 않을 수 있다.
- Claude Code나 Codex처럼 이미 툴 검색(tool search)을 내장한 harness를 쓰고 있다면, MCP를 걷어내기 전에 먼저 해당 기능을 활성화했는지 확인해보자. 전체 툴 목록을 매번 컨텍스트에 넣는 대신 필요한 툴만 동적으로 가져오는 방식이 이미 지원되고 있을 수 있다.
- API 시크릿 보안이 중요한 환경에서는 CLI 전환이 오히려 위험할 수 있다. 이 경우엔 MCP 서버를 별도 프로세스로 격리하고 agent의 프로세스 트리 밖에서 시크릿을 관리하는 구조를 유지하면서, 툴 수를 줄이거나 레이지 로딩으로 토큰 소비만 최적화하는 접근이 현실적이다.
Terminology
관련 논문
adamsreview: Claude Code용 멀티 에이전트 PR 코드 리뷰 파이프라인
Claude Code에서 최대 7개의 병렬 서브 에이전트가 각각 다른 관점으로 PR을 리뷰하고, 자동 수정까지 해주는 오픈소스 플러그인이다. 기존 /review나 CodeRabbit보다 실제 버그를 더 많이 잡는다고 주장하지만 커뮤니티에서는 복잡도와 실효성에 대한 회의론도 나왔다.
Claude를 User Space IP Stack으로 써서 Ping에 응답시키면 얼마나 빠를까?
Claude Code에게 IP 패킷을 직접 파싱하고 ICMP echo reply를 구성하도록 시켜서 실제로 ping에 응답하게 만든 실험으로, 'Markdown이 곧 코드이고 LLM이 프로세서'라는 아이디어를 네트워크 스택 수준까지 밀어붙인 재미있는 사례다.
AI Agent를 위한 Git: re_gent
AI 코딩 에이전트(Claude Code 등)가 수행한 모든 툴 호출을 자동으로 추적하고, 어떤 프롬프트가 어느 코드 줄을 작성했는지 blame까지 가능한 버전 관리 도구다.
Agent-Native CLI를 위한 설계 원칙 10가지
AI 에이전트가 CLI 도구를 더 잘 사용할 수 있도록 설계하는 원칙들을 정리한 글로, 에이전트가 CLI를 도구로 활용하는 빈도가 높아지면서 이 설계 방식이 실용적으로 중요해지고 있다.
Agent-harness-kit: MCP 기반 멀티 에이전트 워크플로우 오케스트레이션 프레임워크
여러 AI 에이전트가 서로 역할을 나눠 협업할 수 있도록 조율하는 scaffolding 도구로, Vite처럼 설정 없이 빠르게 멀티 에이전트 파이프라인을 구성할 수 있다.
Tilde.run – AI Agent를 위한 트랜잭션 기반 버전 관리 파일시스템 샌드박스
AI 에이전트가 실제 프로덕션 데이터를 건드려도 롤백할 수 있는 격리된 샌드박스 환경을 제공하는 도구로, GitHub/S3/Google Drive를 하나의 버전 관리 파일시스템으로 묶어준다.