<< All versions

Skill v1.0.3

currentAutomated scan100/100
yellow-hammer/vscode-1c-platform-tools/1c-platform-tools-mcp

Merge pull request #419 from yellow-hammer/dependabot/npm_and_yarn/dev-dependencies-090b1c5060

──Details
PublishedSeptember 12, 2026 at 09:11 AM
Content Hashsha256:c90519b942db6b24...
Git SHA8dbd1e5c93f8
Compare with v1.0.2
──Files
Files (1 file, 16.4 KB)
SKILL.md16.4 KBactive
SKILL.md · 146 lines · 16.4 KB

version: "1.0.3" name: 1c-platform-tools-mcp description: Инструменты MCP для команд 1C: Platform Tools (1C: Platform Tools MCP). Используй, когда нужно выполнить загрузку/выгрузку конфигурации, расширений, сборку EPF/ERF, запуск Конфигуратора/Предприятия, установку зависимостей — через MCP вместо палитры команд.


MCP: инструменты 1c-platform-tools

Если пользователь называет инструмент по имени (например «через run_designer», «вызови run_designer») — сразу вызови этот MCP-инструмент. Не заходи сначала в скилл и не обходи все JSON в папке MCP: открой дескриптор нужного инструмента и выполни вызов. Таблицы ниже — когда задача сформулирована без имени инструмента.

Если у тебя подключён сервер mcp-1c-platform-tools, используй его инструменты для операций с платформой 1С. Результат выполнения команды расширения придёт в ответе инструмента.

Проекты окна и параметр projectPath

Команды выполняются в текущем проекте окна VS Code. Проект это каталог с packagedef, в окне их может быть несколько: project_list покажет проекты, их вид (kind: designer и edt по формату исходного кода 1С, onec без исходного кода, onescript) и текущий, project_select с root сделает другой проект текущим, в том числе для пользователя, project_init создаст packagedef в каталоге из projectPath (папка рабочей области или каталог из candidates) и сделает его текущим. У остальных инструментов projectPath выполняет один вызов в указанном проекте и текущий не меняет; относительный путь считается от текущего проекта. Если пользователь проект не называл, projectPath не передавай.

Параметр wait

  • `wait: true` (по умолчанию) — синхронное выполнение; в ответе { success, exitCode, stdout, stderr, tests?, artifact? }. Прогоны тестов возвращают счётчики по отчёту.
  • `wait: false` — команда уходит в терминал VS Code, ответ без stdout/exitCode. Нужен, когда пользователь смотрит ход выполнения сам.

Возвращают результат синхронно: конфигурация (loadIncFromSrc — с параметром sha; кроме loadFromFiles), расширения (кроме loadFromFiles), ИБ (кроме loadFromDt), внешние EPF/ERF, тесты (кроме allure), epf_run, test_configure (с параметром frameworks), odata_query, odata_setup, сборка и разбор.

Исход не возвращают (ответ подтверждает только запуск): run_*, server_*, debug_*, launch_*, deps_*, syntaxCheck_refresh, syntaxCheck_clear, oscript_run, components_update, loadFromDt, objlist, allure, clearCache. У таких инструментов это написано в описании.

Состояние окружения: env_status

Read-only инструмент env_status возвращает JSON: активный профиль, файл настроек и признак его существования, схему (v2/v3), версию vanessa-runner, временные параметры (пароль замаскирован) и итоговую строку подключения, а в поле odata — адрес стандартного интерфейса OData запущенного автономного сервера либо причину, почему его нет. Вызывай его перед операциями, когда важно, в каком окружении они выполнятся.

Явно переданные settingsFile/ibConnection имеют приоритет над временными параметрами профиля; применение или отбрасывание временных параметров отражается строками [контекст] ... в stdout результата.

Прочие параметры MCP

Параметры объявлены у тех инструментов, к которым применимы: sha есть только у инкрементальной загрузки, frameworks — только у настройки тестов. Если параметра нет в схеме инструмента, он этой команде не нужен.

  • settingsFile — файл настроек vanessa-runner относительно projectPath; перекрывает активный профиль для конкретного вызова (например, tools/vrunner.init.json для init-сценариев).
  • ibConnection — явная строка подключения к ИБ, перекрывает значение файла настроек.

Каталогов исходного кода инструменты не принимают: конфигурацию, расширения, внешние обработки и отчёты расширение находит в проекте само, в выгрузке конфигуратора и в проектах 1С:EDT.

Дополнительные параметры операций

Те же значения можно передать объектом первым аргументом команды расширения (Execute Command), если MCP недоступен:

  • sha — инкрементальная загрузка cf_loadInc (пустая строка — полная загрузка);
  • extensions — явный список расширений для cfe_*;
  • profile — переключение профиля: env_selectProfile { profile: "test" };
  • frameworks — настройка тестов: test_configure { frameworks: ["vanessa"] };
  • execute, command — запуск EPF в Предприятии: epf_run { execute: "путь.epf", command: "строка /C" }.

Команды не открывают окон при агентном вызове: если данных не хватает, вернётся структурированная ошибка с подсказкой.

Неуспешный результат

Упавшие тесты, ошибки синтаксического контроля и ненулевой код возврата приходят с признаком ошибки: считать такой вызов выполненным нельзя. test_syntaxCheck возвращает список ошибок с путём к файлу модуля и текстом сообщения — правь по нему исходники, не разбирая stdout. Длинный вывод обрезается до хвоста, полный лог остаётся в панели расширения.

Как формируются имена инструментов

Имена генерируются из command ID расширения: убирается префикс 1c-platform-tools., точки заменяются на _, длинные слова сокращаются (dependencies → deps, Processors → Procs, loadIncrementFromSrc → loadIncFromSrc и др.). Полный список возвращается сервером при подключении.

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

ЗадачаИнструмент MCP
Загрузить из исходниковcf_load
Обновить конфигурацию БДinfobase_updateDb
Загрузить изменения (git diff)cf_loadInc
Загрузить из objlist.txtcf_loadByList
Загрузить из 1Cv8.cfcf_loadFile
Выгрузить в исходникиcf_dump
Выгрузить измененияcf_dumpInc
Выгрузить в 1Cv8.cfcf_unload
Собрать 1Cv8.cfcf_compile
Разобрать 1Cv8.cfcf_decompile

Расширения

ЗадачаИнструмент MCP
Загрузить из исходниковcfe_load
Загрузить из objlist.txtcfe_loadByList
Загрузить из *.cfecfe_loadFile
Выгрузить в исходникиcfe_dump
Выгрузить в *.cfecfe_unload
Собрать *.cfecfe_compile
Разобрать *.cfecfe_decompile

Тестовые расширения: test_loadExts, test_dumpExts, test_compileExts, test_decompileExts — параметр extensions работает так же.

Внешние обработки и отчёты

ЗадачаИнструмент MCP
Собрать обработкиepf_compileProc
Разобрать обработкиepf_decompileProc
Собрать отчётыepf_compileReport
Разобрать отчётыepf_decompileReport
Удалить кэшepf_clearCache

Данные базы через OData

Стандартный интерфейс OData читается и меняется инструментами расширения, без ручных HTTP-вызовов и отдельных секретов.

ЗадачаИнструмент MCP
Прочитать, создать, изменить, удалить данныеodata_query
Показать или изменить состав интерфейсаodata_setup

`odata_query` обращается к …/odata/standard.odata/:

  • адрес — публикация запущенного автономного сервера проекта (server_start с отмеченным пунктом «OData» в выборе публикуемых сервисов) либо своя публикация из параметра url (корень публикации, например http://srv/base);
  • resource — набор (Catalog_Номенклатура), элемент (Catalog_Номенклатура(guid'…')), свойство или $metadata;
  • method — GET по умолчанию; POST создаёт, PATCH меняет переданные поля, PUT заменяет элемент целиком (поля не из body сбрасываются — для правки не используй), DELETE удаляет: вызывай их только по явной просьбе пользователя, не «заодно» с чтением;
  • выборка — filter, select, expand, orderby, top, skip; тело записи — body: строка с JSON объекта ({"Description":"Стол"});
  • учётная запись — db-user и db-pwd активного профиля (или settingsFile), пароль в вызов не передаётся.

Своя публикация из url — обычно чужая или продуктивная база. К ней только GET, всегда с select и top; учётная запись — из профиля, который назвал пользователь (settingsFile). odata_setup работает с базой профиля, а не с публикацией из url: к чужой базе его не применяй.

Ответ содержит код HTTP и тело. Большая выборка урезается по записям с пометкой: сузь её top, select, filter. Ошибка объясняет причину: сервер не запущен или OData не опубликован, 401 по учётной записи профиля, объект не входит в состав интерфейса.

`odata_setup` работает с базой профиля: состав интерфейса хранится в информационной базе, а не в публикации.

  • без include и exclude возвращает текущий состав именами наборов OData (Catalog_Номенклатура): при запущенном сервере быстро, из $metadata, без него — запуском Предприятия;
  • include / exclude — точечно включают и исключают объекты, остальной состав не меняется; имена полные (Справочник.Номенклатура) или как набор OData (Catalog_Номенклатура);
  • available: true добавляет объекты проекта вне состава (из метаданных исходников); у большой конфигурации список может быть неполным — это сказано в ответе, имя для include можно задать и без списка.

Изменение состава выполняет служебная обработка в Предприятии: нужны административные права и отключённая у пользователя защита от опасных действий. Автономный сервер этой базы на время запуска останавливается и поднимается снова.

Информационные базы, зависимости, запуск и др.

Остальные команды расширения также доступны как инструменты MCP (имена формируются по тому же принципу). Полный список инструментов возвращается сервером при подключении.

Примеры

  • Вызови cf_load — загрузка конфигурации из исходников в текущем проекте.
  • Вызови cf_load, затем infobase_updateDb: загрузка не трогает конфигурацию БД, пока не передан updateDb: true.
  • Вызови run_designer — запуск Конфигуратора (если пользователь просит открыть конфигуратор).
  • Вызови deps_install — установка зависимостей packagedef/vrunner.
  • Пользователь просит дальше работать с проектом retail: вызови project_list, затем project_select с root проекта retail.
  • Пользователь просит показать десять товаров: odata_query с resource: "Catalog_Номенклатура", top: 10, select: "Ref_Key,Description". Ошибка «не входит в состав» — odata_setup с include: ["Catalog_Номенклатура"] и повтор запроса.

Правило

Для автоматизации (загрузка конфигурации, выгрузка, сборка обработок и т.д.) предпочитай инструменты MCP вместо Execute Command редактора — так агент получает структурированный ответ и не зависит от палитры.

← v1.0.2All versions