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.
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, только распаковка):
- чтение внешних V8-контейнеров (32/64-бит) в файлы как есть;
- inflate (raw deflate) + рекурсивные вложенные контейнеры;
- декодирование метаданных: скобкофайлы
{}→ 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+, только стандартная библиотека.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。