confdb

confdb

MCP server that provides read-only access to 1C:Enterprise configuration metadata extracted into SQLite, enabling LLMs to inspect objects, modules, and validate 1C queries.

Category
Visit Server

README

1c-conf-db-extractor (confdb)

Экстрактор конфигурации 1С:Предприятие 8 в базу данных SQLite.

Назначение: распаковать бинарный файл конфигурации (.cf, .cfe, .epf) без технологической платформы 1С и разложить его содержимое в реляционную базу, пригодную для генерации кода 1С (LLM/RAG и скрипты).

Алгоритм распаковки портирован из проекта v8unpack (MIT, см. NOTICE.md) — только в одну сторону: распаковка и разбор, без обратной сборки.

Использование

:: установка в venv (один раз)
.venv\Scripts\python.exe -m pip install -e .

:: распаковка cf в базу данных (+ дерево распакованных файлов для отладки)
confdb extract file.cf --db out.db --dump _out\file

:: то же через confdb.bat
confdb.bat extract 1C8.cf --db _out\1c8.db

:: текстовый консольный интерфейс (все опции + просмотр базы запросами)
confdb-ui.bat

:: проверка корректности запросов СКД в готовой базе (пункт 11 в confdb-ui)
confdb check out.db

Проверка запросов СКД

confdb check <база> (и пункт 11 консольного интерфейса) прогоняет все запросы таблицы skd_query через встроенный разборщик языка запросов 1С (src/confdb/query_lang.py):

  • синтаксис: ПОМЕСТИТЬ/УНИЧТОЖИТЬ, ОБЪЕДИНИТЬ [ВСЕ], соединения (включая вложенные и перечислением), вложенные запросы, ВЫБОР/ВЫРАЗИТЬ, виртуальные таблицы с аргументами, параметры &…, необязательные области СКД {…}, ДЛЯ ИЗМЕНЕНИЯ;
  • семантика по метаданным: существование таблиц (Справочник.Х, РегистрНакопления.Х.Обороты и т.п.), существование полей первого уровня (meta_attribute + стандартные поля + общие реквизиты, без учёта регистра), цепочки разыменования ссылок через attribute_ref (второй и далее уровни — мягко: составные/абстрактные типы не всегда раскрываются).

Код возврата 1 и список сообщений — если какой-то запрос не прошёл.

1confdb-knw — MCP-сервер для внешних LLM

:: сервер знаний по конфигурации 1С и BSL; stdio (JSON-RPC, read-only)
1confdb-knw.bat out.db
:: то же через CLI: confdb 1confdb-knw out.db

12 инструментов: find_objects, object_card (паспорт объекта: реквизиты, табличные части, модули, ссылки), object_tree, find_field, refs_of, module_outline, get_method, find_methods, skd_of, find_skd, check_query (валидатор запроса 1С), sql (только SELECT). Инструкции протокола (initialize.instructions) и описания инструментов содержат справочник по схеме базы, глоссарий 1С и рекомендуемый рабочий процесс — любая модель пользуется сервером без контекста этого проекта.

Пример конфигурации MCP-клиента, в т.ч. через SSH:

{
  "mcpServers": {
    "1confdb-knw": {
      "command": "ssh",
      "args": ["user@host", "python", "-m", "confdb.mcp_server", "/path/out.db"]
    }
  }
}

Опции extract:

  • --db FILE — записать результат в SQLite;
  • --dump DIR — сохранить распакованное дерево файлов (нужен хотя бы один из --db/--dump);
  • --temp-dir DIR, --keep-temp — рабочий каталог стадий 0–1 и его сохранение;
  • --prefix STR — снять префикс с имён объектов;
  • --store-blobs — хранить бинарные файлы (картинки, макеты) в БД как BLOB;
  • --workers N — число процессов стадии 3 (по умолчанию 1; на многоядерной машине 8 процессов ускоряют разбор в несколько раз). В консольном интерфейсе — пункт меню 10. При вызове extract() из собственного скрипта на Windows с workers > 1 вызов должен быть обёрнут в if __name__ == '__main__': (требование multiprocessing spawn).

Стадии конвейера (повторяют v8unpack, только распаковка):

  1. чтение внешних V8-контейнеров (32/64-бит) в файлы как есть;
  2. inflate (raw deflate) + рекурсивные вложенные контейнеры;
  3. декодирование метаданных: скобкофайлы {} → JSON, тексты модулей → .bsl.

Схема базы данных

  • source — исходный файл: путь, дата, тип/имя/uuid корневого объекта;
  • meta_object — объект метаданных: path (например Catalog/Номенклатура/CatalogForm/ФормаЭлемента), type (Catalog, Document, CommonModule, …), type_ru (русское имя «как в конфигураторе»: Справочник, Документ, Общий модуль, …), name, uuid, comment, obj_version, header_json (полный разобранный заголовок), parent_id + ord (иерархия и порядок братьев — как в дереве конфигуратора);
  • meta_attribute — реквизиты объекта: ord, name, type_str в порядке объявления. Примитивы — Строка(50)/Число/Дата/Булево; ссылки — Ссылка: <путь> (таблица ссылочных uuid из потока .10 корневого объекта, коллизии имён дизамбигуируются по типу объекта); определяемые типы — ОпределяемыйТип: <путь> (<состав>) (состав раскрывается); составные типы — члены через |; абстрактные («ЛюбаяСсылка» и т.п.) — Ссылка;
  • attribute_ref — связи реквизитов с объектами метаданных: uuid (ссылочный uuid из дескриптора типа, для составных/определяемых типов — по строке на член) и object_id — объект, на который ведёт ссылка (NULL для абстрактных типов); зависимость «реквизит ↔ объекты» строится join'ом без разбора строк type_str;
  • enum_value — значения перечислений (ord, name) в порядке объявления;
  • predefined — предопределённые элементы (ord, name, code, display) из «Предустановленные данные.bin»;
  • common_target — привязка общих реквизитов к объектам метаданных;
  • meta_tabular — табличные части объекта (ord, name) в порядке объявления; поля табличных частей лежат в meta_attribute с заполненной колонкой tabular (имя секции) — цепочки вида Т.Запасы.Номенклатура в запросах проверяются по этим данным.
  • module — паспорт модуля: code_name (obj, mgr, mod, con, app …) и для общих модулей context (Сервер/Клиент/Вызов сервера/…), плюс body — текст модуля как есть без кода методов: комментарии, препроцессор #Если…, #Область…, директивы и сигнатуры вида Процедура Имя(п1, п2) Экспорт сохранены; подстановка method.body вместо каждой сигнатуры восстанавливает исходный модуль;
  • method — только процедуры/функции: вид, имя, сигнатура, is_export, directives (строка &НаКлиенте, &НаСервере без скобок), description (блок комментариев непосредственно над методом, как есть с //), line_start/line_end, body — строго с Процедура/Функция по КонецПроцедуры/КонецФункции; #… и комментарии вне тела в метод не попадают;
  • subsystem_content — состав подсистем (ссылки на объекты в порядке объявления) — для обхода дерева подсистем, как в конфигураторе;
  • skd_query — запросы, извлечённые из макетов СКД объекта (ord, query), — для проверки корректности запросов 1С;
  • file — прочие файлы дампа (help.html, инфо-JSON, картинки): путь, тип, размер, содержимое для текстовых (BLOB — только при --store-blobs).

Пример запроса:

-- реквизиты справочника с типами
SELECT a.name, a.type_str
FROM meta_attribute a JOIN meta_object o ON o.id = a.object_id
WHERE o.path = 'Catalog/Номенклатура' ORDER BY a.ord;

-- краткое представление модуля (текст без кода методов)
SELECT m.body FROM module m JOIN meta_object o ON o.id = m.object_id
WHERE o.path = 'Catalog/Номенклатура' AND m.code_name = 'obj';

-- тело конкретного метода
SELECT mt.body FROM method mt JOIN module m ON m.id = mt.module_id
JOIN meta_object o ON o.id = m.object_id
WHERE o.path = 'Catalog/Номенклатура' AND m.code_name = 'obj'
  AND mt.name = 'ПриСозданииНаСервере';

Состав

  • src/confdb/v8 — ядро распаковки (контейнеры 1С, inflate, скобкофайлы, метаданные);
  • src/confdb/db — схема SQLite и запись результата;
  • src/confdb/extract.py — конвейер стадий;
  • src/confdb/query_lang.py — разбор и семантический контроль языка запросов 1С (подкоманда confdb check);
  • tests — тесты на малых фикстурах (test.bat).

Требования

  • Python 3.9+, только стандартная библиотека.

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