code-search-mcp
🔍 code-search-mcp
외부 데몬이 필요 없는 로컬 시맨틱 코드 검색 MCP 서버. LanceDB와 인프로세스 ONNX 임베딩 기반. 정확한 단어만 grep로 찾는 작업은 이제 그만. AI 코딩 어시스턴트가 코드베이스를 의미로 검색할 수 있는 힘을 주세요.
Claude Code, Gemini CLI, Antigravity (agy), Cursor 등에서 macOS, Windows, Linux를 가리지 않고 별도 설정 없이 바로 사용할 수 있습니다.
☕️ 커피숍 앱을 상상해 보세요
바쁜 동네 커피숍을 위한 소프트웨어를 만들고 있다고 상상해 보세요.
코드베이스에 고객이 오트밀크 라테 하나를 추가 주문하고 아침 할인을 받는 상황을 처리하는 파일이 있습니다.
// Apply a 15% promotional deduction if the customer visits before 9 AM
export function calculateEarlyBirdReward(bill: OrderSummary): number {
if (bill.orderHour < 9) {
return bill.subtotal * 0.85;
}
return bill.subtotal;
}이제 AI 코딩 어시스턴트(예: Claude Code, Cursor, Gemini CLI)를 열고 이렇게 물어본다고 상상해 보세요:
"아침 음료 할인은 어디서 계산되나요?"
사용 중인 도구가 전통적인 텍스트 검색(예: grep)만 사용한다면, "discount"라는 정확한 단어를 찾습니다.
calculateEarlyBirdReward함수를 찾았나요? 아니요.왜 일까요? 코드에는
promotional deduction와EarlyBirdReward라는 단어가 있었지만,"discount"라는 정확한 단어는 없었기 때문입니다.
바로 여기서 시맨틱 검색이 모든 것을 바꿉니다.
Related MCP server: claude-context-local
🧠 시맨틱 검색이란? (쉽게 설명해 드립니다)
전통적인 검색은 정확한 글자와 단어를 찾습니다.
*시맨틱 검색은 단어 뒤에 숨겨진 의미를 찾습니다.*
작동 방식: 의미의 지도
글자 대신 숫자: AI 모델은 텍스트(또는 코드)를 가져와 임베딩(또는 벡터)이라는 숫자 목록으로 변환합니다.
지도 위의 좌표: 이 숫자들을 인간 개념이라는 거대한 지도의 GPS 좌표라고 생각해 보세요.
"discount"와"promotional deduction"는 지도에서 바로 옆에 위치하게 됩니다."espresso shot"과"latte"는 함께 모여 있습니다."database migration"은 지도 반대편에 멀리 떠 있습니다.
최근접 이웃 찾기: 자연스러운 영어로 질문을 하면 검색 엔진이 그 질문을 좌표로 바꾸고, 지도에서 그 좌표와 가장 가까운 코드 조각을 찾아냅니다.
[ Map of Meaning ]
☕️ "morning drink discount" 📍 (Your Question)
│ (Close match!)
▼
🏷 "calculateEarlyBirdReward" 📍 (Your Code)
─────────────────────────────────────────────
🗄 "sql database migration" 📍 (Far Away - Ignored)🚀 시맨틱 검색이 AI 코딩에 신의 한수인 이유
AI 코딩 어시스턴트가 수천 개의 파일이 법려 있는 대형 리포지토리에서 작업할 때, 매 프롬프트마다 모든 파일을 읽을 수는 없습니다. 너무 느리고 토큰도 너무 많이 소모됩니다.
그 대신 AI는 관련 있는 1~3개의 파일을 즉시 찾아야합니다.
실제 프로젝트에서 코드베이스는 관련 정보로 가득합니다:
Markdown 문서 (
.md): 아키텍처 결정 기록, API 가이드, 온보딩 문서.코드 주석: 비즈니스 규칙이 왜 존재하는지 설명해 줍니다 (예:
// Deduct beans from bean hopper inventory).함수명과 변수명: 라이브러리마다 다를 수 있는 명명 패턴.
시맨틱 검색은 정확한 함수명을 기억하지 못하더라도, 자연어로 하고 싶은 이야기를 마크다운 문서, 주석, 코드 조각에 직접 연결 해줍니다.
🛠 우리가 만든 것: code-search-mcp
기존의 대부분의 시 멘틱 검색 도구는 복잡한 설치가 필요합니다:
Python 3, 가상 환경,
pip설치하기.외부 백그라운드 데이터베이스 서버(예: ChromaDB)를 네트워크 포트에 띄우기.
부팅 시 배터리를 소모하는 시작 데몬(Mac의
LaunchAgents, Windows의 Task Scheduler) 설정하기.데이터베이스 서버가 오프라인이면 작업을 막을 수 있는 Git 훅(
pre-commit) 추가하기.
우리는 완전히 다른 것을 원했습니다: 설정 제로. 외부 데몬 제로. 어떤 프로젝트에서든 즉시 동작.
그래서 code-search-mcp — Node.js용 독립형 크로스 플랫폼 Model Context Protocol (MCP) 서버를 만들었습니다.
┌─────────────────────────────────────────────────────────────┐
│ AI Client │
│ (Claude Code / Gemini CLI / Antigravity / Cursor) │
└──────────────────────────────┬──────────────────────────────┘
│ MCP Protocol (JSON-RPC over stdio)
┌──────────────────────────────▼──────────────────────────────┐
│ code-search-mcp │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌───────────┐ │
│ │ Scanner & │ │ EmbeddingEngine │ │ Watcher │ │
│ │ Layered Ignores │ │ (all-MiniLM-L6) │ │(chokidar) │ │
│ └────────┬─────────┘ └────────┬─────────┘ └─────┬─────┘ │
│ │ │ │ │
│ └───────────┬─────────┴──────────────────┘ │
│ ▼ │
│ VectorStore (LanceDB) │
│ node_modules/.cache/code-search/ │
└─────────────────────────────────────────────────────────────┘⚙️ 내부 기술
컴포넌트 | 기술 | 선택한 이유 |
런타임 | Node.js + TypeScript | 런타임 의존성이 전혀 없는 크로스 플랫폼(macOS, Windows, Linux). |
로컬 AI 임베딩 |
|
|
벡터 저장소 | Apache Arrow 기반의 임베디드, 서버리스 벡터데이터베이스. 외부 서버 프로세스가 필요 없습니다. | |
실시간 파일 감시자 |
| 파일을 실시간으로 감시하여 저장 시점에 대한 약간의 지연(~200ms 이내)으로 증분 벡터 업데이트. |
프로토콜 |
| Claude Code, Gemini CLI, Cursor, Windsurf에서 지원하는 표준 MCP 프로토콜. |
🔍 내부 동작 방식
1. 인덱싱을 언제 시작할지 어떻게 알까요?
AI 어시스턴트가 시작되면 (예: Claude Code, Antigravity 또는 Gemini CLI) code-search-mcp는표준 입출력(stdio)으로 연결됩니다.
MCP 서버는 즉시 15ms 미만으로 연결됩니다.
백그라운드 워커가 채팅 세션을 차단하지 않고 프로젝트 파일 스캔을 시작합니다.
2. 인덱싱이 완료 전에 검색이 가능한가요? (인덱싱 중의 슈퍼파워)
네! 프로젝트를 연 지 2초 만에 질문하더라도 절대 블로킹되거나 멈추지 않습니다.
지금까지 인덱싱된 파일을 그 자리검색하고, 라이브 진행률 헤더를 제공합니다:
⚠️ [Index status: INDEXING (35% complete - 2,100/6,000 files indexed)]
Results from currently indexed files:
### Match 1: src/drinks/espresso.ts (Lines 12-30) [Score: 54.2%]3. 첫 실행에는 조금 기다리세요 — 단 한 번뿐입니다! ⏳
5,000개 이상의 파일이 있는 대규모 저장소에서는 로컬 AI 모델이 모든 코드 조각에 대해 처음으로 임베딩을 생성해야 하므로 첫 인덱싱 스캔에 몇 분이 걸립니다.
좋은 소식:
이 비용은 단 한 번부 지불합니다: 생성된 벡터들은 저장 저장한
node_modules/.cache/code-search/lancedb/에 영구 저장됩니다.이후 부팅은 즉시: 이후 세션이나 편집기 재시작 시 서버가 15ms 이내에 연결되어 다시 인덱싱하지 않습니다.
증분 실시간 업데이트: 코드를 작성하는 동안 리긴 워처가 변경한 단일 파일만 저장 시점에 약 150ms 만에 업데이트합니다.
대기 시간 없음: 어시스턴트는 백그라운드에서 이미 인덱싱된 것을 검색하므로 질문도 즉시 시작할 수 있습니다.
4. 인덱스는 어디에 저장되나요?
기본적으로 다음 경로에 저장됩니다.
📁 node_modules/.cache/code-search/lancedb/
왜 node_modules/.cache인가요?
node_modules는 100% 대부분의 프로젝트에서 Git 무시 대상이 있습니다.Git 노이즈 제로: 추적되지 않는 폴더나 원하지 않습니다. 는 리포지토리에 전혀 나타나지 않습니다.
(프로젝트에
node_modules가 없는 경우.code-search/로 자동 대체됩니다).
5. Git 브랜치를 전환하면 어떻게 되나요? 🔀
git checkout, git switch 또는 git pull을 실행하면:
실시간 파일 감시: Git이 파일을 업데이트하면 내장
chokidar워처가 추가/변경/삭제된 파일을 실시간 감지합니다.빠른 차등 재스캔: 두 브랜치에서 달라진 파일만 다시 인덱싱합니다 (몇 분이 아닌 1–2초).
자동 정리: 삭제된 파일이나 이전 브랜치의 오래된 코드 청크는 LanceDB에서 자동으로 제거합니다.
수동 동기화: 대규모 머지 후 완전 재인덱싱을 강제로 실행하고 싶다면 어시스턴트에게 *"
code_search_reindex를force: true로 실행해 줘"*라고 말하면 됩니다.
⚙️ 설정 및 제외 파일 관리
기본적으로 code-search-mcp는바이너리 파일(.png, .mp4, .zip), 빌드 결과물(dist/, build/), lockfile, 500KB 초과 파일을 자동으로 무시하며 기존 **.gitignore**도 존중합니다.
사용자 설정이나 제외 파일을 추가하고 싶다면 두 가지 방법이 있습니다:
방법 1: .codesearchignore 파일 만들기 (빠르고 간단함)
프로젝트 루트에 표준 gitignore 구문으로 .ignore 파일을 만드세요:
# Ignore mock data and test fixtures
tests/fixtures/**
src/mocks/**
# Ignore auto-generated files
src/models/*.generated.ts
locales/**방법 2: .code?rc.json 파일 만들기 (고급 설정)
인덱싱 동작, 배치 처리, 파일 크기 제한등을 제어하려면 프로젝트 루트에 .codesearchrc.json 파일을 만드세요:
{
"maxFileSizeKb": 300,
"batchSize": 50,
"customExcludes": [
"legacy_vendor/**",
"docs/archive/**"
],
"supportedExtensions": [
".ts", ".tsx", ".js", ".vue", ".py", ".md", ".json"
]
}📦 설치 방법
다음 중 원하는 방법 하나로 설치하고 실행할 수 있습니다.
1단계: 설치 방법 선택
방법 A: GitHub에서 npx를 이용해 직접 설치 (설치 거– npm 게시 불 필요!)
어떤 AI 코담 클라이언트든 GitHub 저장소에서 바로 필요한 시점에 실행할 수 있습니다:
npx -y github:your-username/code-search-mcp(Node가 저장소를 자동으로 다운로드하고 번들을 빌드하여 MCP 서버를 실행합니다.)
방법 B: NPM 레지스트리에서 설치 (npm에 게시한 경우)
패키지를 NPM에 게시했다면:
npx -y code-search-mcp
# or global install:
npm install -g code-search-mcp방법 C: 로컬 개발 / 로컬 링크 (가장 빠른 로컬 시작)
로컬 소스 디렉터리에서 바로 실행하려면:
cd /path/to/code-search-mcp
npm install
npm run build
npm link이제 code-search-mcp가 시스템의 글로벌 명령어로 등록됩니다!
2단계: AI 클라이언트에 연결하기
1. Claude Code
# If running via GitHub:
claude mcp add code-search -s user -- npx -y github:your-username/code-search-mcp
# If running locally (linked):
claude mcp add code-search -s user -- code-search-mcp2. Antigravity CLI (agy)
터미널에서 다음한줄 명령어를 실행하세요:
mkdir -p ~/.gemini/config/plugins/code-search && cat << 'EOF' > ~/.gemini/config/plugins/code-search/plugin.json
{ "name": "code-search" }
EOF
cat << 'EOF' > ~/.gemini/config/plugins/code-search/mcp_config.json
{
"mcpServers": {
"code-search": {
"command": "npx",
"args": ["-y", "github:your-username/code-search-mcp"]
}
}
}
EOF3. Gemini CLI
~/.gemini/settings.json에 추가하세요:
{
"mcpServers": {
"code-search": {
"command": "npx",
"args": ["-y", "github:your-username/code-search-mcp"],
"trust": true
}
}
}4. Cursor / Claude Desktop
.cursor/mcp.json에 추가하세요:
{
"mcpServers": {
"code-search": {
"command": "npx",
"args": ["-y", "github:your-username/code-search-mcp", "--path", "${workspaceFolder}"]
}
}
}🤖 AI 어시스턴트 가이드 및 도구 참조
여러분이 Claude Code, Gemini CLI, Cursor, Antigravity 또는 Windsurf와 같은 AI 어시스턴트로 이 저장소를 보고 있다면, code-search-mcp가 제공하는 MCP 도구 사용에 대한 퀵 스타트 가이드는 다음과 같습니다:
🛠 제공되는 MCP 도구
도구명 | 인수 | 설명 | 호출할 때 |
|
| 인덱싱된 저장소 파일 전체에서 하이브리드 시맨틱(의미 기반) + 어휘 검색을 수행한다. 유사도 점수와 함께 줄 번호가 포함된 코드 조각을 반환한다. | 인기, 비즈니스 로직, 워크플로, UI 컴포넌트, 또는 자연어로 설명된 기능을 찾을 때 최우선 호출한다(예: "사용자 인증이 어디서 갱신되나요?", "장바구니 세금 계산기"). |
| (없음) | 현재 인덱싱 진행 상태( | 인덱싱이 아직 진행 중일 수 있다고 생각되면 대규모 검색 전에 확인한다. |
|
| 백그라운드 재인덱싱 또는 데이터베이스 전체 재구축을 트리거한다. | 사용자가 저장소 전체 재구축을 명시적으로 요청했거나 대규모 브랜치 병합이 발생한 뒤 호출한다. |
| (없음) | 인라인 에이전트 사용 모범 사례와 팁을 반환한다. | 도구를 호출하는 동안 모범 사례용 스스로 인지하고 싶을 때 호출한다. |
🧭 도구 결정 매트릭스: 언제 어느 도구를 사용할까
┌───────────────────────────────────────────────┐
│ What are you looking for in the codebase? │
└───────────────────────┬───────────────────────┘
│
┌───────────────────────────────────┼───────────────────────────────────┐
▼ ▼ ▼
┌─────────────────────────┐ ┌─────────────────────────┐ ┌─────────────────────────┐
│ Concept / Feature / │ │ Known Symbol / Callers │ │ Exact Literal String / │
│ Business Logic Intent │ │ & Blast Radius Analysis │ │ Error Code / CSS Class │
│ (Natural Language) │ │ (Exact identifier) │ │ (Exact text match) │
└──────────┬──────────────┘ └──────────┬──────────────┘ └──────────┬──────────────┘
▼ ▼ ▼
┌─────────────────────────┐ ┌─────────────────────────┐ ┌─────────────────────────┐
│ 🔍 USE: code_search │ │ 🌳 USE: codegraph │ │ 🔎 USE: grep_search │
│ • "where is payment..." │ │ • codegraph_explore │ │ • "ERR_INVALID_AUTH" │
│ • "tax calculation..." │ │ • callers / callees │ │ • ".btn-primary-blue" │
└─────────────────────────┘ └─────────────────────────┘ └─────────────────────────┘💡 AI 에이전트용 프로 팁
순수한 구현 로직에는
codeOnly: true사용하기: 마크다운 문서나 스킬 가이드를 제외한 순수한 TypeScript/JavaScript 계산 공식을 찾으려면 항상codeOnly: true를 넘긴다.pathFilter로 서브시스템 범위 좁히기: 사용자가 *"청구 모듈에서 체크아웃이 어떻게 동작하나요?"*라고 물으면pathFilter: "src/billing"을 넘긴다.직접 코드 편집 시 줄 번호 사용하기: 코드 조각은 1부터 시작하는 줄 번호(
14: export function calculateTotal())와 함께 반환된다. 이 줄 범위를 바로replace_file_content또는view_file에 전달하면 되고, 추측이 필요 없다.오타 허용 오차: 자연어 그대로 전달해도 된다. 엔진이 <1ms 안에 복수형(
stemming)과 오타(Levenshtein correction)를 자동으로 보정한다.
🤝 궁극의 AI 페어: code-search와 codegraph를 함께 설치해야 하는 이유
현대 AI 코딩 어시스턴트는 서로 보완되는 두 도구, 즉 시맨틱 검색(code-search-mcp)과 AST 코드 그래프(codegraph)를 갖출 때 최상으로 동작합니다.
┌─────────────────────────────────────────────────────────┐
│ User: "Where is subscription discount handled?" │
└────────────────────────────┬────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ 1. SEMANTIC SEARCH (code_search) │
│ • Understands intent, concepts, and natural language │
│ • Finds: subscription-billing.engine.ts (via JSDoc) │
└────────────────────────────┬────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ 2. AST CODE GRAPH (codegraph_explore) │
│ • Understands syntax trees, callers, and blast radius │
│ • Traces: callers into legacy LegacyOrderProcessor.js │
│ • Discovers: unit tests (subscription-billing.spec.ts) │
└─────────────────────────────────────────────────────────┘하나의 도구만으로는 충분하지 않은 이유:
도구 | 주요 역할 | 가장 잘하는 것 | 어려워하는 부분 |
| 개념 및 의도 발견 | 일반 언어로 설명된 비즈니스 로직, 기능, 컴포넌트, 아키텍처 문서를 찾는 것 | 동적 호출 계층과 주석 없는 레거시 코드 파일을 가로질러 탐색하는 것 |
| 구조 탐색 및 영향 범위 파악 | 심볼 단위로 정의, 호출자, 피호출자를 그리고 관련 유닛 테스트를 한 번에 추적하는 것 | 심볼 이름을 모르는 상태에서 자연어로 설명된 개념을 찾는 것 |
실전 사례 연구: 최신 엔진 vs 레거시 모놀리스
실제 비대규모 테스트에서:
**최신 엔진(
subscription-billing.engine.ts)**은 명시적인 이름(calculateSubscriptionDiscount)과 잘 정비된 JSDoc 주석을 갖고 있다.code_search는 이 파일을 밀리초 단위로 55% 이상 유사도 일치로 찾는다.**레거시 코어(
LegacyOrderProcessor.js)**는 2,000줄짜리 파일에 오래된 용어(getDiscountedTotal,applyOldDeduction)나 틀린 표현을 쓰고 있다. 시맨틱 검색만으로는 점수가 낮게 나올 수 있다.시너지:
code_search가subscription-billing.engine.ts를 찾으면,codegraph_explore는 즉시 모든 호출자를LegacyOrderProcessor.js까지 추적하여 추측 없이 관련 단위 테스트에 걸친 영향 범위(blast radius)를 매핑한다.
Recommended Dual Configuration
두 도구를 모두 MCP 구성에 추가하세요:
{
"mcpServers": {
"code-search": {
"command": "node",
"args": ["/path/to/code-search-mcp/dist/bin/cli.js"]
},
"codegraph": {
"command": "codegraph",
"args": ["mcp"]
}
}
}📋 권장 어시스턴트 규칙
AI 어시스턴트가 code_search와 codegraph를 자동으로 선택하게 하려면 프로젝트의 인스트럭션 파일(CLAUDE.md, GEMINI.md, .github/copilot-instructions.md 또는 .cursorrules)에 다음 규칙을 임베드해 주세요:
## Code Navigation & Search
1. **CodeGraph (`codegraph_explore`)**: Call FIRST when exploring known symbols, tracking call paths, finding usages, or analyzing blast radius (callers + covering tests).
2. **Semantic Search (`code_search`)**: Call FIRST when looking for features, domain behaviors, or business logic described in natural language (e.g. "where is discount calculated", "checkout suggestions formatted").🧪 작동 확인하는 법
설치가 끝나면, 아래와 같은 몇 가지 빠른 확인만으로 code-search-mcp가 정상적으로 동작하는지 검증할 수 있습니다.
Check 1: AI 어시스턴트에게 상태 요청
Claude Code, Cursor, Gemini CLI 중 어떤 채팅 세션에서든 다음을 요청하세요:
"Check
code_search_status"
예상 출력:
Index Status: READY (or INDEXING)
Progress: 100%
Files: 6,070 / 6,070 indexed
Chunks: 8,204 code chunks in LanceDBCheck 2: 자연어 코드 검색해보기
AI 어시스턴트에게 이렇게 물어보세요:
"고객 할인 규칙이나 보상이 어떻게 처리되는지
code_search로 찾아줘"
예상 출력:
### Match 1: src/rewards/early-bird.ts (Lines 1-18) [Score: 56.4%]어시스턴트는 정확한 줄 번호와 유사도 점수가 포함된 관련 코드 조각을 즉시 반환합니다.
Check 3: 실시간 파일 와칭을 테스트
프로젝트 안에 특이한 주석을 포함한 새 테스트 파일을 만드세요(예:
src/drinks/secret-recipe.ts):// Caramel macchiato secret syrup blend formula export const caramelBlend = 42;파일을 저장합니다.
즉시 AI 어시스턴트에게 이렇게 요청하세요:
"
code_search로 비밀 시럽 블렌드 시럽 공식을 검색해 줘"새 파일은 수동 재빌드나 리스타트 없이 1초 이내에 검색되어 반환됩니다!
Check 4: 자동 테스트 스위트 실행 (선택 사항)
소스에서 개발하는 경우 실행하세요:
npm test31개의 유닛/통합 테스트가 모두 실행되고 통과하여, MCP 프로토콜 핸드셰이크, ONNX 벡터 생성, LanceDB 스토리지, 와처 생명주기, 단어 stemming, 오타 교정까지 검증합니다.
🛠️ 실제 겪었던 문제와 해결 방법 (쉬운 설명으로)
인간과 AI 코딩 에이전트 모두에게 원활하게 동작하는 검색 엔진을 만드는 과정에서 여러 실질적인 과제를 마주했습니다. 어떤 문제들을 마주했고, 어떻게 해결했는지입니다:
1. 🔤 복수형과 Word endings 트랩 ("marks" vs "Marker")
문제: 사용자가 자연스럽게 *"how chart iq uses marks on chart"*라고 입력한다면, 여기에는 복수형 명사
"marks"가 포함되어 있습니다. 그런데 코드에서의 클래스 이름은CIQ.Marker또는markersSample입니다. 일반적인 DB 질의(LIKE '%marks%')는s가 하나 더 붙어 있기 때문에Marker를 완전히 놓칩니다.해결 방법: 아주 가벼운 **단어 외음 추출기(스티머)**를 만들었습니다. 흔한 어미(
-s,-ing,-ed,-tion,-ers)를 자동으로 덧붙입니다."marks"를 검색하면 어근"mark"를 검색하게 되어, 실시간으로 0ms 오버헤드로CIQ.Marker,markAxis,markersSample를 찾을 수 있습니다.
2. ✍️ 오타 트랩 ("calcualte mrgin shortsfall")
문제: 사람들은 채팅에서 빨리 입력하며 오타를 냅니다(예:
margin대신mrgin,calculate대신calcualte처럼). 단어에 오타가 있으면 전통적인 키워드 검색은 100% 실패합니다.해결 방법: 인-메모리 어휘 사전 + Levenshtein 오타 보정기를 만들었습니다. 파일을 인덱싱하는 동안 엔진은 저장소 안에 등장하는 모든 실제 변수명, 클래스명, 용어를 사전에 모아 놓습니다. 오타가 있는 쿼리를 확인하면 이 사전을 참조하여 <1ms 이내에 오타를 교정해 준 다음 검색합니다.
3. 🤖 AI 에이전트를 위해 줄 번호가 친 코드블록
문제: 검색 결과의 헤더에는
Lines 10-50와 같이 줄 범위가 있지만, 그 안은 실제 코드에는 나란의 줄 번호가 없었습니다. Claude Code, Gemini CLI, Antigravity 같은 AI 코딩 에이전트가 특정 줄을 편집하거나 인용하려면 줄을 하나 하나 세거나 어긋난 이동값을 추측해야 했습니다.해결 방법: 이제 검색 결과에 나오는 코드 조각 안의 모드는 항상 실제 1부터 시작하는 줄 번호가 앞에 붙습니다(
10: export class ...). AI 에이전트는 이정확한 줄 번호를 추가 파일을 열지 않고도 편집 도구에 전달할 수 있습니다.
4. 📚 순수 코드 검색에서 문서가 노이즈가 될 때
문제: "통화 형식을 어떻게 맞나요" 같은 넓은 개념을 검색할 때, 대규모 마크다운 스킬 파일과 아키텍처 가이드가 오히려 실제
.ts유틸 함수보다 높은 순위에 걸리는 경우가 있었습니다. 마크다운 문서에 얘기형 영어가 많기 때문입니다.해결 방법:
검색 필터를 추가했습니다:
codeOnly: true(마크다운/문서 무시),pathFilter: "src/...", 그리고language.정적 JSON 사전 파일의 가중치를 낮춰서 핵심 TypeScript/JavaScript 로직이 항상 1순위로 오도록 만들었습니다.
5. 🔁 결과 넘침(한 큰 파일이 검색 결과 도배)
문제: 넓은 주제를 검색하면 3,000줄짜리 파일 하나가 여러 번 매칭되어 10개 결과 슬롯을 다 차지하면서, 더 작고 깔끔한 헬퍼 파일의 검색 결과를 가려 버렸습니다.
해결 방법: 파일당 결과 다양성을 추가했습니다. 엔진은 파일당 최대 2개의 상위 점수 청크만 반환하므로, 서로 다른 코드 영역에서 고르게 결과를 받게 됩니다.
6. ⚡ 빠른 저장 시 두 개의 DB 잠금 충돌
문제: 브랜치를 스위치하거나 여러 파일을 연달아 저장할 때, LanceDB에 대한 여러 쓰기가 동시에 일어나면 버전충돌(Cow 버전) 오류가 발생할 수 있었습니다.
해결 방법: 지수 백오프(exponential backoff)처럼 쓰기 대기열을 추가했습니다. 쓰기 충돌이 발생하면 수 미리초 동안 자동으로 대기한 다음 서버가 중단되지 않도록 안전하게 재시도하게 됩니다.
💡 요약
프로세스 내 ONNX 임베딩 및 임베디드 LanceDB, 스마트 토크 보강, 그리고 **Model Context Protocol (MCP)**을 결합하여 로우컬 시맨틱 검색이 지니던 번거로움을 제거했습니다:
✅ 내 노트북 위에서 백그라운드 데몬이 돌지 않습니다.
✅ Python/ChromaDB 의존성이 없습니다.
✅ Git 노이즈 노출이 없습니다(
node_modules/.cache에 저장).✅ 오타&단어 패턴 변화를 1ms 안에 자동 제공합니다.
✅ 자연어 질문을 내가 필요한 코드와 마크다운 정확히 연결해 주는 뜻 기반 검색이 즉시 이루어집니다.
행복한 코딩 되세요! ☕️🚀
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to index and search codebases using semantic search powered by multiple embedding providers (OpenAI, VoyageAI, Gemini, Ollama) and vector database storage.
- AlicenseNot gradedqualityCmaintenanceProvides Claude Code with local semantic search and indexing of your codebase using AST-aware chunking and hybrid search, enabling deep code understanding without sending data to the cloud.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform intelligent semantic code search across codebases using local AI embeddings for meaning-based retrieval.56MIT
- FlicenseNot gradedqualityDmaintenanceEnables semantic code search across codebases using AI embeddings and vector similarity, integrated with Claude Desktop and Cursor.
Related MCP Connectors
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/genautkin/code-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server