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
Описание
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 (альтернатива)
Скачайте
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; там же сведения о сторонних компонентах.
Результаты работы плагина — код и метаданные в ваших проектах — принадлежат вам, никаких прав на них правообладатель не заявляет.
Установка Edt Companion
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/SeKam68/edt-companion-mcpFAQ
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
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
автор: duxiaohuiSupabase
Database, auth and storage
автор: SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Edt Companion with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
