Skip to main content
Glama
genautkin

code-search-mcp

by genautkin

🔍 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 deductionEarlyBirdReward라는 단어가 있었지만, "discount"라는 정확한 단어는 없었기 때문입니다.

바로 여기서 시맨틱 검색이 모든 것을 바꿉니다.


Related MCP server: claude-context-local

🧠 시맨틱 검색이란? (쉽게 설명해 드립니다)

전통적인 검색은 정확한 글자와 단어를 찾습니다.

*시맨틱 검색은 단어 뒤에 숨겨진 의미를 찾습니다.*

작동 방식: 의미의 지도

  1. 글자 대신 숫자: AI 모델은 텍스트(또는 코드)를 가져와 임베딩(또는 벡터)이라는 숫자 목록으로 변환합니다.

  2. 지도 위의 좌표: 이 숫자들을 인간 개념이라는 거대한 지도의 GPS 좌표라고 생각해 보세요.

    • "discount""promotional deduction"는 지도에서 바로 옆에 위치하게 됩니다.

    • "espresso shot""latte"는 함께 모여 있습니다.

    • "database migration"은 지도 반대편에 멀리 떠 있습니다.

  3. 최근접 이웃 찾기: 자연스러운 영어로 질문을 하면 검색 엔진이 그 질문을 좌표로 바꾸고, 지도에서 그 좌표와 가장 가까운 코드 조각을 찾아냅니다.

                  [ 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 임베딩

@huggingface/transformers (ONNX)

Xenova/all-MiniLM-L6-v2를 이용해 인프로세스에서 384차원의 밀집 벡터를 생성합니다. 100% 비공개 — 네트워크 요청이 없습니다.

벡터 저장소

LanceDB

Apache Arrow 기반의 임베디드, 서버리스 벡터데이터베이스. 외부 서버 프로세스가 필요 없습니다.

실시간 파일 감시자

chokidar

파일을 실시간으로 감시하여 저장 시점에 대한 약간의 지연(~200ms 이내)으로 증분 벡터 업데이트.

프로토콜

@modelcontextprotocol/sdk

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을 실행하면:

  1. 실시간 파일 감시: Git이 파일을 업데이트하면 내장 chokidar 워처가 추가/변경/삭제된 파일을 실시간 감지합니다.

  2. 빠른 차등 재스캔: 두 브랜치에서 달라진 파일만 다시 인덱싱합니다 (몇 분이 아닌 1–2초).

  3. 자동 정리: 삭제된 파일이나 이전 브랜치의 오래된 코드 청크는 LanceDB에서 자동으로 제거합니다.

  4. 수동 동기화: 대규모 머지 후 완전 재인덱싱을 강제로 실행하고 싶다면 어시스턴트에게 *"code_search_reindexforce: 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-mcp

2. 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"]
    }
  }
}
EOF

3. 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 도구

도구명

인수

설명

호출할 때

code_search

query (필수)limit (선택, 기본값 10)pathFilter (선택 문자열)language (선택 문자열)codeOnly (선택 boolean)

인덱싱된 저장소 파일 전체에서 하이브리드 시맨틱(의미 기반) + 어휘 검색을 수행한다. 유사도 점수와 함께 줄 번호가 포함된 코드 조각을 반환한다.

인기, 비즈니스 로직, 워크플로, UI 컴포넌트, 또는 자연어로 설명된 기능을 찾을 때 최우선 호출한다(예: "사용자 인증이 어디서 갱신되나요?", "장바구니 세금 계산기").

code_search_status

(없음)

현재 인덱싱 진행 상태(READY, INDEXING), 백분율, 총 파일 수, 그리고 LanceDB 안의 청크 수를 반환한다.

인덱싱이 아직 진행 중일 수 있다고 생각되면 대규모 검색 전에 확인한다.

code_search_reindex

forceFull (선택 boolean)

백그라운드 재인덱싱 또는 데이터베이스 전체 재구축을 트리거한다.

사용자가 저장소 전체 재구축을 명시적으로 요청했거나 대규모 브랜치 병합이 발생한 뒤 호출한다.

code_search_guide

(없음)

인라인 에이전트 사용 모범 사례와 팁을 반환한다.

도구를 호출하는 동안 모범 사례용 스스로 인지하고 싶을 때 호출한다.


🧭 도구 결정 매트릭스: 언제 어느 도구를 사용할까

                       ┌───────────────────────────────────────────────┐
                       │ 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 에이전트용 프로 팁

  1. 순수한 구현 로직에는 codeOnly: true 사용하기: 마크다운 문서나 스킬 가이드를 제외한 순수한 TypeScript/JavaScript 계산 공식을 찾으려면 항상 codeOnly: true를 넘긴다.

  2. pathFilter로 서브시스템 범위 좁히기: 사용자가 *"청구 모듈에서 체크아웃이 어떻게 동작하나요?"*라고 물으면 pathFilter: "src/billing"을 넘긴다.

  3. 직접 코드 편집 시 줄 번호 사용하기: 코드 조각은 1부터 시작하는 줄 번호(14: export function calculateTotal())와 함께 반환된다. 이 줄 범위를 바로 replace_file_content 또는 view_file에 전달하면 되고, 추측이 필요 없다.

  4. 오타 허용 오차: 자연어 그대로 전달해도 된다. 엔진이 <1ms 안에 복수형(stemming)과 오타(Levenshtein correction)를 자동으로 보정한다.


🤝 궁극의 AI 페어: code-searchcodegraph를 함께 설치해야 하는 이유

현대 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)  │
                   └─────────────────────────────────────────────────────────┘

하나의 도구만으로는 충분하지 않은 이유:

도구

주요 역할

가장 잘하는 것

어려워하는 부분

code-search (시맨틱 벡터)

개념 및 의도 발견

일반 언어로 설명된 비즈니스 로직, 기능, 컴포넌트, 아키텍처 문서를 찾는 것

동적 호출 계층과 주석 없는 레거시 코드 파일을 가로질러 탐색하는 것

codegraph (AST 심볼 그래프)

구조 탐색 및 영향 범위 파악

심볼 단위로 정의, 호출자, 피호출자를 그리고 관련 유닛 테스트를 한 번에 추적하는 것

심볼 이름을 모르는 상태에서 자연어로 설명된 개념을 찾는 것

실전 사례 연구: 최신 엔진 vs 레거시 모놀리스

실제 비대규모 테스트에서:

  1. **최신 엔진(subscription-billing.engine.ts)**은 명시적인 이름(calculateSubscriptionDiscount)과 잘 정비된 JSDoc 주석을 갖고 있다. code_search는 이 파일을 밀리초 단위로 55% 이상 유사도 일치로 찾는다.

  2. **레거시 코어(LegacyOrderProcessor.js)**는 2,000줄짜리 파일에 오래된 용어(getDiscountedTotal, applyOldDeduction)나 틀린 표현을 쓰고 있다. 시맨틱 검색만으로는 점수가 낮게 나올 수 있다.

  3. 시너지: code_searchsubscription-billing.engine.ts를 찾으면, codegraph_explore는 즉시 모든 호출자를 LegacyOrderProcessor.js까지 추적하여 추측 없이 관련 단위 테스트에 걸친 영향 범위(blast radius)를 매핑한다.

두 도구를 모두 MCP 구성에 추가하세요:

{
  "mcpServers": {
    "code-search": {
      "command": "node",
      "args": ["/path/to/code-search-mcp/dist/bin/cli.js"]
    },
    "codegraph": {
      "command": "codegraph",
      "args": ["mcp"]
    }
  }
}

📋 권장 어시스턴트 규칙

AI 어시스턴트가 code_searchcodegraph를 자동으로 선택하게 하려면 프로젝트의 인스트럭션 파일(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 LanceDB

Check 2: 자연어 코드 검색해보기

AI 어시스턴트에게 이렇게 물어보세요:

"고객 할인 규칙이나 보상이 어떻게 처리되는지 code_search로 찾아줘"

예상 출력:

### Match 1: src/rewards/early-bird.ts (Lines 1-18) [Score: 56.4%]

어시스턴트는 정확한 줄 번호와 유사도 점수가 포함된 관련 코드 조각을 즉시 반환합니다.

Check 3: 실시간 파일 와칭을 테스트

  1. 프로젝트 안에 특이한 주석을 포함한 새 테스트 파일을 만드세요(예: src/drinks/secret-recipe.ts):

    // Caramel macchiato secret syrup blend formula
    export const caramelBlend = 42;
  2. 파일을 저장합니다.

  3. 즉시 AI 어시스턴트에게 이렇게 요청하세요:

    "code_search로 비밀 시럽 블렌드 시럽 공식을 검색해 줘"

  4. 새 파일은 수동 재빌드나 리스타트 없이 1초 이내에 검색되어 반환됩니다!

Check 4: 자동 테스트 스위트 실행 (선택 사항)

소스에서 개발하는 경우 실행하세요:

npm test

31개의 유닛/통합 테스트가 모두 실행되고 통과하여, 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 유틸 함수보다 높은 순위에 걸리는 경우가 있었습니다. 마크다운 문서에 얘기형 영어가 많기 때문입니다.

  • 해결 방법:

    1. 검색 필터를 추가했습니다: codeOnly: true(마크다운/문서 무시), pathFilter: "src/...", 그리고 language.

    2. 정적 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 안에 자동 제공합니다.

  • ✅ 자연어 질문을 내가 필요한 코드와 마크다운 정확히 연결해 주는 뜻 기반 검색이 즉시 이루어집니다.

행복한 코딩 되세요! ☕️🚀

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

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…

View all MCP Connectors

Latest Blog Posts

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