confdb
Provides access to 1C configuration knowledge stored in SQLite databases, enabling agents to query metadata objects, modules, attributes, SCD queries, references, and execute read-only SQL SELECT statements across one or multiple opened databases.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@confdbПроверь запрос: ВЫБРАТЬ * ИЗ Справочник.Номенклатура"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 file.cf --db out.db
:: текстовый консольный интерфейс (меню с обновлением экрана:
:: извлечение, запросы, проверка СКД, запуск MCP-сервера
:: с одной базой/несколькими/именованной группой, опции)
confdb-ui.bat
:: проверка корректности запросов СКД в готовой базе (пункт 5 в confdb-ui)
confdb check out.db
:: бенчмарк: подбор числа процессов под железо
:: (в confdb-ui — внутри пункта 3 «Опции извлечения»)
confdb bench file.cfПо умолчанию любая ошибка декодирования объекта прерывает извлечение.
Флаг --skip-errors (в консольном интерфейсе — опция 6 «Пропускать
ошибки объектов») пропускает сбойные объекты и продолжает разбор:
каждый пропуск печатается с внутренней причиной, в конце — итоговое
число. Дамп и база при этом неполные (пропущенные объекты и их
подобъекты отсутствуют) — режим для больших конфигураций, где единичный
сбойный объект не должен блокировать всю выгрузку.
Related MCP server: 1C MCP Server
Проверка запросов СКД
confdb check <база> (и пункт 5 консольного интерфейса) прогоняет все запросы
таблицы 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
:: несколько баз сразу: основная конфигурация + расширения/обработки
1confdb-knw.bat main.db extension.db processor.dbПуть к базе можно не указывать: 1confdb-knw.bat без аргумента берёт
last_db из ~/.confdb/config.json, а при его отсутствии сам ищет
*.db/*.sqlite — в текущем каталоге, db/ и _out/ (и в корне
установки при запуске из venv). Одна база — запускается; несколько —
сервер печатает список и просит указать путь явно. Несуществующий путь —
сразу «Файл базы не найден» (код 2), без падения на первом запросе.
Свежая установка с базой, привезённой с другого компьютера, работает
без ручной правки конфига: достаточно положить файл в db/ рядом
с 1confdb-knw.bat.
16 инструментов: 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) и управление
базами db_list / db_open / db_use / db_close. Инструкции
протокола (initialize.instructions) и описания инструментов содержат
справочник по схеме базы, глоссарий 1С и рекомендуемый рабочий процесс —
любая модель пользуется сервером без контекста этого проекта.
Несколько баз одновременно (расширения и обработки)
Сервер держит несколько баз сразу: перечислите их при запуске либо
открывайте на ходу инструментом db_open (без перезапуска сервера).
Каждая база получает алиас (по умолчанию — имя файла без расширения;
при совпадении — с суффиксом _2, _3…). Все инструменты по умолчанию
работают с активной базой (при запуске — первая указанная); чтобы
запросить другую базу без переключения, передайте её алиас параметром
db (есть у всех инструментов). Переключение активной базы — db_use,
список открытых баз со статистикой — db_list, закрытие — db_close.
Типовой сценарий: извлечь основную конфигурацию, расширение и обработку в отдельные базы и запустить сервер со всеми тремя —
confdb extract main.cf --db main.db
confdb extract ext.cfe --db ext.db
confdb extract proc.epf --db proc.db
1confdb-knw.bat main.db ext.db proc.db— после чего LLM видит метаданные и код всех трёх и может, например,
искать методы расширения (find_methods с db='ext') поверх основной
конфигурации. Специальное значение db='*' выполняет инструмент сразу
по всем открытым базам (ответ приходит секциями по базам) — один вызов,
чтобы сравнить основную конфигурацию с расширениями. Если база
пересобрана (повторный extract), её достаточно закрыть и открыть
заново: db_close + db_open.
В консольном интерфейсе наборы баз можно сохранить в именованные группы (пункт 6): одна база может входить в несколько групп; пункт 1 запускает сервер с группой или с выбранными вручную базами (одной или несколькими), а в сетевом режиме панель после запуска позволяет подключать/закрывать базы и применять группу (перезагружать набор) без перезапуска сервера.
Пример конфигурации MCP-клиента, в т.ч. через SSH:
{
"mcpServers": {
"1confdb-knw": {
"command": "ssh",
"args": ["user@host", "python", "-m", "confdb.mcp_server", "/path/out.db"]
}
}
}Сетевой режим (когда stdio не подходит)
Сервер слушает порт и отдаёт MCP по HTTP (Streamable HTTP: POST /mcp;
legacy SSE для старых клиентов: GET /sse + POST /messages):
1confdb-knw.bat out.db --port 8765С другой машины подключение — через SSH-туннель:
ssh -L 8765:127.0.0.1:8765 user@host{
"mcpServers": {
"1confdb-knw": { "url": "http://127.0.0.1:8765/mcp" }
}
}По умолчанию слушает 127.0.0.1 (без аутентификации, база read-only);
--host 0.0.0.0 открывает порт наружу — используйте только в доверенной сети.
В консольном интерфейсе — пункт 1 → «Сеть (HTTP-порт)».
Опции extract:
--db FILE— записать результат в SQLite;--dump DIR— сохранить распакованное дерево файлов (нужен хотя бы один из--db/--dump);--temp-dir DIR,--keep-temp— рабочий каталог стадий 0–1 и его сохранение;--prefix STR— снять префикс с имён объектов;--store-blobs— хранить бинарные файлы (картинки, макеты) в БД как BLOB;--workers N— число процессов стадии 3 и записи БД (по умолчанию — результатconfdb benchили 1; на многоядерной машине несколько процессов ускоряют разбор в несколько раз). В консольном интерфейсе — меню «Опции извлечения». При вызовеextract()из собственного скрипта на Windows сworkers > 1вызов должен быть обёрнут вif __name__ == '__main__':(требование multiprocessing spawn).
Бенчмарк и автонастройка
confdb bench <file> один раз прогоняет стадии 0/1, затем нелинейный сэмпл
объектов верхнего уровня (шаг по всему списку + покрытие всех типов объектов,
чтобы задеть и лёгкие справочники, и тяжёлые формы/отчёты) через стадию 3 и
запись БД при 1/2/4/8/CPU процессах. Лучшее число процессов сохраняется в
~/.confdb/config.json и подставляется по умолчанию в extract и в консольный
интерфейс; --workers N переопределяет вручную.
Стадии конвейера (повторяют 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 = 'Document/Заказ' 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+, только стандартная библиотека.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Token-free MCP server for structured RevoGrid Core, Pro, and Enterprise knowledge retrieval.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn 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.77AGPL 3.0
- FlicenseNot gradedqualityDmaintenanceActs as a bridge between AI agents (Claude, Cursor) and 1C:Enterprise databases, enabling metadata retrieval, configuration analysis, and code generation through natural language using the MCP protocol.-
- FlicenseNot gradedqualityAmaintenanceMCP server that validates AI-generated 1C:Enterprise (BSL) code against the real platform API. Catches unknown enum values, wrong argument counts, and missing type members by parsing the platform syntax-helper (shcntx_ru.hbk) — independent Rust implementation with built-in expression validator.21-
- FlicenseNot gradedqualityBmaintenanceMCP server for searching and analyzing 1C enterprise metadata and BSL code using a SQLite backend. Enables querying configuration structure, code routines, and performing compliance checks via natural language.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Zom31C/1confdb-knw'
If you have feedback or need assistance with the MCP directory API, please join our Discord server