Edt Companion
FreeNot checkedMCP 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
About
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; там же сведения о сторонних компонентах.
Результаты работы плагина — код и метаданные в ваших проектах — принадлежат вам, никаких прав на них правообладатель не заявляет.
Installing Edt Companion
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/SeKam68/edt-companion-mcpFAQ
Is Edt Companion MCP free?
Yes, Edt Companion MCP is free — one-click install via Unyly at no cost.
Does Edt Companion need an API key?
No, Edt Companion runs without API keys or environment variables.
Is Edt Companion hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Edt Companion in Claude Desktop, Claude Code or Cursor?
Open Edt Companion on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by 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
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by 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
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
