Semantic Search MCP
Семантический поиск
Семантический поиск по файлам markdown. Находите связанные заметки по смыслу, а не просто по ключевым словам. Обнаруживайте дубликаты перед созданием новых заметок.
Поддерживает два серверных транспорта:
stdio MCP — для интеграции с Claude Code (один процесс на сессию)
HTTP — комбинированный MCP-over-HTTP + REST на одном порту; один «разогретый» процесс, общий для всех клиентов
Возможности
Семантический поиск с использованием sentence-transformers
Обнаружение дубликатов/похожих заметок
Автоматическое обновление индекса с помощью отслеживания файлов
Поддержка нескольких директорий
Извлечение встроенных тегов (
#tag-name)
Установка
Установка только для CPU — рекомендуется для macOS (любой Mac, Apple Silicon или Intel) и Linux/Windows без видеокарты NVIDIA. Экономит ~5 ГБ бинарных файлов CUDA. На macOS графический процессор Apple (MPS) по-прежнему автоматически обнаруживается и используется через встроенный бэкенд MPS в PyTorch — метка «CPU» относится только к отсутствию CUDA, а не к вычислительному устройству во время выполнения.
uv tool install --index https://download.pytorch.org/whl/cpu \
git+https://github.com/bborbe/semantic-searchУстановка CUDA — только для Linux/Windows с выделенной видеокартой NVIDIA. Не применимо к macOS (NVIDIA CUDA не поддерживается на Mac).
uv tool install git+https://github.com/bborbe/semantic-searchОбновление
uv tool upgrade semantic-searchРежимы сервера
stdio MCP (Claude Code для каждой сессии)
Запускает один процесс на каждую сессию Claude Code. Просто, но каждая сессия загружает свою копию модели объемом ~400 МБ–1 ГБ.
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-over-HTTP по адресу /mcp плюс REST по адресам /search, /duplicates, /health, /reindex. Все сессии Claude Code и REST-клиенты используют один общий «разогретый» индекс.
CONTENT_PATH=/path/to/vault semantic-search-http --host 127.0.0.1 --port 8321Укажите его в конфигурации MCP для 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-сервер — MCP на |
| stdio MCP-сервер — один на сессию Claude Code. Используйте, если HTTP-сервис не настроен. |
| Только CLI — разовые команды |
Конфигурация
Переменные окружения
Переменная | Описание | По умолчанию |
| Директория для индексации (через запятую для нескольких) |
|
| Уровень логирования (DEBUG, INFO, WARNING, ERROR) |
|
Несколько директорий
Индексируйте несколько директорий, разделив пути запятыми:
CONTENT_PATH=/path/to/vault1,/path/to/vault2,/path/to/docsВсе директории индексируются вместе и ищутся как единый индекс.
Как это работает
При первом запуске загружается небольшая модель эмбеддингов (~90 МБ) и индексируются ваши markdown-файлы (<1 с для типичных хранилищ). Индекс автоматически обновляется при изменении файлов через отслеживание файловой системы.
Индексируемый контент
Каждый markdown-файл индексируется с учетом весовых коэффициентов компонентов:
Компонент | Вес | Примечания |
Имя файла | 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 — см. 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