Каталог/1C Code Search MCP
1C

1C Code Search MCP

Активный
@rsyuzyovRAG / ПоискДобавлен: 09 мая 2026 г.

Локальный MCP-сервер для семантического поиска по кодовой базе 1С. Поддерживает несколько информационных баз, разные embedding-модели и векторные движки Qdrant, LanceDB или ChromaDB. Через веб-интерфейс можно управлять базами и настройками, а по SSE подключаются MCP-клиенты. Особенность: решение полезно для больших кодовых баз, где обычный текстовый поиск быстро теряет контекст.

3
views
0
comments
pythonsemantic-searchembeddingsqdrantchromadb

MCP tools

search_codelist_ibs

Описание

Локальный 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-клиентами.

Установка

  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

Комментарии

Войдите, чтобы оставить комментарий

Войти

Загрузка...