Semantic Search MCP
시맨틱 검색
마크다운 파일에 대한 시맨틱 검색입니다. 키워드뿐만 아니라 의미를 기반으로 관련 노트를 찾습니다. 새 노트를 만들기 전에 중복을 감지합니다.
두 가지 서버 전송 방식을 지원합니다:
stdio MCP — Claude Code 통합용 (세션당 하나의 프로세스)
HTTP — 하나의 포트에서 MCP-over-HTTP와 REST를 결합; 모든 클라이언트가 공유하는 하나의 웜 프로세스
기능
sentence-transformers를 사용한 시맨틱 검색
중복/유사 노트 감지
파일 감시자를 통한 자동 인덱스 업데이트
다중 디렉토리 지원
인라인 태그 추출 (
#tag-name)
설치
CPU 전용 설치 — macOS(모든 Mac, Apple Silicon 또는 Intel) 및 NVIDIA GPU가 없는 Linux/Windows에 권장됩니다. 약 5GB의 CUDA 바이너리를 절약합니다. macOS에서는 Apple GPU(MPS)가 PyTorch의 내장 MPS 백엔드를 통해 자동으로 감지되어 사용됩니다. "CPU" 라벨은 CUDA가 없음을 의미할 뿐, 런타임 시 컴퓨팅 장치를 의미하지는 않습니다.
uv tool install --index https://download.pytorch.org/whl/cpu \
git+https://github.com/bborbe/semantic-searchCUDA 설치 — 전용 NVIDIA GPU가 있는 Linux/Windows 전용입니다. macOS에는 적용되지 않습니다 (Mac에서는 NVIDIA CUDA가 지원되지 않음).
uv tool install git+https://github.com/bborbe/semantic-search업그레이드
uv tool upgrade semantic-search서버 모드
stdio MCP (세션별 Claude Code)
Claude Code 세션당 하나의 프로세스를 생성합니다. 간단하지만 각 세션이 약 400MB~1GB의 모델 복사본을 로드합니다.
claude mcp add -s project semantic-search \
--env CONTENT_PATH=/path/to/vault \
-- \
uvx --from git+https://github.com/bborbe/semantic-search semantic-search-mcp사용 가능한 도구:
search_related(query, top_k=5)— 의미적으로 관련된 노트 찾기check_duplicates(file_path)— 중복/유사 노트 감지
HTTP (모든 클라이언트 간 공유)
단일 장기 실행 프로세스가 /mcp에서 MCP-over-HTTP를, /search, /duplicates, /health, /reindex에서 REST를 제공합니다. 모든 Claude Code 세션과 REST 클라이언트가 하나의 웜 인덱서를 공유합니다.
CONTENT_PATH=/path/to/vault semantic-search-http --host 127.0.0.1 --port 8321MCP 설정을 통해 Claude Code를 연결하세요:
{
"mcpServers": {
"semantic-search": {
"type": "http",
"url": "http://127.0.0.1:8321/mcp"
}
}
}REST 엔드포인트:
엔드포인트 | 메서드 | 설명 |
| POST | MCP-over-HTTP (Claude Code) |
| GET | 시맨틱 검색 |
| GET | 중복 노트 찾기 |
| GET | 인덱스 상태를 포함한 상태 확인 |
| GET/POST | 인덱스 강제 재구축 |
쿼리 예시:
# Search
curl 'http://127.0.0.1:8321/search?q=kubernetes+deployment'
# Find duplicates
curl 'http://127.0.0.1:8321/duplicates?file=notes/my-note.md'
# Health check
curl 'http://127.0.0.1:8321/health'백그라운드 실행
프로덕션 스타일로 사용하려면 semantic-search-http를 백그라운드 서비스로 실행하여 모든 Claude Code 세션(및 모든 REST 클라이언트)이 하나의 웜 프로세스를 공유하도록 하세요.
플랫폼 | 가이드 |
macOS (launchd) | |
Linux (systemd) |
빠른 예시 (macOS):
launchctl load ~/Library/LaunchAgents/com.github.bborbe.semantic-search-http.plist빠른 예시 (Linux):
systemctl --user enable --now semantic-search-http.serviceCLI 명령어
서버를 실행하지 않는 일회성 명령어:
# Search
CONTENT_PATH=/path/to/vault semantic-search search "kubernetes deployment"
# Find duplicates
CONTENT_PATH=/path/to/vault semantic-search duplicates path/to/note.md바이너리
바이너리 | 목적 |
| 결합된 HTTP 서버 — |
| stdio MCP 서버 — Claude Code 세션당 하나. HTTP 서비스가 설정되지 않았을 때 사용. |
| CLI 전용 — |
구성
환경 변수
변수 | 설명 | 기본값 |
| 인덱싱할 디렉토리 (여러 개일 경우 쉼표로 구분) |
|
| 로깅 레벨 (DEBUG, INFO, WARNING, ERROR) |
|
다중 디렉토리
경로를 쉼표로 구분하여 여러 디렉토리를 인덱싱하세요:
CONTENT_PATH=/path/to/vault1,/path/to/vault2,/path/to/docs모든 디렉토리는 함께 인덱싱되며 하나의 통합된 인덱스로 검색됩니다.
작동 원리
첫 실행 시 작은 임베딩 모델(~90MB)을 다운로드하고 마크다운 파일을 인덱싱합니다(일반적인 볼트의 경우 1초 미만). 파일 시스템 감시자를 통해 파일이 변경되면 인덱스가 자동으로 업데이트됩니다.
인덱싱된 콘텐츠
각 마크다운 파일은 가중치가 적용된 구성 요소로 인덱싱됩니다:
구성 요소 | 가중치 | 참고 |
파일명 | 3x | |
Frontmatter | 3x | |
Frontmatter | 2x | 인라인 태그와 병합 |
Frontmatter | 2x | |
인라인 태그 ( | 2x | 본문에서 추출 |
첫 번째 H1 제목 | 2x | |
본문 콘텐츠 | 1x | 처음 500단어 |
개발
# Clone
git clone https://github.com/bborbe/semantic-search
cd semantic-search
# Install dev dependencies
make install
# Run checks
make check
# Run tests
make test라이선스
BSD 2-Clause 라이선스 — LICENSE를 참조하세요.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
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/bborbe/semantic-search'
If you have feedback or need assistance with the MCP directory API, please join our Discord server