1C Code Search MCP
АктивныйЛокальный MCP-сервер для семантического поиска по кодовой базе 1С. Поддерживает несколько информационных баз, разные embedding-модели и векторные движки Qdrant, LanceDB или ChromaDB. Через веб-интерфейс можно управлять базами и настройками, а по SSE подключаются MCP-клиенты. Особенность: решение полезно для больших кодовых баз, где обычный текстовый поиск быстро теряет контекст.
MCP tools
Описание
Локальный MCP-сервер для семантического поиска по кодовой базе 1С. Поддерживает несколько информационных баз, разные embedding-модели и векторные движки Qdrant, LanceDB или ChromaDB. Через веб-интерфейс можно управлять базами и настройками, а по SSE подключаются MCP-клиенты. Особенность: решение полезно для больших кодовых баз, где обычный текстовый поиск быстро теряет контекст.
README
1C Code Search MCP
Локальный MCP-сервер для семантического поиска по кодовой базе 1С. Поддерживает множество информационных баз, различные модели эмбеддингов и векторные движки.
Ключевые возможности
- Мульти-конфигурация: Поддержка нескольких баз кода (информационных баз) одновременно.
- Гибкий выбор моделей: Поддержка любых моделей совместимых с HuggingFace/ONNX (по умолчанию
cointegrated/rubert-tiny2). - Векторный поиск: Использование Qdrant, LanceDB или ChromaDB для эффективного поиска.
- Веб-интерфейс: Удобное управление базами и настройками через браузер.
- MCP Протокол: Легкая интеграция с Claude, Cursor, Kiro и другими MCP-клиентами.
Установка
- Клонируйте репозиторий.
- Установите зависимости:
python install.py
Запуск
python code-search.py
или
python -m code_search
Сервер запустится на порту 8000 (по умолчанию). Откройте http://localhost:8000 в браузере для настройки баз.
Конфигурация (config.yaml)
Файл config.yaml создается автоматически при первом запуске. Вы можете редактировать его вручную или через веб-интерфейс.
Пример конфигурации:
global:
port: 8000
check_interval: 300
ibs:
- name: "trade"
title: "Управление Торговлей"
source_dir: "C:/Projects/Trade/src"
index_dir: "./indices/trade"
embedding_model: "cointegrated/rubert-tiny2"
vector_db: "qdrant"
- name: "erp"
title: "1С:ERP"
source_dir: "C:/Projects/ERP/src"
index_dir: "./indices/erp"
embedding_model: "intfloat/multilingual-e5-small"
vector_db: "qdrant"
Параметры
Global:
port: Порт веб-сервера.check_interval: Интервал фоновой проверки изменений файлов (в секундах).
IBs (Информационные базы):
name: Уникальный ID базы (латиница).title: Человекочитаемое название.source_dir: Путь к каталогу с выгрузкой конфигурации (XML файлы).index_dir: Путь для хранения векторного индекса.embedding_model: Имя модели эмбеддингов.vector_db: Исполнитель поиска (qdrant).
Настройка производительности и параметров
Помимо базовой настройки в config.yaml, существуют внутренние параметры, влияющие на скорость индексации и потребление ресурсов. Они заданы константами в коде.
Файл code_search/indexer/engine.py
-
BATCH_SIZE(по умолчанию500)- Где хранится: Константа в начале файла.
- Что это: Количество фрагментов (чанков), которые накапливаются в памяти перед записью в векторную БД.
- Влияние: Увеличение может слегка ускорить процесс (реже коммиты в БД), но увеличит потребление RAM. Уменьшение экономит память.
-
READ_WORKERS(по умолчанию1)- Где хранится: Константа в начале файла.
- Что это: Количество потоков для чтения файлов и первичной обработки.
- Влияние: Увеличение ускоряет чтение с диска, но повышает нагрузку на CPU. Так как генерация векторов тоже требует CPU, ставить много потоков (больше 2-4) обычно бессмысленно — "бутылочным горлышком" станет нейросеть. Уменьшение до 1 делает систему отзывчивее.
-
EMBED_BATCH_SIZE(по умолчанию64)- Где хранится: Константа в начале файла.
- Что это: Размер пачки текстов, которая отправляется в нейросеть за один раз.
- Влияние: Сильно влияет на скорость и память. Увеличение ускоряет работу (особенно с GPU/AVX), но линейно "ест" память. Если падает с ошибкой OOM (Out Of Memory) — уменьшайте.
Файл code_search/config.py
CHUNK_SIZE(по умолчанию1024) иCHUNK_OVERLAP(по умолчанию100)- Что это: Размер куска кода в символах и перекрытие между ними.
- Влияние: Определяет, как "режется" код. 1024 символа ~ 20-30 строк кода. Если менять, то придется переиндексировать всё с нуля.
Поддерживаемые модели и движки
Модели эмбеддингов
Сервер автоматически загружает и конвертирует в ONNX модели с HuggingFace. Рекомендуемые:
cointegrated/rubert-tiny2(Default) — Быстрая, легкая, хорошая точность.intfloat/multilingual-e5-small— Высокая точность, мультиязычность.ai-forever/sbert_large_nlu_ru— Крупная модель для русского языка.
Векторные движки
- Qdrant (по умолчанию) — Быстрый, работает локально, проверен.
- LanceDB — Встраиваемая (embedded) база, очень быстрая, хранит данные в файлах.
- ChromaDB — Популярная open-source векторная БД.
Укажите нужное значение (qdrant, lancedb или chromadb) в поле vector_db в config.yaml.
Подключение к клиентам (MCP)
Сервер работает по протоколу MCP через SSE (Server-Sent Events), что позволяет подключать его удаленно или через сеть.
URL для подключения: http://<ваш-сервер>:8000/sse
Claude Desktop
В файл claude_desktop_config.json:
{
"mcpServers": {
"1c-rag": {
"url": "http://localhost:8000/sse"
}
}
}
Cursor
- Перейдите в Cursor Settings > Features > MCP.
- Нажмите Add New MCP Server.
- Type:
SSE. - URL:
http://localhost:8000/sse
Kiro / Supermaven
В файл ~/.kiro/settings/mcp.json:
{
"mcpServers": {
"1c-rag": {
"url": "http://localhost:8000/sse"
}
}
}
Лицензия
MIT
Комментарии
Войдите, чтобы оставить комментарий
ВойтиЗагрузка...