Skip to main content
Glama

1C Code Search MCP

Локальный MCP-сервер для семантического поиска по кодовой базе 1С. Поддерживает множество информационных баз, различные модели эмбеддингов и векторные движки.

Ключевые возможности

  • Мульти-конфигурация: Поддержка нескольких баз кода (информационных баз) одновременно.

  • Гибкий выбор моделей: Поддержка любых моделей совместимых с HuggingFace/ONNX (по умолчанию cointegrated/rubert-tiny2).

  • Векторный поиск: Использование Qdrant, LanceDB или ChromaDB для эффективного поиска.

  • Веб-интерфейс: Удобное управление базами и настройками через браузер.

  • MCP Протокол: Легкая интеграция с Claude, Cursor, Kiro и другими MCP-клиентами.

Установка

  1. Клонируйте репозиторий.

  2. Установите зависимости:

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. Рекомендуемые:

  1. cointegrated/rubert-tiny2 (Default) — Быстрая, легкая, хорошая точность.

  2. intfloat/multilingual-e5-small — Высокая точность, мультиязычность.

  3. 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

  1. Перейдите в Cursor Settings > Features > MCP.

  2. Нажмите Add New MCP Server.

  3. Type: SSE.

  4. URL: http://localhost:8000/sse

Kiro / Supermaven

В файл ~/.kiro/settings/mcp.json:

{ "mcpServers": { "1c-rag": { "url": "http://localhost:8000/sse" } } }

Лицензия

MIT

-
security - not tested
A
license - permissive license
-
quality - not tested

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/rsyuzyov/bsl-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server