MCP (Model Context Protocol) сервер для кастомной системы Retrieval-Augmented Generation (RAG) с индексацией кода. Позволяет искать и получать контекст из большого кодобаза с использованием векторного поиска.
Этот проект реализует MCP сервер, который предоставляет инструменты для:
- Поиска по кодебазе на основе векторной семантической схожести
- Получения полного контекста конкретного файла
- Индексации кода в локальную векторную базу данных
- Локальная индексация: Все данные хранятся локально в LanceDB
- Инкрементальная индексация: Возможность обновления индекса при изменении файлов
- MCP интеграция: Готовая интеграция с Continue и другими MCP-клиентами
- Гибкая стратегия чанкинга: Поддержка различных подходов к разбиению кода
Выполняет три основных шага:
- Чанкинг: Разбиение файлов на части подходящего размера
- Генерация эмбеддингов: Создание векторных представлений чанков
- Вставка в базу данных: Сохранение результатов в LanceDB
Проект поддерживает несколько стратегий разбиения кода:
- Truncate: Обрезка файлов при превышении лимита (самый простой вариант)
- Fixed-size chunks: Разбиение на чанки фиксированного размера
- AST-based: Рекурсивное разбиение на основе абстрактного синтаксического дерева (требует дополнительной настройки)
Поиск по кодебазе с использованием векторной схожести.
Параметры:
query(string): Текстовый запрос для поискаlimit(integer, optional): Максимальное количество результатов (по умолчанию: 10)
Пример использования:
{
"name": "search_codebase",
"arguments": {
"query": "как реализовать аутентификацию пользователей",
"limit": 5
}
}Получение всех чанков из конкретного файла.
Параметры:
filename(string): Имя файла для получения контекста
Пример использования:
{
"name": "get_file_context",
"arguments": {
"filename": "src/main/App.java"
}
}Результаты поиска возвращаются в формате, удобном для использования с LLM. Это обеспечивает четкое разделение между именем файла и его содержимым.
- Периодическая индексация: Запускайте индексацию регулярно (раз в день/неделю) через cron job
- Инкрементальное обновление: Реализуйте логику для обновления только измененных файлов
- Фильтрация исключений: Исключите ненужные файлы и директории из индексации (.git, node_modules, etc.)
- Кэширование моделей: Храните модели эмбеддингов локально для ускорения загрузки
- Разделение по репозиториям: Для множества репозиториев используйте отдельные таблицы в БД или отдельные БД
- Тонкая настройка параметров: Экспериментируйте с размерами чанков и контекста для вашей кодебазы
Для улучшения качества результатов можно добавить этап reranking:
- Получить 50-100 результатов из векторной базы
- Отранжировать их с помощью модели reranking
- Вернуть топ-N наиболее релевантных результатов
Внесение изменений приветствуется! Пожалуйста:
- Создайте issue для обсуждения крупных изменений
- Отправьте pull request с описанием улучшений
- Убедитесь, что все тесты проходят успешно
Этот проект распространяется под лицензией MIT. Подробнее см. файл LICENSE.
При возникновении проблем или вопросов:
- Откройте issue в репозитории проекта
- Изучите документацию MCP: https://modelcontextprotocol.io/
Этот проект является кастомной реализацией Code RAG с использованием бесплатных инструментов и моделей.