MCP server for parsing 1C exchange rules (Conversion Data 2.0). Provides tools to analyze registration rules, export rules, conversion rules, and trace document flow through exchange processes. Connects to Open WebUI as an external tool server.
Server has 6 tools with Russian descriptions and basic schemas. All tools have descriptions (10-200+ chars) and input parameters with types. However, naming conventions are inconsistent (mix of snake_case and underscores), parameter descriptions are minimal or absent in several tools, output schemas are not documented, and error handling lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint). The 'refresh' tool accepts a password parameter, a security anti-pattern. Overall structure is present but falls short of production quality.
Что вообще есть в правилах обмена: направления, документы, процессы. Без параметра — список направлений обмена. С направлением («УПП → ЕРП», «из розницы в ерп», «УПП_ERP») — документы этого направления и функциональные блоки (процессы), которыми помечены ветки выгрузки. Отсюда стоит начинать, если неизвестно точное имя документа.
Поиск правил по тексту: в коде обработчиков, в названиях, в комментариях. Ищет по всем направлениям сразу. Результаты сортируются по релевантности: сначала совпадения в названиях и кодах, потом в текстах обработчиков. Если совпадений много — показывает первые 50.
Состав реквизитов правила конвертации: что переносится из источника в приёмник, какие алгоритмы вызываются, какие подчинённые правила. Показывает реквизиты (свойства) источника и приёмника, условия переноса, обработчики, вложенные правила конвертации (каскады). Если реквизит переносится подчинённым правилом — показывает его код и имя. Если реквизит заполняется алгоритмом — показывает имя алгоритма и строку вызова в ветке выгрузки, где алгоритм запускается.
Текст обработчика правила: ПередВыгрузкой, ПриВыгрузке, ПослеВыгрузки и т. д. Показывает текст обработчика с номерами строк. Если в обработчике есть запросы — показывает их тоже, с разбором параметров и временных таблиц. Если запрос вызывает ВыгрузитьПоПравилу — показывает, какие правила конвертации вызываются и на каких строках.
Password exposed as tool parameter in 'refresh' tool. Credentials must use server-side secret injection via environment variables, not tool parameters. Agent traces log all parameters, secrets leak into logs and prompt history.
Output schemas not documented for any tool. LLMs cannot plan downstream calls or extract required fields without knowing response structure. All 6 tools lack return type documentation.
Parameter descriptions are minimal or missing. 'direction' appears in 4 tools with identical 1-line descriptions; 'query' in find_rules lacks format/length guidance; 'handler' in get_rule_handler lacks enum of valid handler names (ПередВыгрузкой, ПриВыгрузке, etc.).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Обновить правила из репозитория и пересобрать индекс. Если настроен GITLAB_REPO — забирает свежие правила из GitLab, если коммит сменился. Пересобирает индекс. Если репозиторий не настроен — просто пересобирает индекс из того, что на диске. Требует пароль, если настроен REFRESH_PASSWORD.
Что происходит с документом при обмене — от регистрации до приёмника. Главный инструмент. Показывает: при каких условиях документ регистрируется к выгрузке, какие правила конвертации вызываются, какие документы возникают у приёмника, и какие ещё документы создаются каскадами через свойства (их не видно в самих ветках выгрузки). У каждого вызываемого правила — где стоит вызов: обработчик и строка, по ним читайте get_rule_handler. Для вызовов через общие алгоритмы — строка в ветке, где зовётся алгоритм, и строка в алгоритме, где вызывается правило. У ветки — откуда метки процессов: свои или пришли от вызываемых правил. Пришедшая метка не доказывает, что такая выгрузка действует.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). 5 tools are read-only but lack readOnlyHint; 'refresh' is destructive but lacks destructiveHint. Agents cannot distinguish safe from risky operations.
Error handling lacks recovery guidance. No tool documents what errors are possible, whether they are retryable, or what the LLM should do next. E.g., 'индекс ещё не построен' error in index() provides no recovery path.