Skip to main content
Glama
Arman-Kudaibergenov

BSL Atlas

BSL Atlas

Docker Hub

MCP-сервер для 1С:Предприятие — векторный поиск, структурный индекс и граф вызовов в одном инструменте. Даёт AI-ассистентам мгновенный доступ к вашей конфигурации: находит функции, строит граф вызовов, ищет объекты метаданных и выполняет семантические запросы по BSL-коду — без чтения сырых файлов.

Что умеет

  • Структурный поиск (SQLite + FTS5, мгновенно): поиск функций по имени, список процедур модуля, граф вызовов (что вызывает что), поиск объектов метаданных (справочники, документы, регистры и др.)

  • Семантический поиск (ChromaDB, векторный): найти код по описанию — "как реализовано проведение", "где логируются ошибки"

  • Два слоя: SQLite пересобирается за секунды при старте; ChromaDB индексируется один раз в фоне через провайдер эмбеддингов на ваш выбор

Что нужно

  • Docker + Docker Compose

  • 1С:Предприятие 8.3 (Конфигуратор для выгрузки конфигурации)

  • API-ключ OpenRouter — openrouter.ai/keys

Быстрый старт

1. Выгрузить конфигурацию

В Конфигураторе: Конфигурация → Выгрузить конфигурацию в файлы

Укажите пустую папку, например C:\my-config\. После выгрузки появятся сотни XML-файлов и .bsl-модулей.

2. Скачать конфиг и настроить

curl -O https://raw.githubusercontent.com/Arman-Kudaibergenov/bsl-atlas/master/docker-compose.yml curl -O https://raw.githubusercontent.com/Arman-Kudaibergenov/bsl-atlas/master/.env.example mv .env.example .env

Отредактировать .env:

SOURCE_PATH=C:\my-config # папка с выгрузкой (содержит cf/) OPENROUTER_API_KEY=sk-or-v1-...

3. Запустить

docker compose up -d

Образ скачается автоматически с Docker Hub (~500 МБ, один раз). SQLite проиндексируется сразу, ChromaDB векторизует в фоне — прогресс: http://localhost:8000/health.

4. Подключить к Claude

Claude Desktop — добавить в claude_desktop_config.json:

{ "mcpServers": { "bsl-atlas": { "type": "http", "url": "http://localhost:8000/mcp" } } }

Расположение файла:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Claude Code — добавить в .mcp.json в корне проекта:

{ "mcpServers": { "bsl-atlas": { "type": "http", "url": "http://localhost:8000/mcp" } } }

Инструменты MCP

Структурные (SQLite — мгновенно)

Инструмент

Что делает

search_function(name)

Найти функцию/процедуру по имени во всех модулях

get_module_functions(path)

Список всех процедур/функций модуля

get_function_context(name)

Граф вызовов: что вызывает функция и кто вызывает её

metadatasearch(query)

Полнотекстовый поиск по объектам метаданных

get_object_details(full_name)

Реквизиты, табличные части, измерения регистра

Семантические (ChromaDB — векторный поиск)

Инструмент

Что делает

codesearch(query)

Поиск кода по описанию на естественном языке

helpsearch(query)

Поиск по проиндексированной справке

search_code_filtered(query, object_type)

Векторный поиск с фильтром (например, только Документы)

Утилиты

Инструмент

Что делает

reindex(force_chromadb)

Перестроить индексы после изменений конфигурации

stats()

Статистика индекса: количество объектов, функций и др.


Настройка

Все параметры задаются через переменные окружения в .env.

Провайдеры эмбеддингов

Сервер использует три отдельных провайдера — можно комбинировать:

Переменная

Используется для

По умолчанию

INDEXING_PROVIDER

Первоначальное заполнение ChromaDB (один раз)

openrouter

SEARCH_PROVIDER

Каждый поисковый запрос

openrouter

REINDEX_PROVIDER

Переиндексация после изменений кода

openrouter

Поддерживаемые значения: openrouter, openai, ollama, cohere, jina

Гибридная схема (рекомендуется если есть Ollama)

Если у вас запущен Ollama локально — поиск и переиндексация становятся бесплатными, облако используется только для первоначальной индексации:

INDEXING_PROVIDER=openrouter # облако, быстро, параллельно — один раз SEARCH_PROVIDER=ollama # бесплатный локальный инференс для каждого запроса REINDEX_PROVIDER=ollama # бесплатный локальный инференс для переиндексации OLLAMA_BASE_URL=http://host.docker.internal:11434 OLLAMA_MODEL=qwen3-embedding:8b # лучшая модель для русского/BSL

qwen3-embedding:8b требует ~5 ГБ RAM. Скачать: ollama pull qwen3-embedding:8b

Модель OpenRouter

По умолчанию используется qwen/qwen3-embedding-8b — оптимизирована для русского языка и кириллического кода. Переопределить:

EMBEDDING_MODEL=openai/text-embedding-3-small

Параметры индексации

AUTO_INDEX=true # пересобирать SQLite при каждом старте CHROMADB_AUTO_INDEX=true # векторизовать при первом запуске; после — false EMBEDDING_CONCURRENCY=5 # параллельные запросы к API (5 — безопасно, 10 — быстрее) EMBEDDING_BATCH_SIZE=10 # текстов в одном запросе к API

После первого запуска установите CHROMADB_AUTO_INDEX=false — векторный индекс сохраняется в папке chroma_db/ рядом с docker-compose.yml (или по пути CHROMA_PATH если задан в .env). При повторном запуске индекс загружается из этой папки — повторная векторизация не нужна.


Обновление индекса после изменений конфигурации

После повторной выгрузки конфигурации из 1С:

curl -X POST http://localhost:8000/reindex

Или через MCP-инструмент: reindex(force_chromadb=True) для обновления векторов.


Структура директории с исходниками

Сервер ожидает выгрузку конфигурации по пути SOURCE_PATH. Ищет подпапку cf/:

SOURCE_PATH/ └── cf/ ├── Catalogs/ │ ├── Контрагенты.xml │ └── Контрагенты/Ext/ObjectModule.bsl ├── Documents/ ├── CommonModules/ └── ...

Это стандартный результат Конфигуратор → Выгрузить конфигурацию в файлы.


Health check

curl http://localhost:8000/health
{ "status": "ok", "sqlite": {"objects": 345, "functions": 1240}, "chromadb": {"indexed": 1240, "status": "ready"} }

Лицензия

MIT

-
security - not tested
-
license - not tested
-
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/Arman-Kudaibergenov/bsl-atlas'

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