Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Edt Companion

БесплатноНе проверен

MCP server plugin for 1C:EDT — 46 tools over the live EDT model: metadata and BSL with unsaved editor changes, forms, DCS, metadata editing, validation, yaxunit

GitHubEmbed

Описание

MCP server plugin for 1C:EDT — 46 tools over the live EDT model: metadata and BSL with unsaved editor changes, forms, DCS, metadata editing, validation, yaxunit run and debug. MCP-сервер внутри 1С:EDT для AI-агентов.

README

HTTP MCP-сервер внутри 1C:EDT. OSGi-плагин поднимает локальный сервер на http://127.0.0.1:6868/mcp (JSON-RPC 2.0 + MCP) и отдаёт 46 инструментов, через которые AI-агент (Claude Code, Cursor, Cline, любой MCP-клиент) видит то же, что видит сам EDT: типизированную метамодель, BSL-код с несохранёнными правками открытых редакторов, структуру форм, СКД, XDTO, а также Eclipse Debug API для запуска и отладки yaxunit-тестов.

Плагин работает только над тем workspace, который сейчас открыт в EDT — отдельного процесса EDT/1С он не запускает.

Возможности

  • Чтение метаданных и BSL: объекты конфигурации, формы (с extInfo и обработчиками), СКД, XDTO, предопределённые элементы, права ролей, подсистемы, defined-типы. Через BM-транзакции — видит несохранённые правки открытых редакторов, а не только диск.
  • Поиск и навигация: текстовый поиск по BSL, резолв символов, cross-reference index (find_object_references), иерархия вызовов методов.
  • Конфигурации на обычных формах: модули обычных (неуправляемых) форм читаются и ищутся, хотя EDT их в модель не поднимает — текст извлекается из контейнера Form.oform. Инструменты, которые такие формы не покрывают, сообщают об этом явно, а не отдают молчаливый нуль.
  • Редактирование метаданных — единый инструмент edit_metadata: создание и удаление объектов, реквизиты, табличные части, формы (через штатный IFormGenerator), элементы форм, обработчики событий с авто-генерацией BSL-заглушек, права, подписки, defined-типы, XDTO-схемы, макеты, СКД. Принимает и конфигурации, и проекты-расширения.
  • Заимствование в расширение: adoptObject / adoptChild / adoptModule через штатный IModelObjectAdopter.
  • Валидация и сборка: маркеры EDT-валидации, rebuild_project, проверка запросов, headless-обновление ИБ (sync_database) без модального диалога.
  • yaxunit + отладка: запуск тестов, чтение отчёта, точки останова с условием/hit-count, getState / getVariables / evaluate, пошаговое выполнение — через стандартный Eclipse Debug API.

Полный каталог инструментов, конвенции параметров и типовые сценарии — в docs/llm-guide.md.

Требования

  • 1C:EDT 2025.2 или 2026.1 (проверялось на 2025.2.5 / EDT core 26.0.1 и на 2026.1.2 / EDT core 27.0.2).
  • Java 17 (идёт в составе EDT).
  • Открытый в EDT workspace с проектом конфигурации или расширения.

Установка

Через update-site (рекомендуется)

Стандартный механизм Eclipse. В 1C:EDT: Help → Install New Software…, в поле Work with укажите адрес репозитория обновлений:

https://sekam68.github.io/edt-companion-mcp/

Отметьте фичу edt-companion-mcp, пройдите мастер и перезапустите EDT. Обновления ставятся тем же путём (Help → Check for Updates).

Через drop-in jar (альтернатива)

  1. Скачайте io.github.sekam68.edt.companion.mcp-<версия>.jar из раздела Releases.

  2. Скопируйте jar в каталог dropins установки 1C:EDT. Типичный путь:

    <установка 1C:EDT>/components/1c-edt-<версия>-x86_64/dropins/
    

    (например C:/Program Files/1C/1CE/components/1c-edt-2025.2.5+2-x86_64/dropins/). У установок, развёрнутых 1cedtstart в отдельный каталог, это <каталог установки>/1cedt/dropins/ — например D:/1C/1cedtstart/installations/1C_EDT 2026.1/1cedt/dropins/.

  3. Перезапустите 1C:EDT (при первой установке помогает разовый запуск с -clean).

Проверка

curl http://127.0.0.1:6868/health
→ {"status":"ok","tools":46,"workspace":"D:\\1C\\workspaces\\Демо",
   "workspaceName":"Демо","projects":["Демо","Демо.Расширение"]}

Если /health не отвечает — EDT не запущен либо bundle не активировался.

workspace / projects называют, какой именно EDT отвечает на этом порту, — при двух запущенных экземплярах это единственный способ не спутать порты (см. docs/multi-instance.md).

Порт по умолчанию — 127.0.0.1:6868. Меняется прямо в Window → Preferences → edt-companion-mcp (поле «TCP-порт», применяется сразу, без перезапуска EDT). Для headless/CI порт можно задать VM-аргументом -Dedt.yaxunit.mcp.port=<порт>1cedt.ini после -vmargs) или переменной окружения EDT_YAXUNIT_MCP_PORT — они имеют приоритет над значением на странице настроек.

Подключение AI-агента

Пропишите сервер в .mcp.json проекта (или в конфигурации вашего MCP-клиента):

{
  "mcpServers": {
    "edt-companion-mcp": {
      "type": "http",
      "url": "http://127.0.0.1:6868/mcp"
    }
  }
}

Протокол — JSON-RPC 2.0 через POST /mcp; поддержаны методы initialize, tools/list, tools/call. Список инструментов и их параметры агент получает через tools/list; человекочитаемый справочник — в docs/llm-guide.md.

Конфигурации на обычных (неуправляемых) формах

EDT такую конфигурацию импортирует нормально, но обычную форму в модель не поднимает: и раскладка, и модуль лежат в бинарном Form.oform в каталоге формы, а API чтения этого контейнера EDT не предоставляет. На конфигурации эпохи 8.2 это может быть половина кода — и молчаливое «совпадений нет» из поисковых инструментов опаснее отсутствующей возможности, потому что читается как «использований нет».

Плагин закрывает это с двух сторон.

Читает и правит модули. read_module_source, read_method_source и get_module_structure принимают путь .../Forms/<Имя>/Module.bsl, которого на диске нет: текст извлекается из контейнера, в ответе source:"oform" и путь к Form.oform. search_in_code досматривает контейнеры отдельным проходом, помечая совпадения источником. write_module_source по тому же пути правит текст модуля внутри контейнера — EDT обычную форму не моделирует, а везёт файл как есть и сравнивает с информационной базой.

Состав процедур менять можно, включая переименования: служебных процедур в формах около трети. Но обработчик обычной формы привязан по имени — в раскладке либо строкой в коде, — и за переименованием привязка не переезжает: конфигурация соберётся, а событие молча перестанет срабатывать. Поэтому запись проверяет исчезнувшие имена по обоим источникам и, если задет обработчик, возвращает предупреждение с именем события и указанием перепривязать его в конфигураторе. Строгий режим (handlerChanges: "refuse") отклоняет такие правки вместо предупреждения. Раскладка формы остаётся только для конфигуратора.

Не выдаёт неполноту за полноту. get_form_layout по обычной форме отдаёт layoutAvailable:false с причиной вместо пустых секций, get_form_screenshot отказывает сразу, find_object_references и get_method_call_hierarchy добавляют блок coverage со счётчиками. get_config_properties отдаёт режим запуска конфигурации (defaultRunMode, modalityUseMode, interfaceCompatibilityMode, …) и счётчики форм по типу — этого хватает, чтобы с первого вызова понять, с чем имеешь дело.

Режим — в Window → Preferences → edt-companion-mcp, «Обычные (неуправляемые) формы»: по умолчанию авто, то есть применимость определяется наличием Form.oform в проекте, и на конфигурациях с управляемыми формами вывод инструментов не меняется. «Только чтение» запрещает запись в контейнер, «не читать контейнеры» отключает и извлечение текста, оставляя явные отказы с причиной; то же значение принимает переменная EDT_COMPANION_ORDINARY_FORMS.

Цикл правки целиком — от чтения модуля до возврата изменений в EDT — в docs/ordinary-forms.md.

Защита персональных данных (PII-редактор)

Опциональный output-фильтр: перед отправкой результата любого инструмента агенту (в т.ч. в облачную модель) содержимое прогоняется через набор правил, и обнаруженные ПДн заменяются на маску [redacted] или коррелируемый псевдоним Физлицо#<hmac> (одинаковый вход → один токен, без раскрытия и без хранения таблицы соответствий). По умолчанию выключен — включается осознанно на базах с реальными ПДн.

Включается одним флагом в Window → Preferences → edt-companion-mcp«Фильтровать персональные данные (ПДн) в ответах инструментов» (применяется сразу, перезапуск EDT не нужен). Остальное работает на разумных умолчаниях: встроенный набор правил под 152-ФЗ (email, телефон, СНИЛС, ИНН) и случайный ключ псевдонимайзера на запуск.

Флаг можно перекрыть переменной окружения EDT_COMPANION_PII (on/1/true/yes) — приоритетнее галочки, удобно для CI/headless. Для продвинутых сценариев доступны (только через env, в UI не выведены): EDT_COMPANION_PII_SALT — постоянная соль для стабильных псевдонимов между сессиями; EDT_COMPANION_PII_RULES — путь к своему JSON-набору правил.

Текущая версия применяет правила по содержимому значения (regex): email, телефон +7…, СНИЛС, ИНН, паспортные/длинные числовые последовательности. Формат правила: { "enabled", "scope": "VALUE", "countable", "representation", "regex" } (countable:false — плоская маска, countable:true — псевдоним).

Каталог инструментов (46)

Группа Инструменты
Workspace и среда list_workspace_projects, list_applications, show_edt_version
Чтение BSL read_module_source, read_method_source, get_module_structure, search_in_code, resolve_symbol
Запись BSL write_module_source
Метаданные (чтение) list_metadata_objects, list_modules, get_object_details, get_form_layout, get_form_screenshot, get_config_properties
Анализ find_object_references, get_method_call_hierarchy, get_validation_errors, get_check_description, apply_quick_fix
Редактирование метаданных edit_metadata (единый диспетчер операций)
XDTO read_xdto_package, edit_xdto_package
Сборка и ИБ rebuild_project, sync_database, job, get_event_log, refresh_workspace
Запросы validate_query
Документация платформы get_object_help, get_platform_docs
yaxunit run_yaxunit, get_yaxunit_report
Отладка addBreakpoint, removeBreakpoint, listBreakpoints, getState, getVariables, evaluate, resume, suspend, stepOver, stepInto, stepReturn, terminate, get_profiling_results

get_form_screenshot требует native-buffered рендера форм: добавьте в 1cedt.ini после строки -vmargs две строки -DnativeFormLayoutRender=true и -DnativeFormBufferedLayoutRender=true и перезапустите EDT. Без них буфер изображения пуст (форма рисуется в нативное окно). Остальные инструменты в этих аргументах не нуждаются. Аргументы живут в 1cedt.ini конкретной установки — после обновления EDT на новую версию их нужно прописать заново.

get_method_call_hierarchy строит граф сам, а не через модельные Method.callers / Method.callees — те объявлены transient и заполняются только редакторским путём EDT, поэтому при чтении модуля через BM read-транзакцию пусты. Границы методов берутся из AST (видны несохранённые правки), имена разрешаются по индексу модулей workspace. Глобальные функции платформы и вызовы через переменную/менеджер объекта в граф не попадают — они перечислены в unresolvedCalls.

Когда не подходит

  • Headless / CI / удалённая разработка без открытого EDT — сервер живёт внутри процесса EDT; без UI ряд операций (в т.ч. sync_database) недоступен.
  • Редактирование тела существующего BSL-метода — плагин читает модули, ищет по коду, находит ссылки и дописывает заглушки обработчиков, но тело процедуры правит сам агент своими file-tools.

Лицензия

Использование бесплатно — в личных целях и внутри организации, без ограничения по числу рабочих мест, в том числе в коммерческой разработке. Распространение, изменение и восстановление исходного кода требуют разрешения правообладателя. Полные условия — в файле LICENSE; там же сведения о сторонних компонентах.

Результаты работы плагина — код и метаданные в ваших проектах — принадлежат вам, никаких прав на них правообладатель не заявляет.

from github.com/SeKam68/edt-companion-mcp

Установка Edt Companion

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/SeKam68/edt-companion-mcp

FAQ

Edt Companion MCP бесплатный?

Да, Edt Companion MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Edt Companion?

Нет, Edt Companion работает без API-ключей и переменных окружения.

Edt Companion — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить Edt Companion в Claude Desktop, Claude Code или Cursor?

Открой Edt Companion на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Edt Companion with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории development