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
Metadata
Release files for iflow-mcp_rsyuzyov-bsl-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| iflow_mcp_rsyuzyov_bsl_mcp-0.1.0.tar.gz | 510.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| iflow_mcp_rsyuzyov_bsl_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / iflow_mcp_rsyuzyov_bsl_mcp-0.1.0.tar.gz
| Download URL | iflow_mcp_rsyuzyov_bsl_mcp-0.1.0.tar.gz |
|---|---|
| Size | 510.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8e766b52745e458a7319c0c23c4d357352642d4f281a623c6cbc694dc61f39b1
|
|
BLAKE2b-256 checksum How to use checksums |
3149428a243492af8237d908ba34aa1a2e28de40ac439c23a46ceabe610e5ffa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / iflow_mcp_rsyuzyov_bsl_mcp-0.1.0-py3-none-any.whl
| Download URL | iflow_mcp_rsyuzyov_bsl_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 525.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ce7650cde13c350e9eb1791093cd0de6f37976bf6c3141ff854f59bd8c365d56
|
|
BLAKE2b-256 checksum How to use checksums |
72d5bbefc043db63b050e645846535722bef79e86b86fa23c6f19dc77e94e5c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|