MCP 컨텍스트 윈도우 문제, 코드 모드로 해결!
MCP(Model Context Protocol)의 컨텍스트 윈도우(Context Window) 한계로 인해 스키마(Schema) 크기 문제 발생
Cloudflare의 코드 모드(Code Mode)를 참고하여 ZenStack 기반 MCP 서버에 3가지 도구(schema, check, execute)를 도입
스키마(Schema) 도구를 통해 LLM(Large Language Model)에 전체 스키마를 제공하고, 실행(execute) 도구로 쿼리 API(Query API) 실행
체크(check) 도구를 통해 쿼리 유효성을 검증하여 AI 환각(Hallucination) 방지 및 안정성 확보
Claude를 활용한 테스트 결과, 복잡한 쿼리(Query)도 성공적으로 처리하며 실용성(Practicality) 입증
MCP(Model Context Protocol)의 컨텍스트 윈도우(Context Window) 문제
본문은 MCP(Model Context Protocol)의 주요 문제점으로 과도한 컨텍스트 윈도우(Context Window) 사용을 지적한다. 특히, ZenStack을 사용하여 MCP 서버를 구축할 경우, 데이터베이스(Database) 스키마(Schema)가 커지면서 토큰(Token) 사용량 급증 문제가 발생한다. 이는 단일 툴(Tool)을 로드하는 데에도 400K 토큰이 소모되는 상황으로 이어진다. 이러한 문제로 인해, 기존 MCP 기반의 AI 통합이 어려워지고, Agent Skills와 같은 대안으로의 전환이 가속화되고 있다. 결과적으로, MCP의 확장성(Scalability) 및 효율성(Efficiency) 저하는 실제 프로덕션 환경에서 심각한 제약으로 작용한다.
Cloudflare의 코드 모드(Code Mode)와 ZenStack의 적용
Cloudflare는 Code Mode를 통해 2,500개 이상의 API 엔드포인트(Endpoint)를 단 두 개의 툴(Tool)로 축약하여 토큰 사용량을 99.9% 감소시켰다. ZenStack은 Cloudflare의 접근 방식을 참고하여, schema, check, execute 세 가지 툴을 도입했다.
schema: 전체 스키마(Schema)를 LLM(Large Language Model)에 제공하여 데이터 구조(Data Structure) 파악 지원
execute: 쿼리 API(Query API)를 실행하여 데이터베이스(Database)와 상호 작용
check: 쿼리 유효성을 검증하여 AI 환각(Hallucination) 방지 및 안정성 확보
이러한 접근 방식은 MCP 서버의 컨텍스트 윈도우(Context Window) 문제를 해결하고, LLM(Large Language Model)이 데이터베이스(Database)와 안전하게 상호 작용할 수 있도록 돕는다.
ZenStack 코드 모드(Code Mode)의 기술적 구현
ZenStack의 코드 모드(Code Mode)는 LLM(Large Language Model)이 Prisma ORM(Prisma ORM)의 쿼리 API(Query API)를 활용하여 데이터베이스(Database)와 상호 작용하도록 설계되었다. schema 툴은 전체 스키마(Schema) 정보를 제공하여 LLM(Large Language Model)이 데이터 구조(Data Structure)를 이해하도록 돕는다. execute 툴은 findMany, createMany, updateMany와 같은 쿼리 API(Query API)를 실행하며, check 툴은 쿼리 실행 전 유효성 검사(Validation)를 수행한다. 특히, check 툴은 LLM(Large Language Model)이 잘못된 파라미터를 사용하는 경우를 방지하여 데이터 무결성(Data Integrity)을 보장한다. 이러한 구조는 AI 환각(Hallucination)을 최소화하고, 안정적인 데이터베이스(Database) 접근을 가능하게 한다.
Claude를 활용한 테스트 결과
저자는 Claude를 사용하여 ZenStack 코드 모드(Code Mode) 기반 MCP 서버를 테스트했다. 50개 이상의 모델(Model)을 가진 복잡한 gym 애플리케이션(Application)을 시뮬레이션하고, AI가 생성한 가짜 데이터를 활용하여 쿼리(Query)를 실행했다. 테스트 결과, LLM(Large Language Model)은 여러 모델(Model)을 포함하는 복잡한 쿼리를 성공적으로 생성하고 실행했다. 또한, 쿼리 실행 전 check 툴을 통해 유효하지 않은 쿼리를 감지하고, 다른 경로로 문제를 해결하는 모습을 보였다. 이러한 결과는 ZenStack 코드 모드(Code Mode)가 실제 애플리케이션(Application)에서 실용성(Practicality)을 입증했음을 시사한다.
코드 모드(Code Mode) 기반 MCP 서버 구축 시 고려사항
코드 모드(Code Mode) 기반 MCP 서버를 구축할 때, 몇 가지 기술적 고려 사항이 존재한다. 첫째, LLM(Large Language Model)이 쿼리 API(Query API)를 정확하게 이해하고 사용할 수 있도록 프롬프트 엔지니어링(Prompt Engineering)이 중요하다. 둘째, 데이터베이스(Database) 스키마(Schema)가 변경될 경우, LLM(Large Language Model)이 최신 정보를 반영할 수 있도록 스키마(Schema) 업데이트 메커니즘을 구축해야 한다. 셋째, 쿼리 실행 시 발생할 수 있는 오류를 처리하기 위한 오류 처리(Error Handling) 전략을 마련해야 한다. 마지막으로, 보안을 위해 OAuth 인증(OAuth Authentication) 및 권한 관리(Authorization)를 적용하여 데이터베이스(Database) 접근을 안전하게 관리해야 한다.