Semantic Search MCP
Búsqueda Semántica
Búsqueda semántica sobre archivos markdown. Encuentra notas relacionadas por significado, no solo por palabras clave. Detecta duplicados antes de crear nuevas notas.
Admite dos transportes de servidor:
stdio MCP — Para integración con Claude Code (un proceso por sesión)
HTTP — MCP-sobre-HTTP + REST combinados en un puerto; un proceso activo compartido por todos los clientes
Características
Búsqueda semántica usando sentence-transformers
Detección de notas duplicadas/similares
Índice de actualización automática con monitor de archivos
Soporte para múltiples directorios
Extracción de etiquetas en línea (
#tag-name)
Instalación
Instalación solo CPU — recomendado para macOS (cualquier Mac, Apple Silicon o Intel) y Linux/Windows sin una GPU NVIDIA. Ahorra ~5GB de binarios CUDA. En macOS, la GPU de Apple (MPS) se detecta y utiliza automáticamente a través del backend MPS integrado de PyTorch; la etiqueta "CPU" se refiere solo a la ausencia de CUDA, no al dispositivo de cómputo en tiempo de ejecución.
uv tool install --index https://download.pytorch.org/whl/cpu \
git+https://github.com/bborbe/semantic-searchInstalación CUDA — solo para Linux/Windows con una GPU NVIDIA dedicada. No aplicable a macOS (NVIDIA CUDA no es compatible en Mac).
uv tool install git+https://github.com/bborbe/semantic-searchActualización
uv tool upgrade semantic-searchModos de Servidor
stdio MCP (Claude Code por sesión)
Genera un proceso por sesión de Claude Code. Es simple, pero cada sesión carga su propia copia del modelo de ~400 MB–1 GB.
claude mcp add -s project semantic-search \
--env CONTENT_PATH=/path/to/vault \
-- \
uvx --from git+https://github.com/bborbe/semantic-search semantic-search-mcpHerramientas disponibles:
search_related(query, top_k=5)— Encuentra notas semánticamente relacionadascheck_duplicates(file_path)— Detecta notas duplicadas/similares
HTTP (compartido entre todos los clientes)
Un único proceso de larga ejecución sirve MCP-sobre-HTTP en /mcp además de REST en /search, /duplicates, /health, /reindex. Todas las sesiones de Claude Code y clientes REST comparten un indexador activo.
CONTENT_PATH=/path/to/vault semantic-search-http --host 127.0.0.1 --port 8321Configura Claude Code apuntando a él mediante la configuración de MCP:
{
"mcpServers": {
"semantic-search": {
"type": "http",
"url": "http://127.0.0.1:8321/mcp"
}
}
}Endpoints REST:
Endpoint | Método | Descripción |
| POST | MCP-sobre-HTTP (Claude Code) |
| GET | Búsqueda semántica |
| GET | Encontrar notas duplicadas |
| GET | Comprobación de estado con estadísticas del índice |
| GET/POST | Forzar reconstrucción del índice |
Ejemplos de consultas:
# 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'Ejecutar en segundo plano
Para un uso en producción, ejecuta semantic-search-http como un servicio en segundo plano para que cada sesión de Claude Code (y cualquier cliente REST) comparta un proceso activo.
Plataforma | Guía |
macOS (launchd) | |
Linux (systemd) |
Ejemplo rápido (macOS):
launchctl load ~/Library/LaunchAgents/com.github.bborbe.semantic-search-http.plistEjemplo rápido (Linux):
systemctl --user enable --now semantic-search-http.serviceComandos CLI
Comandos de ejecución única sin necesidad de ejecutar un servidor:
# Search
CONTENT_PATH=/path/to/vault semantic-search search "kubernetes deployment"
# Find duplicates
CONTENT_PATH=/path/to/vault semantic-search duplicates path/to/note.mdBinarios
Binario | Propósito |
| Servidor HTTP combinado — MCP en |
| Servidor stdio MCP — uno por sesión de Claude Code. Usar cuando el servicio HTTP no está configurado. |
| Solo CLI — comandos de ejecución única |
Configuración
Variables de entorno
Variable | Descripción | Predeterminado |
| Directorio a indexar (separado por comas para múltiples) |
|
| Nivel de registro (DEBUG, INFO, WARNING, ERROR) |
|
Múltiples directorios
Indexa múltiples directorios separando las rutas con comas:
CONTENT_PATH=/path/to/vault1,/path/to/vault2,/path/to/docsTodos los directorios se indexan juntos y se buscan como un índice unificado.
Cómo funciona
La primera ejecución descarga un pequeño modelo de incrustación (~90MB) e indexa tus archivos markdown (<1s para bóvedas típicas). El índice se actualiza automáticamente cuando los archivos cambian mediante un monitor del sistema de archivos.
Contenido indexado
Cada archivo markdown se indexa con componentes ponderados:
Componente | Peso | Notas |
Nombre de archivo | 3x | |
Frontmatter | 3x | |
Frontmatter | 2x | Fusionado con etiquetas en línea |
Frontmatter | 2x | |
Etiquetas en línea ( | 2x | Extraídas del cuerpo |
Primer encabezado H1 | 2x | |
Contenido del cuerpo | 1x | Primeras 500 palabras |
Desarrollo
# Clone
git clone https://github.com/bborbe/semantic-search
cd semantic-search
# Install dev dependencies
make install
# Run checks
make check
# Run tests
make testLicencia
Licencia BSD 2-Clause — ver 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