Skip to main content
Glama

MCP:1C-DevTools — сервер для разработки 1С

78 инструментов для разработки в 1С:Предприятие — статический анализ, аудит кода, проверка запросов, верификация EPF, пакетная работа с конфигурацией и ibcmd.

Работает с локальными XML-выгрузками конфигурации 1С — не требует запущенной базы 1С.

Быстрый старт

Docker

# Клонируем и готовим данные
mkdir -p config-dump
# Копируем XML-выгрузку 1С в config-dump/

# Собираем и запускаем
docker build -t onec-devtools .
docker run --rm -it \
  -v $(pwd)/config-dump:/data/config:ro \
  -v $(pwd)/src/cf:/data/src:ro \
  onec-devtools

# Или через docker-compose
docker-compose up --build

Локально

pip install -r requirements.txt
python -m mcp_devtools --config-path ./config-dump

Related MCP server: onec-meta-mcp

Доступные инструменты (78)

А: Метаданные (10)

Инструмент

Описание

meta.tree

Дерево метаданных по типам

meta.structure

Полная структура объекта

meta.search

Поиск по имени/описанию

meta.dependencies

Граф зависимостей

meta.find_orphans

Объекты вне подсистем

meta.compare

Сравнение двух версий метаданных

meta.find_undefined_refs

Ссылки на несуществующие объекты

meta.subsystem_map

Карта подсистем → объекты

meta.field_usage

Где используется реквизит

meta.cross_ref

Перекрёстные ссылки: формы, модули, запросы

Б: Аудит (15)

Инструмент

Описание

audit.e1_e9

Аудит BSL-кода: очереди, транзакции, флаги загрузки, логика KPI

audit.query_antipatterns

15 антипаттернов запросов

audit.code_antipatterns

Антипаттерны BSL-кода

audit.security

Хардкод секретов

audit.deprecated_api

Устаревшие методы платформы

audit.pi_data

Шаблоны персональных данных

audit.rls_roles

Анализ ролей и RLS-прав

audit.duplicate_code

Дублирующийся код

audit.dead_code

Невостребованные функции

audit.module_complexity

Цикломатическая сложность

audit.tms_integration

Аудит внешних интеграций: транспорт, идемпотентность

audit.exchange_safety

Безопасность планов обмена

audit.version_check

Совместимость с версией платформы

audit.rnd_flag

Проверка флага загрузки в обработчиках записи

audit.transaction_boundary

Согласованность границ транзакций

В: Запросы (8)

Инструмент

Описание

query.validate

Синтаксическая и семантическая валидация

query.optimize

Подсказки по оптимизации

query.explain

Извлечение логического плана

query.find_sinks

Медленные паттерны запросов

query.generate

Генерация по описанию

query.check_fields

Проверка полей по метаданным

query.check_dimensions

Проверка измерителей регистров

query.convert_to_async

Конвертация синхронных в асинхронные

Г: EPF-артефакты (8)

Инструмент

Описание

epf.validate

Проверка бинарного заголовка

epf.roundtrip_check

Сборка → выгрузка → diff

epf.generate

Генерация из шаблона

epf.extract_info

Извлечение метаданных из EPF

epf.check_modules

Проверка полноты модулей

epf.compare

Сравнение двух EPF

epf.validate_rules

Проверка по общим правилам BSL-аудита

epf.list_commands

Список команд внешн. обработки

Д: Формы и СКД (8)

Инструмент

Описание

form.structure

Анализ структуры формы

form.find_orphans

Формы без привязанных объектов

form.command_audit

Аудит команд

skd.structure

Структура компоновщика данных

skd.check_fields

Проверка полей СКД

skd.compare

Сравнение макетов СКД

mxl.audit

Аудит макетов MXL

form.to_async

Конвертация модальных вызовов

Е: Интеграции (6)

Инструмент

Описание

exchange.analyze

Анализ планов обмена

xdto.validate

Валидация XDTO-пакетов

kshd.contract_check

Проверка контракта КШД

integration.retry_policy

Аудит retry-политики

integration.cascade_check

Аудит каскадов отмены

integration.loop_prevention

Профилактика петель данных

Ё: Тесты и качество (6)

Инструмент

Описание

test.generate

Шаблоны тестов (YAxUnit/Vanessa)

test.coverage

Анализ покрытия тестами

quality.metrics

Метрики качества кода

quality.bulk_analyze

Полная проверка (антипаттерны + дубли + мёртвый код)

quality.gate

CI/CD quality gate

quality.trend

Тренды метрик по версиям

Ж: DevTools-ассистенты (8)

Инструмент

Описание

bsl.syntax.help

Справка по функциям платформы + вердикт exists/absent/unknown (verified_api.json)

bsl.generate_query

Генератор запросов

bsl.generate_print_form

Шаблон печатной формы

bsl.generate_report

Шаблон отчёта СКД

bsl.convert_modal_async

Модальные → асинхронные вызовы

bsl.find_synonyms

Синонимы функций (СтрНайти ↔ StrFind)

bsl.version_check

Доступность метода в версии платформы

config.template_apply

Шаблоны конфигурации

З: Конфигурация (5)

Инструмент

Описание

config.diff

Сравнение двух сборок XML

config.validate_build

Проверка готовности к сборке

config.added_objects

Добавленные/удалённые объекты

config.checklist

Чеклист перед коммитом

config.generate_report

Полный отчёт о конфигурации

Конфигурация

Задаётся через переменные окружения или аргументы CLI:

Переменная

Описание

По умолчанию

ONEC_DEVTOOLS_CONFIG_PATH

Путь к XML-выгрузке 1С

требуется для инструментов метаданных

ONEC_DEVTOOLS_LOG_LEVEL

Уровень логирования

INFO

ONEC_DEVTOOLS_TEST_BASE

Тестовая 1С-база для round-trip

опционально

ONEC_DEVTOOLS_1C_PATH

Путь к 1cv8.exe

опционально

ONEC_DEVTOOLS_SYNTAX_HELP_PATH

Внешний JSON верифицированного справочника имён API

встроенный mcp_devtools/verified_api.json

Верифицированный справочник имён API (verified_api.json)

Инструменты bsl.syntax.help, bsl.find_synonyms, bsl.version_check отвечают по файлу mcp_devtools/verified_api.json: список имён, проверка которых выполнена исполнением на живой платформе 8.3 (EPF-оракул с Вычислить()/Оценить() через COM), а не по памяти автора сервера. Это защита от выдуманных методов вида ДатаГод, ЭтоЧисло, НайтиПоСсылке, TrimLeft, ToUpper — на все них платформа отвечает «не определена».

Три состояния ответа (важно, не путать):

Вердикт

Значит

Доказательство

exists

имя разрешено компилятором 8.3

OK / ошибка аргументов / ошибка типа / «Обращение к процедуре как к функции» / «Ожидается выражение

absent

имени в API нет

явное «Процедура или функция с указанным именем не определена» / «Метод объекта не обнаружен»

unknown

имя не проверялось

нет записи в реестре — не приравнивать к absent

Ключевая деталь классификации: для встроенных функций с фиксированной арностью «Ожидается выражение» / «Ожидается символ ')'» означает, что компилятор уже узнал имя (то есть exists) — заведомо ложное имя даёт «не определена» (контроль проверялся).

Реестр ограничен перечнем проверенных имён (83 глобальные функции, 10 методов менеджера Справочники, 18 подтверждённых пар синонимов ru/en, 49 опровергнутых имён). Пополняется прогоном оракула на тестовой ИБ; неизвестное имя проверяется ИТС/оракулом, а не выдумывается.

Про BSL LS (1c-syntax/bsl-language-server): проверка на живой сборке 1.0.7 показала, что диагностика UnknownMember (поиск несуществующих методов платформы) выключена по умолчанию и эвристическая — для автономных .bsl без индекса метаданных (mdoRef) она не находит ничего из наживки (Справочники...НайтиПоСсылке, РегБ, ЭтоЧисло). Поэтому BSL LS — статический анализ кода (кодомер, smells), но НЕ источник истины по существованию API-имён; для имён — этот реестр/ИТС.

Архитектура

┌──────────────┐     ┌──────────────────┐     ┌──────────────┐
│  MCP-клиент  │────▶│  MCP-сервер      │────▶│  1С Config   │
│  (Kilo и др) │◀────│  (Python)        │◀────│  (локальный) │
└──────────────┘     └──────────────────┘     └──────────────┘

Работает исключительно с локальными XML-файлами — для статического анализа запущенная база 1С не нужна.

Лицензия

MIT

Пакетная автоматизация 1С

Проект содержит проверяемый workflow для Windows:

python scripts/onec-batch.py designer-capabilities
python scripts/onec-batch.py ibcmd-capabilities
python scripts/onec-batch.py ibcmd-help --ibcmd "C:\\Program Files\\1cv8\\8.3.21.1393\\bin\\ibcmd.exe"
python scripts/onec-batch.py apply-and-build-cf \
  --onec "C:\\Program Files\\1cv8\\8.3.21.1393\\bin\\1cv8.exe" \
  --infobase "C:\\Bases\\Test" \
  --source "C:\\src\\cf" \
  --output "C:\\artifacts\\build.cf"

Что автоматизировано

  • каталог пакетных операций 1cv8.exe DESIGNER;

  • каталог и discovery фактических команд ibcmd через ibcmd help;

  • backup CF перед изменяющими операциями;

  • загрузка XML через /LoadConfigFromFiles;

  • применение через /UpdateDBCfg;

  • выгрузка итогового CF через /DumpCfg;

  • сбор exit code, /Out-лога, размера и SHA-256;

  • fail-fast и возможность rollback из backup CF;

  • передача аргументов без shell=True, что сохраняет пробелы и кириллические пути.

Подробная матрица команд находится в skills/onec-batch-operations/SKILL.md.

Подключение к MCP-клиенту

Локальный stdio-запуск из корня репозитория:

{
  "mcpServers": {
    "onec-devtools": {
      "command": "python",
      "args": ["-m", "mcp_devtools", "--config-path", "C:/path/to/config-dump"],
      "cwd": "C:/path/to/onec-devtools"
    }
  }
}

Каталог config-dump должен содержать XML-выгрузку конфигурации. Путь к 1cv8.exe, тестовой ИБ и другим ресурсам передаётся через переменные окружения или аргументы; значения в документации намеренно обезличены.

Для пакетных операций MCP-клиент вызывает designer.capabilities или ibcmd.capabilities, затем — соответствующую операцию. Изменяющие операции требуют явного confirmed=true; credentials не записываются в логи.

Публичный MCP-клиент должен использовать list_tools, а не полагаться на README: сервер обязан объявлять доступные инструменты через MCP discovery.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP 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.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables searching through 1C:Enterprise configuration source code (XML+BSL) with full-text indexing, providing tools to find code, metadata objects, procedures, and modules.
    MIT