MCP가
당신 Agent의 Context를 잡아먹게 두지 마세요
199개 도구, 매 턴마다 schema 오버헤드 40K tokens——우리가 5계층 아키텍처로 90%를 줄이기까지.
Service → SDK → CLI → MCP → Skill로 AI Agent가 최소한의 token으로 최대한 많은 일을 하게 합니다.
우리는 어떤 문제를 겪었을까요?
세 가지 실제 문제 때문에 이 5계층 아키텍처가 탄생했습니다. Token 폭증, MCP 프로세스 폭증, 너무 많은 Tool로 인한 선택 오류입니다.
Token 폭증
Playwright MCP는 호출할 때마다 많은 token을 소비합니다. 사용하지 않을 때도tool schema가 context window를 차지해,매 턴마다비용을 치릅니다.
Playwright CLI로 교체한 뒤:
다섯 계층은 각각 무슨 일을 할까요?
위에서 아래로 다섯 계층은 Skill(의도 라우팅), MCP(쓰기 작업), CLI(읽기 작업), SDK(HTTP를 직접 다루는 유일한 래퍼 계층), Service(비즈니스 로직 본체)입니다. 상위 계층은 항상 하위 계층을 import합니다.
핵심 원칙:Bug Fix 자동 전파——SDK bug 하나를 고치면 CLI와 MCP가 동시에 고쳐집니다. SDK 계층이 없다면 각 소비자가 HTTP + auth + error handling을 따로 구현해야 하므로 유지 관리가 지옥이 됩니다.
Skill ──invoke──► CLI (읽기) / MCP (쓰기)
MCP ──import──► SDK ──HTTP──► Service
CLI ──import──► SDK ──HTTP──► Service
// SDK만 HTTP를 직접 다룹니다
// SDK를 바꾸면 모든 상위 소비자가 함께 업데이트됩니다
계층을 하나라도 빼면 왜 안 될까요?
| 소비자 | 최적의 접근 계층 | 이유 |
|---|---|---|
| 다른 Core Module | Service | 같은 프로세스에서 services.py를 직접 호출하므로 overhead가 0입니다 |
| Python 스크립트 / Notebook | SDK | 프로그램에서 접근할 수 있고 완전한 error handling을 제공합니다 |
| 사람(터미널) | CLI | --help 발견하기 쉽고 pipe로 조합할 수 있습니다 |
| AI Coding Agent Claude Code / Codex CLI / Gemini CLI |
CLI (읽기) / MCP (쓰기) | 읽기는 Bash를 사용해 schema가 0이고, 쓰기에는 typed input이 필요합니다 |
| 스케줄링 시스템 | CLI | shell command는 스케줄링의 공통 언어입니다 |
| AI 워크플로 | Skill | 상위 수준의 의도 라우팅으로 CLI 또는 MCP를 자동 선택합니다 |
“CLI는 overhead가 0인 범용 인터페이스입니다——shell을 실행할 수 있는 모든 것이 사용할 수 있고,
MCP는 MCP protocol을 지원하는 client만 사용할 수 있습니다.”
우리는 어떻게 여기까지 왔을까요?
이 아키텍처는 한 번에 설계된 것이 아닙니다——네 단계에서 당시 막혔던 문제를 하나씩 해결했고, 그 단계를 이어 붙여 지금의 형태가 되었습니다.
Token 폭증이 남긴 첫 번째 교훈
Playwright MCP의 tool schema는 매우 커서 매 대화 턴마다 system prompt에 주입됩니다. 그 턴에 브라우저를 사용하지 않아도 token은 그대로 소모됩니다. Playwright CLI로 교체한 뒤 token 사용량이 98% 줄었습니다.
깨달음:CLI로 처리할 수 있다면 MCP를 쓸 필요가 없습니다.
여러 session을 열 때의 곱셈식 재앙
MCP server가 23개로 늘어난 뒤에는 Claude Code session을 하나 더 열 때마다 모든 프로세스가 비례해서 복제됐습니다. 3개 session = 69개 상주 프로세스였습니다. 해결책은 mcpproxy로 통합하고 읽기 작업을 CLI로 옮기는 것이었습니다.
깨달음:MCP server / tool 수를 줄여야 합니다.
업계에서 가장 극단적인 tool 압축
Cloudflare의 Code Mode는 MCP에 2개의 tool,:search() 와 execute()만 노출합니다. 나머지 모든 작업은 sandbox에서 즉석으로 작성합니다. 이를 통해 tool 수와 기능이 반비례함을 보여줬습니다.
깨달음:우리는 그 정도로 극단적으로 가지 않지만 원칙은 같습니다——tool은 적을수록 좋습니다.
일회성 Tools — sandbox로 보완
모든 작업에 영구적인 tool이 필요한 것은 아닙니다. Cloudflare Code Mode에서 영감을 받아 대량 작업은 sandbox에서 즉석으로 작성하며 MCP tool slot을 차지하지 않습니다.
Cloudflare: 2 permanent tools + sandbox에서 모든 작업을 즉석 작성
실용적 접근: ≤10 permanent tools/server + sandbox로 사용 빈도가 낮은 작업 보완
// 공통 원칙: 영구 tool은 희소한 자원이며, 자리를 차지할 가치가 없으면 sandbox를 사용합니다
판단 기준:어떤 작업이 영구 tool이 될 가치가 있을까요?
→ 주 3회 이상 사용 + 복잡한 매개변수 조합 + discoverability 필요 → 다섯 계층 적용
→ 그 외에는 → sandbox에서 즉석 작성하고 사용 후 폐기
다섯 계층을 쓰지 않는다면?
| 대안 | 문제 | 결과 |
|---|---|---|
| Service만 사용 | HTTP 호출만 가능 | AI agent, cron, CLI 사용자가 모두 HTTP client를 직접 작성해야 합니다 |
| Service + MCP | Token overhead + 프로세스 폭증 | 23 servers × 3 sessions = 69개 프로세스, schema가 매 턴 token을 소비합니다 |
| Service + CLI | 쓰기 작업에 typed schema가 없음 | LLM이 잘못된 매개변수를 전달하며 input validation이 없습니다 |
| 모두 MCP 사용 | CLI 사용자가 배제됨 | Codex CLI, Gemini CLI, cron이 모두 접근할 수 없습니다 |
| 각 계층에서 HTTP를 독립적으로 구현 | 통합 SDK가 없음 | 한 곳을 고치고 다른 곳을 놓쳐 Ghost Parameter 안티패턴이 만연합니다 |
Agent SDK로 Tool 주입 직접 제어하기
Agent SDK로 client를 직접 만든다면애플리케이션 계층에서어떤 tool schema가 LLM의 context에 들어갈지 완전히 제어할 수 있습니다——플랫폼이 지원하기를 기다릴 필요가 없습니다.Speakeasy의 동적 도구 집합 솔루션은같은 방식으로 tool을 선별해 token을 96% 줄였습니다.
all_tools = mcp_server.tools_list() # 199개를 받음(protocol 계층)
relevant = bm25_filter(all_tools, query) # 직접 5개로 필터링
response = client.messages.create(
tools=relevant, # LLM에는 5개만 전송
)
핵심 구분:MCP protocol 계층의 tools/list 는 모든 도구를 반환합니다——이는 바꿀 수 없습니다.
하지만 client가 API의 tools[]에 무엇을 넣을지 결정합니다——이는전적으로 직접 제어할 수 있습니다.
Claude Code 같은 기성 client를 쓰나요? 모든 도구를 넣어 줍니다. 직접 만든 client를 쓰나요? 직접 선별하면 됩니다.
구현 비용은 사실 아주 낮습니다
“한계 비용은 줄고 조합 가능성은 장기적인 이익이 됩니다——하지만 유지 관리 비용도 오래 지속됩니다.”
⚠ 5계층 아키텍처의 대가
OpenCLI 커뮤니티의 흐름 변화
오픈 소스 커뮤니티에서도 CLI를 기본 인터페이스로 삼고 있습니다. 우리만 주장하는 방향이 아닙니다.
OpenCLI는 웹사이트와 데스크톱 애플리케이션을 표준화된 CLI로 바꿉니다.CLI-Anything은 Agent가 CLI를 통해 모든 소프트웨어를 조작할 수 있게 하려 합니다. 점점 더 많은 개발자가 “API가 있나요?”보다 “CLI가 있나요?”라고 묻습니다.
이유는 간단합니다. The New Stack의 2025년 보도에서도업계 전체가 Agentic CLI 시대로 접어들고 있다고 썼습니다. AI coding tool이 모두 shell을 실행할 수 있다면CLI는 자연스럽게 도구 간 최대 공약수가 됩니다.
CLI의 부활이 아닙니다——AI 시대에 CLI의 가치를 다시 발견한 것입니다.
199개 도구, 하나의 로직
읽기는 CLI로, 쓰기는 MCP로——199개 도구는 이 한 가지 경계를 기준으로 작동하며사람, 스크립트, AI가 각자 필요한 것을 사용합니다.
Token 폭증부터 커뮤니티 흐름을 통한 검증까지 모든 단계는 실제 문제에서 비롯됐고,한 곳을 바꾸면 모두 함께 업데이트됩니다.
문제점 1: Playwright MCP token 폭증
→ CLI token 98% 절감
문제점 2: CC를 여러 개 열면 → 프로세스가 비례해서 증가
→ mcpproxy 통합 + CLI로 읽기 작업 이전
문제점 3: Tool이 너무 많아 LLM이 정확히 고르지 못함
→ ≤10 tools/server + sandbox 로 보완
검증 1: Cloudflare는 단 2 tools로 IDE 전체를 실행
→ 같은 원칙이지만 우리는 더실용적입니다
검증 2: OpenCLI 커뮤니티가 CLI-first로 전환
→ AI 시대에 CLI는도구 간 최대 공약수입니다
// 정리
Service → SDK → CLI → MCP → Skill
199개 도구, 하나의 로직, 세 종류의 소비자
먼저 자신의 schema 비용을 계산해 보세요
위에서 말한 40K tokens는 제 환경의 수치입니다. 자신의 수치를 넣으면 결과는 완전히 달라질 수 있습니다.세 항목을 입력하고 이 글에서 인용한 두 상수(각 tool schema 약 200 tokens, 업계 권장치인 MCP server당 ≤ 10 tools)를 사용해 자신의 매 턴 오버헤드와 상주 프로세스 수를 계산해 보세요. 모든 계산은 브라우저 안에서 이뤄지며 데이터는 어디에도 전송되지 않습니다.
상수의 출처는 모두 이 글에 있습니다. 200 tokens/schema는 “8 tools × 200 tokens/schema = 1,600 tokens/turn”에서, 프로세스 수는 “3 sessions × 23 MCP servers = 69개 상주 프로세스”라는 선형 관계에서 가져왔습니다. 10 tools/server는 이 글에서 인용한 업계 권장치입니다.여기서는 schema의 상주 오버헤드만 계산하고 실제 I/O는 포함하지 않습니다——실제 사용량은 어떻게 호출하느냐에 따라 달라집니다.
AI Agent에게 복사해 주세요
MCP tool schema는 매 턴 token을 차지하지만 대부분의 tool은 사실 “읽기” 작업이라 schema가 전혀 필요하지 않습니다. 도구가 많아지면 schema만으로 수만 token을 소비하고, 10개를 넘으면 LLM이 잘못 선택할 가능성도 높아집니다. 이 글의 5계층 아키텍처는 “읽기”를 CLI로 옮기고 “쓰기”만 MCP에 남깁니다.
아래 내용을 AI에게 붙여 넣어 현재 MCP 설정부터 실제로 조사하게 한 다음, 이 다섯 계층에 비춰 무엇을 옮길 수 있는지 판단하게 하세요:
더 읽을거리
아래 글은 모두 제가 실제로 읽었고 의사결정에도 영향을 줬습니다. 아무렇게나 모아 놓은 목록이 아닙니다.
| 글 | 중요한 이유 |
|---|---|
| Code Mode: Give Agents an Entire API in 1,000 Tokens | Cloudflare의 실험에서는 단 2개의 tool로 IDE 전체를 실행해 token 오버헤드를 81% 줄였습니다. “tool은 적을수록 좋다”는 원칙을 검증했습니다 |
| Your MCP Server Is Eating Your Context Window | Apideck은 MCP schema가 context를 어떻게 차지하는지 분석하고 CLI를 대안으로 제시합니다——80 tokens prompt vs 수만 tokens schema |
| Advanced Tool Use — Anthropic Engineering | Anthropic은 tool schema가 context를 차지하는 문제를 공식적으로 인정하고, context 사용량을 85% 줄이는 Tool Search 메커니즘을 내놓았습니다 |
| How We Reduced Token Usage by 100x: Dynamic Toolsets | Speakeasy의 동적 도구 집합 솔루션은 input token을 96% 줄였습니다 |
| MCPProxy — MCP Gateway | BM25 인덱스로 도구를 동적으로 발견하는 오픈 소스 MCP 통합 게이트웨이로, 수백 개의 server와 수천 개의 tool을 지원합니다 |
| Welcome to the Agentic CLI Era | The New Stack은 AI coding tool 전반이 CLI로 전환하는 업계 흐름을 보도했습니다 |
| OpenCLI — Universal CLI Hub | AI Agent를 위해 설계된 범용 CLI 허브로, 웹사이트와 데스크톱 애플리케이션을 표준화된 CLI로 바꿉니다 |
| CLI-Anything — Making ALL Software Agent-Native | 홍콩대학교 연구: AI Agent가 CLI를 통해 모든 소프트웨어를 조작할 수 있게 합니다 |