edt-companion-mcp
Health Warn
- License — License: NOASSERTION
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 6 GitHub stars
Code Warn
- Code scan incomplete — No supported source files were scanned during light audit
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
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-агентов.
edt-companion-mcp
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 (альтернатива)
Скачайте
io.github.sekam68.edt.companion.mcp-<версия>.jarиз раздела
Releases.Скопируйте 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/.Перезапустите 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; там же сведения о сторонних
компонентах.
Результаты работы плагина — код и метаданные в ваших проектах — принадлежат
вам, никаких прав на них правообладатель не заявляет.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found