기존 MCP 방식의 한계와 토큰 낭비 문제
MCP(Model Context Protocol)는 AI 모델이 외부 도구를 호출할 수 있게 해주는 훌륭한 규격이지만, 도구의 개수가 많아질수록 치명적인 문제에 직면합니다. 각 도구는 이름, 설명, 복잡한 JSON 스키마를 포함하며, 이는 모델의 컨텍스트 윈도우를 대량으로 점유합니다. 예를 들어, 42개의 도구를 가진 시스템에서는 유용한 작업을 시작하기도 전에 약 18,000개의 토큰이 소모됩니다. Cloudflare와 같은 대규모 시스템에서는 수백만 토큰이 낭비될 수 있는 심각한 비효율성이 발생합니다. 모델은 이 방대한 스키마를 모두 이해하고 적절한 도구를 선택해야 하므로 추론 비용이 증가하고 정확도가 떨어질 위험이 있습니다. 또한, 도구가 많아질수록 모델이 잘못된 도구를 선택하거나 인자를 혼동할 가능성도 높아집니다.
Code Mode의 핵심 개념: 두 개의 도구로 모든 기능 제어
이러한 문제를 해결하기 위해 제시된 ‘Code Mode’는 수십 개의 도구 정의를 단 두 개의 메타 도구로 대체합니다.
- code_search: AI가 Ruby 코드를 작성하여 전체 도구 카탈로그를 필터링하고 탐색할 수 있는 읽기 전용 샌드박스를 제공합니다.
- code_execute: AI가 직접 Ruby 코드를 실행하여 필요한 도구들을 호출(
call_tool)하고, 결과를 가공하며, 여러 도구 호출을 하나의 워크플로우로 묶어 실행할 수 있게 합니다.
이 방식의 핵심 통찰은 최신 LLM들이 거대한 JSON 스키마를 탐색하는 것보다 코드를 작성하는 능력이 훨씬 뛰어나다는 점에 있습니다. 프로그래밍 환경을 제공함으로써 AI는 스스로 최적의 경로를 찾아내고 복잡한 로직을 서버 측에서 한 번에 처리하도록 유도합니다.
Ruby를 이용한 안전한 샌드박스 구현 전략
Ruby의 BasicObject는 최소한의 메서드만 가진 ‘클린 룸’ 환경을 제공하여 안전한 코드 실행의 기반이 됩니다. Kernel, File, Dir 등 시스템 접근이 가능한 모듈을 차단하고, 정규식을 이용해 eval, system, require와 같은 위험한 패턴을 사전에 필터링합니다. 또한 실행 시간 제한(Timeout)을 설정하여 무한 루프와 같은 자원 고갈 공격을 방지합니다. SearchSandbox는 도구 레지스트리에 접근할 수 있게 하고, ExecuteSandbox는 사용자 컨텍스트를 유지하면서 실제 도구 호출을 수행할 수 있도록 설계되었습니다. 이러한 다중 계층 보안 설계는 AI가 생성한 코드가 시스템에 해를 끼치지 않도록 보장하면서도 개발에 필요한 유연성을 제공합니다.
LLM 기반 보안 스캔 및 프로필 기반 라우팅
단순한 정규식 필터링을 넘어, Google의 Gemini 3 Flash 모델을 활용한 사전 보안 스캔 단계를 추가합니다. AI가 제출된 코드를 실행하기 전에 해당 코드가 안전한지(SAFE) 아니면 위험한지(UNSAFE)를 판단하게 함으로써 의미론적인 보안 계층을 구축합니다. 또한 Rack 미들웨어를 사용하여 기존의 일반 MCP 엔드포인트와 Code Mode 엔드포인트를 분리하고, 설정 파일(mcp.yml)을 통해 노출할 도구를 프로필별로 관리합니다. 이를 통해 기존 시스템과의 호환성을 유지하면서도 새로운 효율적인 인터페이스를 동시에 제공할 수 있습니다. 이는 개발자가 점진적으로 시스템을 전환하거나 특정 클라이언트에게만 최적화된 모드를 제공할 수 있게 합니다.
실무 적용 사례 및 성능 향상 결과
실제 적용 사례에서, 20개의 항목을 업데이트해야 하는 작업의 경우 기존 방식으로는 21번의 라운드 트립(목록 조회 1회 + 업데이트 20회)이 필요했습니다. 각 라운드 트립마다 모델은 결과를 분석하고 다음 행동을 결정해야 하므로 지연 시간과 비용이 누적됩니다. 하지만 Code Mode를 사용하면 AI가 반복문을 포함한 단일 Ruby 코드를 작성하여 한 번의 호출로 모든 작업을 완료할 수 있습니다. 이는 응답 속도를 비약적으로 향상시킬 뿐만 아니라, 각 단계마다 모델이 다시 추론해야 하는 부담을 없애주어 전체적인 작업 성공률을 높입니다. 도구가 20개 이상이거나 복잡한 연쇄 작업이 빈번한 시스템에서 Code Mode는 단순한 최적화를 넘어 필수적인 아키텍처 선택이 됩니다.