1C Code Search MCP - Local MCP server for semantic code search in 1C codebase
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iflow_mcp_rsyuzyov_bsl_mcp-0.1.0.tar.gz.
File metadata
- Download URL: iflow_mcp_rsyuzyov_bsl_mcp-0.1.0.tar.gz
- Upload date:
- Size: 510.5 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e766b52745e458a7319c0c23c4d357352642d4f281a623c6cbc694dc61f39b1
|
|
| MD5 |
5f6a3124b14ebe2da3d4216e1e707f58
|
|
| BLAKE2b-256 |
3149428a243492af8237d908ba34aa1a2e28de40ac439c23a46ceabe610e5ffa
|
File details
Details for the file iflow_mcp_rsyuzyov_bsl_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: iflow_mcp_rsyuzyov_bsl_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 525.5 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce7650cde13c350e9eb1791093cd0de6f37976bf6c3141ff854f59bd8c365d56
|
|
| MD5 |
5c74f511b19354915b2dc28363dea9dc
|
|
| BLAKE2b-256 |
72d5bbefc043db63b050e645846535722bef79e86b86fa23c6f19dc77e94e5c8
|