Skip to main content

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-клиентами.

Установка

  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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_rsyuzyov_bsl_mcp-0.1.0.tar.gz (510.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iflow_mcp_rsyuzyov_bsl_mcp-0.1.0-py3-none-any.whl (525.5 kB view details)

Uploaded Python 3

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

Hashes for iflow_mcp_rsyuzyov_bsl_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8e766b52745e458a7319c0c23c4d357352642d4f281a623c6cbc694dc61f39b1
MD5 5f6a3124b14ebe2da3d4216e1e707f58
BLAKE2b-256 3149428a243492af8237d908ba34aa1a2e28de40ac439c23a46ceabe610e5ffa

See more details on using hashes here.

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

Hashes for iflow_mcp_rsyuzyov_bsl_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ce7650cde13c350e9eb1791093cd0de6f37976bf6c3141ff854f59bd8c365d56
MD5 5c74f511b19354915b2dc28363dea9dc
BLAKE2b-256 72d5bbefc043db63b050e645846535722bef79e86b86fa23c6f19dc77e94e5c8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page