BETAER_
← Work
2026
RustTree-sitterSQLitefastembedMCP

amdb

코드베이스를 로컬에서 AI 컨텍스트로 바꾸는 단일 바이너리 MCP 서버. Corbel의 전신이며 1.0.0에서 계약을 동결하고 마무리했다.

amdb 썸네일

개요

amdb는 코드베이스를 AI 컨텍스트로 바꾸는 단일 바이너리 MCP 서버다. 런타임 의존이 없고, 코드가 기계 밖으로 나가지 않는다. Node나 Python 런타임 없이 동작하므로 폐쇄망, CI 컨테이너, 클라우드 인덱싱이 금지된 환경을 대상으로 만들었다.

심볼·관계 저장소와 벡터 저장소 두 개의 SQLite 파일에 모든 것이 들어간다. 검색은 정확한 이름 매칭, 벡터 코사인 유사도, 호출 그래프 확장을 결합하고, 결과를 MCP stdio로 서빙하거나 Markdown 컨텍스트 파일로 내보낸다.

MCP 도구

  • amdb_get_context — 프로젝트 전체 개요. 파일별 심볼과 mermaid 의존성 그래프.
  • amdb_focus — 이름 매칭과 로컬 벡터 검색으로 질의에 맞는 범위만 좁혀서 반환하고, depth만큼 의존성을 따라 확장한다.
  • amdb_get_symbol — 심볼의 모든 정의를 JSON으로. 파일, 종류, 줄, 시그니처, 호출자, 피호출자. 각 피호출자는 해석 방식(same-file, global-unique, unresolved)을 함께 싣는다.

주요 기능

  • daemon 모드 — 파일 변경을 감시해 증분 재인덱싱하므로 편집할 때마다 전체를 다시 돌릴 필요가 없다.
  • focus depth — 매칭된 파일에서 호출 그래프를 N홉 확장한다.
  • 16개 언어 Tree-sitter 파싱 — Rust, Python, TypeScript에는 is_public 판정과 시그니처 추출까지, 나머지는 심볼 추출까지.
  • 로컬 임베딩 — fastembed로 완전 오프라인. 네트워크 코드가 바이너리에 없다.

측정

amdb 자체 소스(31개 파일)에 같은 질문 다섯 개를 던져 측정했다.

  • 전체 저장소 덤프: 평균 21,887 토큰, 도구 호출 1회
  • grep 후 매칭 파일 읽기: 평균 4,180 토큰, 도구 호출 2.4회
  • amdb (--focus, depth 1): 평균 3,972 토큰, 도구 호출 1회

이 규모에서 grep은 토큰 기준으로 충분히 경쟁력 있다. amdb의 실제 이점은 토큰 수가 아니라 2~4회 대신 한 번의 구조화된 호출로 시그니처·가시성·해석 근거가 붙은 결과를 받는다는 점이다. 저장소가 커지면 덤프는 선형으로, grep은 매칭 노이즈만큼 늘어나고, amdb의 출력은 관련 인터페이스 크기만큼만 늘어난다.

1.0.0과 마무리

1.0.0에서 공개 계약을 동결했다. CLI 표면, MCP 도구 이름과 응답 필드, 설정 키, 0.6 이상 인덱스의 자동 마이그레이션이 계약에 들어갔고, contract_test.rs가 이 범위의 변화를 잡는다. 여기 적힌 것을 깨려면 2.0이 필요하다.

amdb는 여기서 닫혔다. 기능이 넓게 벌어지면서 한 문장으로 설명하기 어려워졌고, 그 판단이 후속작 Corbel로 이어졌다. Corbel은 정확한 호출 그래프 하나만 한다. 범위를 줄인 것이 아니라, 증명할 수 있는 범위만 남긴 것이다.