RB

rsyuzyov/bsl-mcp

Data science & ML
11 stars 3 forks Качество 76 Тренд 32MIT

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

Обзор

Локальный MCP-сервер для семантического поиска по кодовой базе 1С. Поддерживает множество информационных баз, различные модели эмбеддингов и векторные движки. * : Поддержка нескольких баз кода (информационных баз) одновременно. * : Поддержка любых моделей совместимых с HuggingFace/ONNX (по умолчанию cointegrated/rubert-tiny2). * : Использование Qdrant, LanceDB или ChromaDB для эффективного поиска. * : Удобное управление базами и настройками через браузер. * : Легкая интеграция с Claude, Cursor, Kiro и другими MCP-клиентами. 1. Клонируйте репозиторий. 2. Установите зависимости: Сервер запустится на порту 8000 (по умолчанию). Откройте в браузере для настройки баз. Файл config.yaml создается автоматически при первом запуске. Вы можете редактировать его вручную или через веб-интерфейс. * port: Порт веб-сервера. * check_interval: Интервал фоновой проверки изменений файлов (в секундах). * name: Уникальный ID базы (латиница). * title: Человекочитаемое название.

README

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

Открыть полный README на GitHub

Установка

This server does not publish a one-line install command.

Open the repository installation guide Новичок в MCP? Начните с руководства на mcpskill.org →

Конфигурация

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