MCP server for reading and analyzing 1С (1C) BSL code as HTTP/SSE service with metadata operations
This MCP server exposes 17 tools for 1С (Russian enterprise platform) metadata manipulation. While tool names follow verb-noun patterns and input schemas are present with type definitions, there are critical gaps in quality: (1) All descriptions are in Russian, making them inaccessible to English-speaking LLMs and agents. (2) Descriptions are extremely terse (10-40 chars) and lack context about when/why to use each tool. (3) Parameter descriptions, while present, are similarly brief and often domain-specific without explanation. (4) No output schemas are documented anywhere in the visible source. (5) No error handling guidance. (6) Tools manipulate files on disk with WRITE risk, but no confirmation patterns or dry-run modes are visible. (7) The codebase provided is incomplete (detect_tools.py script is cut off mid-function). The server appears functional for domain experts working in Russian 1С ecosystems, but fails to meet production-grade agent tool standards for discoverability, safety, and internationalization.
реквизиты объектов метаданных - добавить реквизит
гейт производительности BSL (запрос-в-цикле) для дерева - зафиксировать текущие находки как легаси
гейт производительности BSL (запрос-в-цикле) для дерева - проверить, exit 1 если есть находки сверх baseline
дочерние элементы: Dimension/Resource/Attribute/EnumValue - добавить элемент
определить формат дерева исходников
задать/сменить тип реквизита/измерения/ресурса или самого объекта
правка управляемых форм - добавить реквизит формы
правка управляемых форм - добавить элемент формы
All tool and parameter descriptions are in Russian, making the server inaccessible to English-speaking LLMs and agent frameworks. English descriptions are required for cross-language interoperability.
No output schemas documented for any tool. LLMs cannot predict response structure, forcing them to guess what fields are returned. This breaks tool chaining and multi-step planning.
Multiple WRITE operations (template.add-column, scd.add-field, attr.add, child.add, role.grant, set-property, edit-type, form.add-attribute, form.add-field) lack confirmation patterns, dry-run modes, or undo capabilities. Agents can accidentally corrupt 1С metadata.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
права роли (Rights.xml) - дать право
операции со схемой компоновки данных - добавить поле
операции со схемой компоновки данных - получить запрос
операции со схемой компоновки данных - установить запрос
smoke-проверка целостности схемы СКД (exit 1 если поломка)
изменить существующее скалярное свойство объекта/реквизита
сменить синоним (Наименование) существующего языка — безопасная презентация
состав подсистемы (командный интерфейс) - добавить контент
операции с макетами печатных форм - добавить колонку
Parameter descriptions are terse (10 - 20 chars) and assume deep domain knowledge of 1С metadata model. LLMs cannot infer parameter semantics. Descriptions should explain format, constraints, and use cases in plain English.
Open-ended parameters like 'type_ref', 'name', 'right' lack enums or format constraints. LLMs will hallucinate invalid values. Provide enums for constrained inputs or regex patterns for formats.
No error handling guidance. Tools that validate or check status (scd.validate, bsl-gate.check) return exit codes (exit 1 on error) but MCP response format is undefined. LLMs cannot interpret failure states.
Naming inconsistency: some tools use dot notation (template.add-column, scd.add-field, child.add, role.grant, form.add-field) and others use hyphens (set-synonym, set-property, edit-type). Standard verb_noun (add_column, set_synonym) is clearer and more searchable.
Parameter relationships and conditional logic are undocumented. For example, 'child.add' has a 'kind' enum that determines which other params are required, but this dependency is not stated. LLMs will pass incomplete params.
File path parameters (file, from_file) assume local filesystem access and no validation. If the MCP server is remote or containerized, path semantics are unclear. Should these accept URIs or resource identifiers instead?