35-Tool MCP 서버를 구축해 AI 토큰 사용량을 95% 절감했습니다

발행: (2026년 2월 26일 오후 04:36 GMT+9)
14 분 소요
원문: Dev.to

Source: Dev.to

번역을 진행하려면 번역하고자 하는 전체 텍스트를 제공해 주세요. 코드 블록이나 URL은 그대로 유지하면서, 본문만 한국어로 번역해 드리겠습니다.

컨텍스트가 무거운 AI 코드 탐색 – 문제

  • 모델이 파일을 하나씩 읽으며 프로젝트 구조를 이해하기 위해 50 K+ 토큰을 소모했습니다.
  • 실제 작업을 시작하기 에 컨텍스트 제한에 도달했습니다.

내 솔루션 – MCP Repo 컨텍스트 서버

I built an MCP (Model Context Protocol) server that analyzes a codebase once, extracts everything an AI agent needs (function behaviours, call graphs, DB queries, HTTP calls, …), and serves precise answers in 2‑4 K tokens instead of 50 K+.

작동 방식

When you point an AI agent at a codebase, it has no memory. Every session starts from scratch, runs grep, reads files one by one, and builds a mental model—slowly, expensively, and incompletely.

For a medium‑sized Go project (~100 files) a typical exploration burns:

문제Tokens
존재하는 함수 파악하기≈ 50 K
grep → read 를 여러 차례 수행
파일 간 관계(호출 그래프) 누락

이것은 AI 문제가 아니라 컨텍스트 전달 문제입니다.

아키텍처

┌──────────────┐     ┌──────────────────┐     ┌─────────────────┐
│  AI Agent    │────▶│  MCP Server      │────▶│  Storage Layer  │
│  (Claude)    │◀────│  (JSON‑RPC/stdio)│◀────│  JSON + SQLite │
└──────────────┘     └──────────────────┘     └─────────────────┘

                    ┌───────┼───────┐
                    ▼       ▼       ▼
              AST Parser  Vector  Call Graph
              (Go)        Search  Builder

작동을 가능하게 하는 세 가지 레이어

  1. AST 파싱 – Go의 go/ast 패키지를 사용하여 추출:

    • 모든 함수 시그니처
    • 단계별 동작
    • DB 쿼리, HTTP 호출, 오류 처리 패턴, 부수 효과
    • 래핑된 오류, 지연 호출, 고루틴 실행(정규식이 아닌 실제 구문 트리 탐색)
  2. 시맨틱 벡터 검색 – 각 함수/타입은 SQLite에 저장된 384차원 TF‑IDF 임베딩을 갖습니다.

    • “인증 코드 찾기”와 같은 쿼리는 의미적으로 유사한 함수를 매칭합니다.
    • 외부 API 호출 없이 로컬에서 임베딩을 계산합니다.
  3. 콜 그래프 추출 – 전체 콜 그래프(직접 호출, 고루틴, 지연 호출)를 구축합니다.

    • get_callersvisualize_call_graph와 같은 도구를 지원합니다(머메이드 다이어그램).

Sample Tools (35 total)

CategoryToolDescription
Function Insightget_function_context동작 요약, 실행 단계, DB 쿼리(실제 SQL), HTTP 호출(엔드포인트), 오류 처리 패턴, 호출자 및 피호출자를 반환합니다.
Side‑Effect Searchsearch_by_side_effecteffect: "db_query" → DB에 접근하는 모든 함수(쿼리 포함). http_call, file_io, logging에도 적용됩니다.
Concept Searchsearch_by_conceptconcept: "authentication" → 의미 인덱스로 구동되는 인증 관련 모든 함수.
Incremental Updaterefresh_file변경된 단일 파일을 약 10 ms에 재분석하여 저장된 컨텍스트를 업데이트합니다.
Visualizationvisualize_call_graph호출자와 피호출자의 관계를 지정 깊이로 Mermaid 흐름도로 생성합니다.

토큰 사용량 비교

작업에이전트 전용 (Claude)MCP 서버
함수 이해~50 K 토큰~4 K 토큰
관련 코드 찾기~30 K 토큰~2‑3 K 토큰
파일 편집 후 (전체 재탐색)~1‑2 K 토큰
자연어 Q&A불가능~8 K 토큰

결과: 쿼리당 토큰 사용량이 10‑25배 감소 → 컨텍스트 제한 초과가 없고, 빠르고 반응성 좋은 AI 지원.

구현 세부 사항

  • Dependencies: go-git (Git 작업)와 go-sqlite3 (벡터 저장)만 사용합니다.
    나머지 기능(AST 파싱, HTTP 처리, JSON)은 Go 표준 라이브러리를 이용 → 바이너리 크기 작고, 공급망이 최소화되며, 배포가 간단합니다.

  • Embeddings: OpenAI 임베딩 API 대신 로컬 TF‑IDF를 선택했습니다.

    • 코드 검색에 충분한 품질을 제공 (함수 이름 및 패턴이 구별 가능).
    • 오프라인 동작, 지연 시간 0, API 키 불필요, 속도 제한·비용 없음.
  • Result Pagination: 검색 결과는 간결한 레퍼런스로 반환되며, 각 레퍼런스에는 AI가 상세 정보를 요청할 수 있는 detail_ref가 포함됩니다.

    • AI는 ~2 K 토큰 안에 약 20개의 매치를 받아보고, 실제로 필요한 2‑3개에 대해서만 전체 내용을 가져옵니다.
  • Concurrency: 서로 다른 레포지토리 분석은 동시에 실행되며, 동일 레포지토리 내 작업은 순차적으로 처리됩니다.

    • 전역 뮤텍스를 피하면서 서비스 간 병렬 작업을 가능하게 합니다.
  • Language Support: 현재 Go 전용 깊은 AST 분석을 제공하고, 다른 언어는 기본 구조만 추출하는 일반 추출기를 사용합니다 (동작 세부 사항은 제공되지 않음).

    • 다음 단계: Python 및 TypeScript용 Tree‑Sitter 파서 추가.
  • Transport: 현재는 STDIO 전용입니다. MCP 사양은 HTTP/SSE도 지원하므로, 서버를 장기 실행 데몬으로 운영해 여러 AI 세션이 공유하도록 할 수 있습니다.

    • 현재는 각 Claude Code 세션이 자체 서버 프로세스를 생성합니다.

로드맵 – 조직 수준 인텔리전스로 확장

핵심 기능: “누군가 /login을 호출하면 어떻게 될까?”
서버는 전체 흐름을 추적해야 합니다:

  • Request → Service A LoginHandler → Service B /auth/validate → Kafka user.verified → Service C VerificationHandler.

이를 달성하기 위해서는 다음이 필요합니다:

  1. HTTP 클라이언트 호출 감지 – 외부 HTTP 호출을 추출하고 대상 서비스/엔드포인트를 추론합니다.
  2. 메시지 버스 (Kafka) 흐름 추적 – 프로듀서/컨슈머를 식별하고 토픽을 핸들러에 매핑합니다.
  3. 크로스 서비스 호출 그래프 – 레포별 그래프를 통합하여 전역 뷰를 만듭니다.
  4. 전송 업그레이드 – 지속적인 데몬을 위해 HTTP/SSE를 구현합니다.
  5. 다중 언어 AST – Python 및 TypeScript용 Tree‑Sitter 파서를 추가하여 지원 범위를 확대합니다.

TL;DR

  • 문제: AI 에이전트가 코드베이스를 이해하는 데만 수만 토큰을 낭비합니다.
  • 해결책: 레포를 한 번 사전 처리하고 풍부한 AST 기반 메타데이터를 저장한 뒤 경량 MCP 서버를 통해 제공합니다.
  • 결과: 쿼리당 2‑4 K 토큰, 오프라인 작동, 빠른 증분 업데이트, 그리고 조직 전체 코드 인텔리전스로 가는 명확한 경로.

Source:

MCP Repo Context – Recent Enhancements

Overview

MCP 서버는 개발자가 코드를 실행하지 않아도 더 풍부한 교차‑레포 인사이트를 제공하도록 진화하고 있습니다. 아래는 새로운 기능, 도구 및 사용 방법을 간결하게 마크다운 형식으로 정리한 내용입니다.

1. End‑to‑End Request Tracing

  • Static analysis가 이제 대상 URL, 라우트 등록(gorilla/mux 등) 및 비동기 메시지 생산자/소비자(Kafka, RabbitMQ, NATS)를 파싱합니다.
  • 파싱된 데이터를 레포 전체에 매핑하여 서비스‑간 흐름 그래프를 구축합니다.
  • 새 도구:
    • trace_api_flow – 진입점부터 모든 하위 서비스까지 요청을 추적합니다.
    • get_service_map – 전체 서비스 연결 지도를 시각화합니다.

배포되지 않은 코드에 대한 분산 추적을 위한 정적 분석이므로 OpenTelemetry 계측이 필요하지 않습니다.

2. Full Module Dependency Parsing

  • 서버가 이제 go.mod 파일을 읽어 다음을 처리합니다:
    • 직접 및 간접 의존성.
    • replace 지시문.
    • 임포트 분류(표준 라이브러리 vs. 내부 vs. 외부).
  • 도구: get_dependency_graph – 레포 간 의존 관계를 보여주는 Mermaid 다이어그램을 출력합니다.

이는 교차‑레포 기능의 기반을 형성합니다.

3. Organization‑Wide Semantic Indexing

  • 레포를 조직 모델 아래에 그룹화할 수 있습니다.
  • search_org 도구가 추가되어 다음을 결합합니다:
    • 키워드 검색.
    • 벡터 검색.
    • reciprocal rank fusion을 통한 하이브리드 랭킹.

예시 쿼리: “find authentication code” → 50개 이상의 레포에서 결과를 반환하고, 관련도에 따라 순위를 매깁니다.

4. One‑Call PR Impact Analysis

여러 도구를 호출하는 대신, 에이전트가 이제 단일 함수를 호출할 수 있습니다:

  • analyze_pr_impact – 다음을 반환합니다:
    • 변경된 함수 동작.
    • 영향을 받는 호출자.
    • 교차 서비스 영향.
    • 의존성 수준 영향.
    • 위험 평가.

가장 흔한 세 가지 워크플로(PR 영향 분석, API 흐름 설명, 아키텍처 검토)를 위한 레시피가 8 K 토큰 예산 내에 머무릅니다.

5. Extensible Analyzer & Embedder

  • 플러그인 인터페이스 도입:
    • AnalyzerPlugin – 언어 지원 추가(TypeScript, Python 등).
    • EmbedderPlugin – 임베딩 모델 교체.

현재 실험 중인 모델: Voyage Code‑3 – 코드 검색에서 OpenAI보다 16 % 향상되었습니다.

6. REST API & Multi‑Tenant Deployment

  • 핵심 도구가 이제 REST API로 래핑되어 제공됩니다:
    • 푸시 이벤트에 대한 자동 분석을 위한 GitHub/GitLab 웹훅 통합.
    • 조직 격리를 위한 멀티‑테넌트 스토리지.
    • 비동기 분석 큐잉.

목표: 개발자마다가 아니라 팀 전체에 한 번 배포하는 것.

7. Open‑Source Repository

https://github.com/yashpalsinhc/mcp-repo-context

8. Configuration for Claude Code

다음 항목을 MCP config(JSON‑RPC over stdio)에 추가하세요:

{
  "mcpServers": {
    "repo-context": {
      "command": "path/to/mcp-repo-context",
      "args": ["--data-dir", "~/.mcp-data"]
    }
  }
}

9. Typical Claude Code Interaction

> Analyze my local project at /path/to/repo
> What does the CreateUser function do?
> Find all database operations
> Show me the call graph for HandleLogin

10. Takeaway

AI 기반 개발자 도구를 구축한다면 MCP 생태계를 탐색해 볼 가치가 있습니다:

  • 간단한 프로토콜(JSON‑RPC over stdio).
  • Go 기반 서버는 성능이 뛰어나고 확장이 쉽습니다.
  • 비용이 많이 들고 느린 AI 탐색을 빠르고 정확한 질의로 전환합니다.

저는 이 서버를 매일 사용합니다 – AI와 코드를 다루는 방식이 완전히 바뀌었습니다.

0 조회
Back to Blog

관련 글

더 보기 »