tree-sitter AST 파싱을 통한 정밀한 GitHub 소스 코드 검색용 고효율 MCP 서버 jcodemunch-mcp
요약
tree-sitter AST 파싱을 활용하여 GitHub 소스 코드를 정밀하게 검색하는 고효율 MCP 서버 jcodemunch-mcp를 소개합니다. 파일 전체를 읽는 대신 필요한 코드만 검색하여 AI 토큰 비용을 95% 이상 절감할 수 있습니다.
핵심 포인트
- tree-sitter AST 파싱을 통한 정밀한 코드 검색 지원
- AI 토큰 사용량을 최대 95% 이상 절감하여 비용 효율성 극대화
- Claude Code, Cursor, VS Code 등 다양한 MCP 호환 클라이언트와 연동 가능
- 함수, 클래스, 메서드 단위의 정밀한 컨텍스트 제공
tree-sitter AST (Abstract Syntax Tree) 파싱을 통해 정밀한 GitHub 소스 코드를 검색할 수 있는, 업계 선도적이며 가장 토큰 효율적인 MCP 서버입니다. 코드 탐색 시 AI 토큰 비용을 95% 이상 절감하세요 — 파일 전체를 읽느라 컨텍스트 윈도우 (Context Window)를 낭비하는 것을 멈추십시오.
실제 운영 환경에서의 결과:
350B+ 토큰 절감 · 48,000명 이상의 개발자 · 169만 달러 이상의 AI 지출 방지 · 40,000kg 이상의 CO₂ 배출 방지
실시간 텔레메트리(Telemetry): jcodemunch.com — 벤치마크: 평균 99.6% 토큰 감소 (15개 작업 / 3개 리포지토리, 피크 시 99.9%; 2026-07-23 실행).
Autohand Code, Claude Code, Cursor, VS Code, Codex CLI, Continue, Windsurf 및 모든 MCP 호환 클라이언트와 함께 작동합니다.
커맨드 라인(Command Line)을 선호하시나요?
pip install jcodemunch-mcp
uvx jcodemunch-mcp
PyPI와 독립적인 버전 안정적 설치 채널을 원하는 고정/B2B 배포의 경우, 리포지토리에서 직접 설치하십시오 (git 필요, 소스에서 빌드):
pip install git+https://github.com/jgravelle/jcodemunch-mcp.git
uvx --from git+https://github.com/jgravelle/jcodemunch-mcp.git jcodemunch-mcp
Quickstart - https://github.com/jgravelle/jcodemunch-mcp/blob/main/QUICKSTART.md
상세 정보: http://jcodemunch.com/
실시간 OSS (Open Source Software) 코드 상태 관측소 — Express, FastAPI, Gin, Pydantic, Django, Flask, NestJS, Cobra 및 본 리포지토리에 대한 주간 6축 상태 스냅샷 제공: https://jgravelle.github.io/jcodemunch-observatory/
토큰 비용 레이더 (Token Cost Radar) — Claude Code / Cursor / MCP를 사용하는 팀을 위한 AI 토큰 비용, 최소화 전략 및 예산 트렌드에 대한 일일 인텔리전스 제공:
이것을 사용하여 돈을 버세요, 그러면 Uncle J도 맛을 좀 볼 것입니다. 괜찮죠? 상세 내용
우리의 보장: 만약 jCodeMunch가 비용을 스스로 회수하지 못한다면, 당신은 jCodeMunch에 비용을 지불하지 않습니다!
대부분의 AI 에이전트는 비싼 방식으로 리포지토리를 탐색합니다:
파일 전체를 열기 → 수천 줄의 무관한 코드를 훑어보기 → 반복.
이것은 단순히 "조금 비효율적인" 것이 아닙니다.
이것은 토큰 소각로 (Token Incinerator) 입니다.
jCodeMunch는 코드베이스를 한 번 인덱싱(Indexing)하여 에이전트가 필요한 정확한 코드만을 바이트 수준의 정밀도로 검색할 수 있게 합니다: 함수(functions), 클래스(classes), 메서드(methods), 상수(constants), 개요(outlines), 그리고 엄격하게 범위가 지정된 컨텍스트 번들(context bundles)을 포함합니다.
검색 비중이 높은 워크플로(Retrieval-heavy workflows)에서, 이는 코드 읽기 토큰 사용량을 통상 95% 이상 절감합니다. 에이전트가 단 하나의 유용한 구현(implementation)을 찾기 위해 거대한 파일을 무차별적으로 읽는(brute-reading) 행위를 중단하기 때문입니다.
| 작업 (Task) | 전통적인 방식 (Traditional approach) | jCodeMunch 사용 시 |
|---|---|---|
| 함수 찾기 | 대형 파일을 열고 스캔 | 심볼(symbol) 검색 → 정확한 구현체 가져오기 |
| ... | ... | ... |
한 번 인덱싱하십시오. 저렴하게 쿼리하십시오. 계속 나아가십시오.
정밀한 컨텍스트(Precision context)가 무차별적인 컨텍스트(brute-force context)를 압도합니다.
| 문서 (Doc) | 내용 |
|---|---|
| QUICKSTART.md | 3단계로 끝내는 인덱싱 시작하기 |
| ... | ... |
검색(Retrieval)은 **무엇(what)**을 보낼지 결정합니다. MUNCH는 어떻게 패킹(how to pack)할지를 결정합니다.
모든 도구 응답(tool response)은 장황한 JSON 대신 목적에 맞게 설계된 컴팩트한 와이어 포맷(wire format)으로 방출될 수 있습니다. 경로 접두사(Path prefixes)는 짧은 핸들(handles)로 내부화(interned)되며, 딕셔너리(dict)의 동질적 리스트(homogeneous lists)는 단일 문자 태그가 붙은 CSV 행으로 패킹됩니다. 또한 열(column)별 타입이 보존되어 손실 없는 디코딩(lossless decode)이 가능합니다.
# 모든 도구 호출은 format= 인자를 허용합니다
find_references(identifier="get_user", format="auto")
# auto — 절감량이 15% 이상이면 컴팩트 포맷 방출, 그렇지 않으면 JSON
...
벤치마크 (v1.56.0): 6개의 대표적인 도구 전반에서 중앙값 **45.5%**의 바이트 절감, 그래프(graph) 및 개요(outline) 응답에서는 최대 **55.4%**의 절감률을 기록했습니다. 전체 사양은 SPEC_MUNCH.md에, 수치와 하네스(harness)는 TOKEN_SAVINGS.md에 있습니다.
인코딩 절감량은 검색 절감량 위에 중첩됩니다. 와이어(wire)에서 줄어든 모든 바이트는 에이전트가 읽기 위해 지불하지 않아도 되는 바이트입니다.
v1.108.169(2026-07-25) — 검색 판결(retrieval verdict)이 압축(compaction) 후에도 유지됨
v1.108.168(2026-07-24) — 스캔 하단의 재구축(rebuild)은 부재를 증명할 수 없음 (5번째 거부 규칙)
v1.108.167(2026-07-24) — 큐 앵커 기반 전달 원장(cue-anchored delivery ledger): 전달하는 내용을 두 번 측정
Artur Skowroński(VirtusLab) — "토큰 약 80% 절감, 또는 5배 더 효율적 — 한 번 인덱싱하고, 영구적으로 저렴하게 쿼리하세요" · GitHub All-Stars
Julian Horsey(Geeky Gadgets) — "3,850개의 토큰이 단 700개로 감소 — 5.5배 개선" · JCodeMunch AI Token Saver
Sion Williams — "검색 (retrieval)보다는 실제 추론 (reasoning)이 필요한 작업에 토큰을 보존하세요" · 2026년 3월 AI 워크플로우 업데이트
Traci Lim(AWS · ASEAN AI Lead) — "네이티브 도구가 답할 수 없는 구조적 쿼리: find_importers, get_blast_radius, get_class_hierarchy, find_dead_code" · Claude Code에서 토큰 사용량을 절약하는 5가지 리포지토리 (Repos)
Eric Grill — "컨텍스트 (context)는 희소 자원입니다. 이를 90% 줄이면 전체 스택이 더 저렴해지고 더 신뢰할 수 있게 됩니다" · jCodemunch: AI 에이전트를 위한 컨텍스트 엔진 (Context Engine)
jCodeMunch-MCP는
비상업적 용도로는 무료입니다.
상업적 용도에는 유료 라이선스가 필요합니다.
jCodeMunch 전용 라이선스
- Builder — $79 — 개발자 1명
- Studio — $349 — 최대 5명의 개발자
- Platform — $1,999 — 조직 전체 내부 배포
전체 jMunch 스위트 (코드 + 문서 + 데이터)를 원하시나요?
파일 전체를 읽게 하느라 모델에 비용을 지불하는 일을 멈추세요.
jCodeMunch는 리포지토리 탐색을 **구조화된 검색 (structured retrieval)**으로 전환합니다.
에이전트가 거대한 파일을 열고, 임포트 (imports), 보일러플레이트 (boilerplate), 주석, 헬퍼 (helpers), 그리고 관련 없는 코드들을 헤치고 나가도록 강제하는 대신, jCodeMunch는 에이전트가 코드가 무엇인지를 기준으로 탐색하고 중요한 것만 검색할 수 있게 합니다.
즉, 다음과 같은 효과를 의미합니다:
검색 중심 워크플로우에서 코드 읽기 토큰 사용량 95% 이상 감소
프롬프트 (prompt)를 오염시키는 무관한 컨텍스트 감소
더 빠른 리포지토리 탐색더 정확한 코드 조회반복적인 파일 스캐닝의 무의미한 과정 감소
jCodeMunch는 tree-sitter를 사용하여 코드베이스를 한 번 인덱싱하고, 구조화된 심볼 메타데이터 (symbol metadata)와 원본 소스의 바이트 오프셋 (byte offsets)을 저장하며, 파일 전체를 반복해서 다시 읽는 대신 필요할 때 정확한 구현 (implementations)을 검색합니다.
최근 릴리스를 통해 BM25 기반 심볼 검색 (symbol search), 퍼지 매칭 (fuzzy matching), 시맨틱/하이브리드 검색 (semantic/hybrid search, 선택 사항이며 필수 의존성 없음), 쿼리 기반 토큰 예산 컨텍스트 조립 (get_ranked_context), 데드 코드 탐지 (find_dead_code), 테스트되지 않은 심볼 탐지 (get_untested_symbols), git-diff-to-symbol 매핑 (get_changed_symbols), 아키텍처 중심성 순위 지정 (get_symbol_importance, PageRank), 콜드 스타트 오리엔테이션 맵 (get_repo_map — 쿼리 없이 토큰 예산 내에서 시그니처만으로 구성되며 PageRank로 순위가 매겨진 저장소 개요), 통합 후보 탐지 (find_similar_symbols — 시맨틱 임베딩 (semantic embeddings), 구조적 시그니처 (structural signature), 동작 기반 호출자 자카드 유사도 (behavioral callee Jaccard)를 혼합한 멀티 시그널 중복 탐색기; 판결 티어와 PageRank 기반 표준 선택을 포함한 유니온-파인드 (union-find) 클러스터링), 저장소 간 API 계약 노출 (get_group_contracts — 인덱싱된 저장소 그룹을 입력받아 공유 심볼 계약을 순위별로 출력하며, 각 계약은 de_facto_api / leaky_internal / dead_contract / version_skew로 분류되고 안정성 + 변경 사항(breaking-change) 이력 + 런타임 히트(runtime hits) 정보를 포함), 구체적 구현 발견 (find_implementations — LSP 디스패치 / 클래스 계층 구조 / 덕 타이핑 (duck-typed) / 데코레이터 핸들러 (decorator-handler) 전반에 걸친 멀티 소스 해소 및 신뢰도 점수 산출), 삭제 사전 점검 (check_delete_safe — 임포터 + 참조 + 데드 코드 + 런타임 증거 + 엔트리 포인트 휴리스틱을 결합한 복합 판결을 제공하며, 순위가 매겨진 차단 요소와 권장 조치 포함), 수정 안전성 사전 점검 (check_edit_safe — "이것을 수정해도 될까?"라는 질문에 답하는 동반 기능으로, 시그니처 영향도, 순환 복잡도 (cyclomatic complexity), 테스트 커버리지 존재 여부, 런타임 트래픽을 결합하여 판결 및 권장 조치 제공), 작업 인지형 단일 호출 컨텍스트 오케스트레이션 (assemble_task_context
— 자연어 작업 입력, 소스 출처 기반 컨텍스트 캡슐 출력; 설명 가능한 키워드 매칭을 통해 6가지 의도 중 하나로 자동 분류, 작업으로부터 앵커 심볼(anchor symbols) 자동 추출, 단일 토큰 예산 내에서 의도에 적합한 서브 도구 시퀀스를 엔드 투 엔드(end-to-end)로 실행), 소스 스니펫(source snippets)을 활용한 영향 범위(blast-radius) 깊이 점수 산정, 토큰 예산이 포함된 컨텍스트 번들, AST 기반 호출 그래프(call graphs) 및 호출 계층 구조 순회(call hierarchy traversal), 데코레이터 인지형(decorator-aware) 검색 및 필터링, 핫스팟 탐지(복잡도 x 변경 빈도(churn)), 의존성 사이클 및 결합도 지표, 세션 인지형 라우팅 (plan_turn
, 턴 예산, 부정적 증거(negative evidence)), 에이전트 설정 감사, 복잡도 기반 모델 라우팅 (Agent Selector), 강제 실행 훅 (PreToolUse/PostToolUse/PreCompact), 의존성 그래프, 클래스 계층 구조 순회, 다중 심볼 번들, 라이브 워치(live watch) 기반 재인덱싱, 자동 Claude Code 워크트리 발견 (watch-claude
), 단일 명령 로그인 서비스 설치를 통한 레지스트리 전역 자동 재인덱싱 (watch-all
watch-install
/ watch-uninstall
/ watch-status
; 또한 MCP 도구 get_watch_status로 노출됨), 온디맨드 자동 워치 (설정에서 watch: true
인 경우, 도구가 호출되는 모든 리포지토리를 서버가 자동으로 인덱싱하고 워치하여 — 첫 호출부터 최신 결과를 보장), 신뢰할 수 있는 폴더 액세스 제어, 이름 변경, 이동, 추출 및 시그니처 변경 작업을 위한 편집 준비 완료 리팩토링 계획 (plan_refactoring
), 심볼 출처 고고학 (get_symbol_provenance
— 전체 git 계보, 의미론적 커밋 분류, 진화 내러티브), 통합 PR 리스크 프로파일링 (get_pr_risk_profile
— 영향 범위, 복잡도, 변경 빈도, 테스트 공백 및 볼륨을 융합한 복합 리스크 점수), 자동 응답 비밀 정보 삭제 (AWS/GCP/Azure/JWT/GitHub 토큰이 LLM 컨텍스트 창에 도달하기 전에 제거됨), 그리고 교차 언어 AST 패턴 매칭 (search_ast
— 10개의 사전 설정된 안티 패턴 탐지기 + call:*.unwrap
, string:/password/i
, nesting:5+
와 같은 구조적 쿼리를 위한 커스텀 미니 DSL)
;는 범용 노드 유형 매핑 (universal node-type mapping)을 통해 70개 이상의 모든 언어에서 작동합니다).
3개의 공개 리포지토리(public repos)를 대상으로 tiktoken cl100k_base를 사용하여 측정했습니다. 워크플로(Workflow): search_symbols (상위 5개) + 쿼리당 get_symbol_source × 3회. 베이스라인(Baseline): 모든 소스 파일을 하나로 연결 (모든 것을 읽는 에이전트의 최소 비용).
전체 방법론 및 하네스(harness) →
| 리포지토리 (Repository) | 파일 수 (Files) | 심볼 수 (Symbols) | 베이스라인 토큰 (Baseline tokens) | jCodeMunch 토큰 (jCodeMunch tokens) | 절감률 (Reduction) |
|---|---|---|---|---|---|
| expressjs/express | 172 | 182 | 143,355 | 평균 ~1,040 | 99.3% |
| ... | 총계 (15회 태스크 실행) | 5,799,695 | 25,220 | 99.6% |
쿼리당 결과는 99.1%에서 99.9% 사이입니다. 99.6% 수치는 합계 수치입니다 (2026-07-23 실행, v1.108.163, 제한 없는 전체 인덱스). 결과를 재현하려면 python benchmarks/harness/run_benchmark.py를 실행하세요.
실제 Vue 3 + Firebase 프로덕션 코드베이스를 대상으로 한 50회 반복 독립 A/B 테스트 — JCodeMunch vs 네이티브 도구 (Grep/Glob/Read), Claude Sonnet 4.6, 반복마다 새로운 세션 사용:
| 지표 (Metric) | 네이티브 (Native) | JCodeMunch |
|---|---|---|
| 성공률 (Success rate) | 72% | 80% |
| ... |
고정 오버헤드를 제외한 도구 계층의 절감액: 15–25%. JCodeMunch 변체에서만 독점적으로 나타난 발견 카테고리: find_importers를 통한 고립된 파일(orphaned file) 탐지 — 이는 스크립팅 없이는 네이티브 도구가 답할 수 없는 구조적 쿼리입니다.
전체 보고서: benchmarks/ab-test-naming-audit-2026-03-18.md
대부분의 에이전트는 여전히 공항 기념품점에 갇힌 관광객처럼 코드베이스를 조사합니다:
- 단 하나의 함수를 찾기 위해 파일 전체를 엽니다.
- 동일한 코드를 반복해서 다시 읽습니다.
- 임포트(imports), 보일러플레이트(boilerplate), 그리고 관련 없는 헬퍼(helpers) 함수들을 소비합니다.
- 애초에 전혀 필요하지 않았던 자료에 컨텍스트 윈도우(context window)를 낭비합니다.
jCodeMunch는 에이전트에게 다음과 같은 구조화된 방식을 제공함으로써 이 문제를 해결합니다:
- 이름, 종류(kind) 또는 언어별 심볼(symbol) 검색 — 퍼지 매칭(fuzzy matching) 및 선택적 시맨틱/하이브리드 검색(semantic/hybrid search) 지원
- 소스 코드를 가져오기 전에 파일 및 저장소 개요(outline) 검사
- 정확한 심볼 구현체(implementation)만 검색
- 특정 태스크를 위해 토큰 예산(token-budget)이 할당된 컨텍스트 번들(context bundle) 또는 순위가 매겨진 컨텍스트 팩(context pack) 확보
- 구조 정보만으로 충분하지 않을 경우 텍스트 검색으로 전환
- 데드 코드(dead code) 탐지, 영향도 추적, 중심성(centrality) 기반 순위 지정, git diff를 심볼에 매핑
plan_turn을 사용하여 다음 턴 계획
— 첫 번째 읽기 전 신뢰도 기반 라우팅(confidence-guided routing)
— assemble_task_context를 사용하여 한 번의 호출로 전체 태스크의 컨텍스트 조립
— 의도 분류(intent-classified), 멀티 툴(multi-tool), 단일 토큰 예산 — 세션 상태를 추적하여 에이전트가 이미 탐색한 파일을 다시 읽는 것을 방지
에이전트에게 점점 더 커지는 컨텍스트 윈도우(context window)는 필요하지 않습니다.
그들에게 필요한 것은 **더 나은 조준(better aim)**입니다.
파일 전체를 열지 않고도 함수, 클래스, 메서드, 상수 등을 찾고 가져오십시오.
소스 코드를 요청하기 전에 저장소 구조와 파일 개요를 검사하십시오.
모델에게 1,500줄의 부수적인 피해(collateral damage)가 아닌, 모델이 실제로 필요로 하는 코드만을 보내십시오.
아래의 검색 프리미티브(retrieval primitives)는 에이전트가 수동으로 직접 연결해야 하는 분리된 도구 모음이 아닙니다. 두 가지 구성 도구(composition tools)가 나머지를 제어합니다:
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기