Documentation · Report Bug · Discussions
AI 코딩 에이전트를 위한 로컬 코드 인텔리전스 MCP 서버 및 CLI.
에이전트에게 X-ray 비전을 제공합니다.
Codanna는 AI 코딩 에이전트를 위한 로컬 코드 인텔리전스 및 의미론적 코드 검색 MCP(Message Communication Protocol) 서버입니다. 하나의 MCP 호출만으로 심볼 컨텍스트, 콜 그래프, 영향 분석을 사전 상관관계화하여 반환합니다. 이는 오늘날 에이전트가 수행하는 grep 후 읽기 루프를 단일 응답에 통합하여 바로 조치할 수 있게 합니다.
Codanna는 디스크에 있는 리포지토리를 인덱싱하며, 심볼 검색, 의미론적 검색, 콜 그래프, 의존성 추적, 문서 RAG(Retrieval-Augmented Generation), 영향 분석을 Claude Code, Cursor, Windsurf, Codex, Gemini 및 모든 MCP 호환 클라이언트에 제공합니다. 이는 세션 전반의 작업을 위한 지속적인 MCP 서버로 사용되거나, LSP가 너무 느릴 때 즉각적인 답변을 얻기 위한 일회성 CLI(Command Line Interface)로 사용할 수 있습니다. Rust로 작성되었으며 15개 언어를 지원합니다. 소스 코드는 기기를 벗어나지 않습니다.
Codanna의 MCP 도구 세트는 두 가지 방법으로 접근할 수 있습니다. 동일한 도구, 동일한 인터페이스를 사용하므로 워크플로우에 맞는 모드를 선택하세요.
지속적인 MCP 서버 — 세션 전반의 에이전트 워크플로우용.
codanna serve # stdio
codanna serve --http # HTTP
codanna serve --https # HTTPS
일회성 CLI — 슬래시 명령어, bash 훅, 스크립트, CI용. 데몬이 필요 없습니다.
codanna mcp find_symbol name:"my_function"
codanna mcp analyze_impact symbol_name:"my_function"
codanna mcp semantic_search_with_context query:"recursively extract function calls"
codanna mcp semantic_search_with_context는 대표적인 명령어입니다. 이 명령어는 N개의 의미론적 일치 항목을 반환하며, 각 일치 항목에 대해 심볼 아이덴티티, 시그니처, 문서 문자열(docstring), 호출 대상(callees), 호출자(callers), 그리고 재귀적 영향 분석까지 제공합니다. 이는 다섯 가지 MCP 도구가 하나의 쿼리로 통합된 것입니다.
일회성 CLI는 Codanna를 스킬 친화적으로 만드는 요소이기도 합니다. 에이전트 스킬은 codanna mcp 명령어를 Claude Code, Cursor, Windsurf, Codex, Gemini 또는 쉘 명령어를 실행하는 모든 하니스에 직접 래핑할 수 있습니다. MCP 플러그인(plumbing)이 필요 없습니다.
헤드라인 명령어는 codanna의 소스 트리에 대해 실행됩니다. 한 번의 호출로 에이전트는 심볼, 해당 문서(documentation), 시그니처, 정확한 호출 사이트가 있는 콜리(calles) 및 호출자(callers), 그리고 폭발 반경(blast radius)을 얻게 됩니다:
$ codanna mcp semantic_search_with_context query:"recursively extract function calls" limit:1
Found 1 results for query: 'recursively extract function calls'
1. extract_calls_recursive - Method at src/parsing/cpp/parser.rs:1002-1047 [symbol_id:1477]
...
모든 결과에는 에이전트가 직접 열 수 있는 file:line 좌표, 이름 충돌을 명확히 하는 데 재사용할 수 있는 symbol_id, 그리고 체인(chain)할 수 있는 가이드 힌트가 포함됩니다. 구조화된 엔벨로프를 위해 --json을 추가하세요.
Codanna는 사용자의 기기에서 실행됩니다. 레포지토리 인덱스는 .codanna/ 디스크에 저장됩니다. 임베딩 모델은 첫 사용 시 한 번 다운로드되며, 그 후에는 로컬에서 실행됩니다. 기본적으로 소스 코드, 심볼 또는 쿼리는 원격 API로 전송되지 않습니다. OpenAI와 호환되는 원격 임베딩은 선택 사항입니다: settings.toml의 [semantic_search] 아래에 있는 remote_url 또는 CODANNA_EMBED_* 환경 변수를 사용합니다. API 키는 환경에서만 관리됩니다.
curl -fsSL --proto '=https' --tlsv1.2 https://install.codanna.sh | sh
brew install codanna
nix run github:bartolli/codanna
irm https://raw.githubusercontent.com/bartolli/codanna/main/scripts/install.ps1 | iex
Cargo 및 기타 옵션에 대한 설치 가이드를 참조하세요.
codanna init
codanna index src
codanna mcp semantic_search_with_context query:"where do we handle errors" limit:3
codanna documents add-collection docs ./docs
codanna documents index
codanna mcp search_documents query:"authentication flow"
사용자의 AI 어시스턴트는 코드에 대한 구조화된 지식을 얻게 됩니다:
"이 함수는 어디서 호출되나요?" - grep 결과가 아닌 즉각적인 콜 그래프
"인증 로직을 찾기" - 키워드뿐만 아니라 의도(intent)를 일치시키는 시맨틱 검색
"이것을 변경하면 무엇이 고장 나나요?" - 파일 전반에 걸친 완전한 종속성 분석
차이점은 이렇습니다: Codanna는 코드 구조를 이해합니다. parseConfig가 무엇인지 알고 있습니다.
is a function that calls validateSchema
, not just a string match.
| 기능 | 설명 |
|---|
| Semantic Search (시맨틱 검색) | 코드 및 문서에 대한 자연어 질의응답. 이름뿐만 아니라 수행하는 기능으로 함수를 찾습니다. |
| Relationship Tracking (관계 추적) | 호출 그래프(Call graphs), 구현체, 종속성. 파일 전반에 걸쳐 코드가 어떻게 연결되는지 추적합니다. |
| Document Search (문서 검색) | RAG 워크플로우를 위해 마크다운 및 텍스트 파일을 인덱싱합니다. 코드와 함께 프로젝트 문서를 질의할 수 있습니다. |
| MCP Protocol | Claude, Gemini, Codex 및 기타 AI 어시스턴트와의 네이티브 통합. |
| Profiles (프로파일) | 다양한 프로젝트 유형을 위한 패키지 후크(Package hooks), 명령어, 에이전트. |
성능: 언어에 따라 파서 처리량은 초당 76,000~249,000 심볼이며, 워밍업 서버 조회는 10ms 미만입니다 (정확히 0.3ms, 시맨틱 검색은 약 3ms). 구문 분석(Parsing)이 빠른 계층이며, 인덱싱 중 임베딩 생성은 더 오래 걸리며 코어 수에 따라 확장됩니다. 측정된 수치, 머신 사양 및 재현 명령어: Benchmarks.
지원 언어: Rust, Python, JavaScript, TypeScript, Java, Kotlin, Go, PHP, C, C++, C#, Clojure, Lua, Swift, GDScript.
에이전트에 의해 구동되는 인덱스 위의 두 가지 스킬: 질문에 맞는 뷰를 선택합니다. x-ray는 범위가 지정된 질문을 다룹니다 — 호출 DAG로서의 심볼의 폭발 반경(blast radius), 접을 수 있는 트리 또는 방사형 포스터로서의 모듈 구조, 에지 번들 페이지로서의 크로스 모듈 호출. graph는 코드베이스 형태를 다룹니다: 중앙에 허브가 있는 모듈 디스크, 커밋 타임라인, 히트맵. 심볼 검색, 강조 표시된 시그니처가 포함된 상세 패널, 호출 그래프 탐색. 이 디스크 렌더러는 Lukas Proprentner(MIT)의 vault-graph에서 각색되었습니다.
/plugin marketplace add bartolli/codanna
/plugin install codanna-toolset@codanna
어떤 MCP 호환 클라이언트에도 codanna를 추가하세요. 프로젝트 범위 .mcp.json
(Claude Code, Cursor, Windsurf):
{
"mcpServers": {
"codanna": {
...
--watch
파일이 변경됨에 따라 인덱스를 활성 상태로 유지합니다. 전송 프로토콜: stdio, HTTP, HTTPS. Claude Desktop, Gemini, Codex 및 네트워크 설정을 위한 통합 가이드(Integration Guides)를 참조하세요.
-
임베딩 모델용 약 150MB (최초 사용 시 다운로드)
macOS: Apple Silicon. ONNX Runtime 1.28은 Intel macOS 빌드가 없으므로, 0.17.1 이상 버전은 Intel Mac을 대상으로 하지 않습니다. 0.17.0이 마지막으로 지원하는 버전입니다.
Linux: cargo install (사전 빌드된 ONNX Runtime 바이너리 사용 시)는 glibc 2.38+ 및 GCC 13+의 libstdc++가 필요합니다. 출시된 바이너리는 Ubuntu 24.04(glibc 2.39)에서 빌드되었습니다.
소스 코드로부터 빌드: Rust 1.85+와 pkg-config가 필요합니다.
-
Windows 지원은 실험적입니다.
기여를 환영합니다. CONTRIBUTING.md를 참조하세요.
Apache License 2.0 - LICENSE를 참조하세요.
출처 표기가 필요합니다. NOTICE를 참조하세요.
Rust로 빌드되었습니다.