Skip to main content

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

Metadata

Release files for iflow-mcp_rsyuzyov-bsl-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iflow-mcp_rsyuzyov-bsl-mcp 0.1.0
File Size Uploaded
iflow_mcp_rsyuzyov_bsl_mcp-0.1.0.tar.gz 510.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iflow-mcp_rsyuzyov-bsl-mcp 0.1.0
File Interpreter ABI Platform
iflow_mcp_rsyuzyov_bsl_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.0 MB

Release files / iflow_mcp_rsyuzyov_bsl_mcp-0.1.0.tar.gz

Download URL iflow_mcp_rsyuzyov_bsl_mcp-0.1.0.tar.gz
Size 510.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8e766b52745e458a7319c0c23c4d357352642d4f281a623c6cbc694dc61f39b1
BLAKE2b-256 checksum
How to use checksums
3149428a243492af8237d908ba34aa1a2e28de40ac439c23a46ceabe610e5ffa
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / iflow_mcp_rsyuzyov_bsl_mcp-0.1.0-py3-none-any.whl

Download URL iflow_mcp_rsyuzyov_bsl_mcp-0.1.0-py3-none-any.whl
Size 525.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ce7650cde13c350e9eb1791093cd0de6f37976bf6c3141ff854f59bd8c365d56
BLAKE2b-256 checksum
How to use checksums
72d5bbefc043db63b050e645846535722bef79e86b86fa23c6f19dc77e94e5c8
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page