BSL Atlas

BSL Atlas

An MCP server for 1C:Enterprise that provides AI assistants with access to configuration data via vector search, structural indexing, and call graphs. It enables semantic code queries and rapid metadata object lookups without requiring the direct reading of raw files.

Category
Visit Server

README

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured