Cursor + MCP для 1С: работающая инструкция с картинками
Целевая аудитория: разработчики 1С, которые хотят подключить ИИ-агента Cursor к своему проекту через расширения 1C: Platform Tools и попробовали сделать это по статье 2795749.
Ключевые технологии: Cursor 3.x, Model Context Protocol (MCP), расширения yellow-hammer «1C: Platform Tools» и «1C: Platform Tools MCP», OneScript/opm (packagedef), выгрузка конфигурации в XML.
- Что MCP-сервер Platform Tools делает на самом деле
- Шаг 1. Открыть редактор в Cursor 3.x
- Шаг 2. Поставить расширения и обновить их
- Шаг 3. Инициализировать проект (packagedef)
- Шаг 4. Перезапустить окно и найти панели 1С
- Шаг 5. Включить IPC расширения
- Шаг 6. Записать .cursor/mcp.json
- Шаг 7. Включить сервер в Cursor
- Шаг 8. Проверка: «Покажи состояние окружения 1С»
- Грабли: MODULE_NOT_FOUND и два окна Cursor
- А как агенту увидеть метаданные?
- Что было не так в первой статье
- Что дальше
22 сентября мы опубликовали статью «Cursor + MCP: собираем идеальное рабочее место 1С-разработчика за 15 минут». По состоянию на 24 сентября у неё было 6163 просмотра, 6 плюсов и 7 минусов. Критика в комментариях была по делу. Мы сверили статью с документацией расширений и с живой установкой и нашли в ней ошибки, в том числе в главном тезисе: MCP-сервер Platform Tools не передаёт агенту объектную модель конфигурации.
Эта статья - продолжение той и первая часть новой серии. В ней мы заново проходим установку и исправляем найденные ошибки. Дальше «первая статья» - это 2795749, а «часть 1» - эта. Каждый шаг ниже пройден на реальном стенде 24–25.09.26. Снимки экрана сделаны на этом стенде; где снимка нет, приведён текст интерфейса. В конце таблица: что было написано в первой статье и как на самом деле.
Всё, что нужно для повторения, приведено прямо в статье: packagedef (шаг 3), .cursor/mcp.json и шаблон этого файла для git (шаг 6), скрипт проверки MCP-сервера без Cursor (шаг 7). Демо-конфигурацию Нано-УТ мы не выкладываем: для шагов этой части подойдёт выгрузка в XML любой Вашей конфигурации.
Стенд, на котором всё снято:
- Windows 11 Pro;
- Cursor 3.19.7 (установлен через
winget, пакетAnysphere.Cursor), бесплатный план; - «1C: Platform Tools» 0.9.6 и «1C: Platform Tools MCP» 0.3.0;
- платформа 1С:Предприятие 8.3.27.2130;
- Node.js установлен, OneScript и vanessa-runner - нет;
- проект - выгрузка демо-конфигурации Нано-УТ в XML, каталог
src/cf/. Проект лежит вне OneDrive.
Расширения активно обновляются. Если у Вас версии новее, интерфейс может отличаться в деталях. Сверяйте версии в первую очередь.
Что MCP-сервер Platform Tools делает на самом деле
Сначала о главном, потому что от этого зависят ожидания.
«1C: Platform Tools» - расширение для VS Code и совместимых редакторов (Cursor, Windsurf, VSCodium). «1C: Platform Tools MCP» - второе расширение, которое публикует команды первого как инструменты MCP для ИИ-агента. Оба расширения - community-проект организации yellow-hammer на GitHub под лицензией MIT. Фирма «1С» к ним отношения не имеет.
По документации MCP-сервер даёт агенту «доступ к командам расширения: тесты, профили запуска, сборка и загрузка конфигурации… работа с базой». Это пульт управления: создать базу из исходников, загрузить или выгрузить cf/cfe, собрать epf, запустить тесты, проверить синтаксис, поднять OData, запустить пайплайн.
Инструментов для чтения метаданных (реквизиты, табличные части, структура объектов) в MCP нет. Это сделано намеренно: в исходном коде расширения (src/shared/mcpCommandPolicy.ts) команды группы metadata.* перечислены в HIDDEN_PREFIXES, то есть не публикуются как MCP-инструменты. Дерево метаданных в расширении есть, но только в интерфейсе редактора, для человека. Как агенту всё-таки получить метаданные, разберём отдельно.
Рис. 1. Кто с кем связан. Агент говорит с MCP-сервером через stdio, сервер с расширением - по TCP на localhost (с токеном, если он задан, см. шаг 6). Метаданные (реквизиты, табличные части) агент берёт из XML-файлов проекта сам: команды metadata.* в MCP не публикуются.
Шаг 1. Открыть редактор в Cursor 3.x
Cursor 3.x после запуска показывает окно агентов, а не привычный редактор с деревом файлов. Редактор открывается кнопкой IDE в правом верхнем углу. Все дальнейшие шаги выполняются в нём.
Шаг 2. Поставить расширения и обновить их
В Cursor расширения ставятся из Open VSX (в VS Code - из VS Marketplace; без доступа к маркетплейсу можно поставить файл .vsix из релизов на GitHub). В поиске расширений найдите и установите оба:
- 1C: Platform Tools;
- 1C: Platform Tools MCP.
Издатель обоих - yellow-hammer.
У нас сначала установились версии 0.9.5 и 0.2.3, хотя на GitHub уже вышли 0.9.6 и 0.3.0. Через пару минут Cursor сам обновил их до 0.9.6 и 0.3.0. Поэтому после установки откройте карточку каждого расширения и проверьте версию. Если она отстаёт от последнего релиза на GitHub, обновите расширение.
Рис. 2. Панель Extensions: 1 установленное расширение «1C: Platform Tools» от yellow-hammer, 2 поле Version в карточке - 0.9.6. Сверьте с последним релизом на GitHub.
Рис. 3. 1 «1C: Platform Tools MCP», 2 версия 0.3.0. В описании расширения прямо написано, что Cursor добавляет новый сервер выключенным. Об этом шаг 7.
Шаг 3. Инициализировать проект (packagedef)
Откройте каталог проекта (File → Open Folder). Пока в нём нет файла packagedef, расширение работает в урезанном режиме: видны только панели «1С: Проекты» и «1С: Администрирование». Это нормально. Расширение активируется, когда в рабочей области есть каталог с файлом packagedef.
Писать packagedef руками не нужно. Панель «1С: Проекты» открывает страницу «Начало работы с 1C: Platform Tools» с кнопками:
- Открыть проект;
- Создать проект;
- Инициализировать текущий;
- Инициализировать структуру.
Нажмите Инициализировать текущий. Та же операция есть в палитре команд («1С: Зависимости: Инициализировать проект») и в MCP (инструменты project_init и deps_initPackagedef).
У нас получился такой packagedef:
Две вещи, которые в первой статье были описаны неверно:
packagedef- это файл проекта и зависимостей менеджера пакетов OneScript (opm). Это не «стандартный способ описания проекта 1С», и 1С:EDT на него не ориентируется: у EDT свой формат проекта, а расширение переводит EDT-проект в XML отдельной командой..ВерсияСреды("2.0.0")- минимальная версия движка OneScript, а не версия платформы 1С:Предприятие.
Заодно расширение создало каталог build/ и само скачало portable JRE 21 и md-sparrow, которые нужны для дерева метаданных в интерфейсе.
Шаг 4. Перезапустить окно и найти панели 1С
После появления packagedef перезапустите окно: Ctrl+Shift+P → Developer: Reload Window. Расширение активируется по событию workspaceContains:packagedef, и без перезапуска полный набор панелей может не появиться.
После перезапуска появляются панели «1С: Инструменты», «1С: Метаданные» и «1С: Свойства». На нашем стенде в выпадающем списке панелей Cursor 3.19.7 их не было. Открыть их можно через View → Open View… → 1С: Инструменты.
Рис. 4. Выпадающий список панелей Cursor 3.19.7: 1 из панелей расширения здесь только «1С: Проекты» и «1С: Администрирование». «1С: Инструменты» в списке нет.
Рис. 5. View → Open View…: 1 здесь есть все панели расширения - «1С: Инструменты», «1С: Метаданные», «1С: Свойства».
Шаг 5. Включить IPC расширения
После установки MCP-расширения Cursor показал уведомление: «MCP-серверу нужен IPC расширения 1c-platform-tools: без него инструменты недоступны» с кнопкой [Включить]. Нажмите её.
Кнопка записывает в пользовательские настройки:
После этого расширение поднимает локальный TCP-сервер на 127.0.0.1:40241 (порт по умолчанию). Мы проверили это на стенде командой PowerShell Get-NetTCPConnection. MCP-сервер подключается к расширению именно по этому порту и передаёт токен из переменной ONEC_IPC_TOKEN.
В первой статье было написано, что связь идёт «через локальный канал (stdio/IPC) - без отдельного сетевого порта». Это неверно: порт есть, пусть и только на localhost. Если порт 40241 уже кем-то занят, это надо учитывать.
Шаг 6. Записать .cursor/mcp.json
Cursor не поддерживает провайдер MCP-серверов VS Code, поэтому сервер подключается через файл .cursor/mcp.json в проекте. Писать его руками не нужно.
Откройте 1С: Инструменты → Команды → Навыки для AI → Настроить MCP для Cursor. Это обычный клик в дереве, палитра команд не нужна. Та же команда есть в палитре под именем «Настроить MCP для Cursor (.cursor/mcp.json)».
Рис. 6. Панель «1С: Инструменты» → «Команды»: 1 узел «Навыки для AI» и пункт «Настроить MCP для Cursor». Один клик - и файл .cursor/mcp.json записан.
Cursor покажет уведомление «Конфиг MCP для Cursor записан в …/.cursor/…». У нас получился такой файл (имя пользователя заменено):
Обратите внимание на путь в args: в нём есть номер версии расширения (0.3.0). К этому вернёмся в разделе про грабли.
И на пустой ONEC_IPC_TOKEN. С пустым токеном расширение принимает команды от любого процесса на этой машине, о чём честно пишет в свой лог (Output → «1C Platform Tools»): «токен не задан: команды примет любой процесс этой машины, задайте 1c-platform-tools.ipc.token». Мы это проверили: скрипт проверки MCP-сервера (его текст - в шаге 7) без всякого токена запустил на стенде команду установки OneScript (её Cursor ещё переспросил, но далеко не все команды спрашивают). Среди команд есть и такие, что пересоздают базу. Токен ограничивает доступ к IPC для процессов, которые его не знают; он не защищает от процесса, способного прочитать настройки или mcp.json от имени того же пользователя.
Как закрыть:
- В настройках Cursor (
Ctrl+,) найдите1c-platform-tools.ipc.tokenи впишите длинную случайную строку. - Ещё раз выполните «Настроить MCP для Cursor»: расширение возьмёт токен из этой настройки и запишет его в
ONEC_IPC_TOKEN. - Не коммитьте
.cursor/mcp.json: теперь в нём секрет, а ещё путь к профилю пользователя. Добавьте этот файл в.gitignore, а в репозиторий положите шаблон без токена, например.cursor/mcp.json.example: - Снова включите сервер (шаг 7): после правки
mcp.jsonCursor его выключает.
Мы проверили это на стенде 25.09.26. Токен действует сразу, перезапуск не нужен: вызов без токена получает UNAUTHORIZED, и MCP-сервер показывает агенту только один служебный инструмент. После повторного «Настроить MCP для Cursor» токен попал в mcp.json, и все 108 инструментов вернулись.
Одна тонкость. На нашем стенде после перезапуска Cursor иногда оставался «1 tool enabled»: сервер стартовал раньше IPC, что подтверждала ошибка ECONNREFUSED 127.0.0.1:40241 в логе. Reload не помог, а после запроса «Покажи состояние окружения 1С» сервер переподключился и снова показал 108 инструментов. Само число «1» не определяет причину: проверьте лог, поскольку при неверном токене тоже остаётся один служебный инструмент.
Шаг 7. Включить сервер в Cursor
Настройки MCP в Cursor 3.x переехали. В Cursor Settings теперь висит баннер «Plugins, MCPs, Skills, and Rules have moved to Customize». Нажмите Open Customize → MCPs.
Сервер mcp-1c-platform-tools будет в списке в состоянии Disabled, хотя в mcp.json стоит "disabled": false. Так и задумано: по документации MCP-расширения «новый сервер Cursor добавляет выключенным». Именно на этом месте застрял автор комментария №11 к первой статье, а в ней об этом не было ни слова.
Как включить:
- Щёлкните по строке сервера. Откроется «Configure mcp-1c-platform-tools».
- Включите переключатель у источника
.cursor/mcp.json. - Статус сменится на «Local: Connecting…», затем на Connected.
На нашем стенде после подключения Cursor показал 108 tools enabled. Число зависит от версий расширений: список инструментов собирается из команд расширения, так что у Вас оно может отличаться.
Рис. 7. Customize → MCPs: 1 сервер mcp-1c-platform-tools в состоянии Disabled, хотя в .cursor/mcp.json записано "disabled": false.
Рис. 8. «Configure mcp-1c-platform-tools»: 1 переключатель источника .cursor/mcp.json включён, 2 среда Local - Connected. Ниже - список инструментов, каждый можно отключить отдельно.
Какие группы инструментов мы получили (0.9.6 / 0.3.0)
Список снят скриптом, который запрашивает у MCP-сервера перечень инструментов (текст скрипта - в следующем спойлере). Группы по префиксам:
project_*- проект и его структура;deps_*- зависимости (initPackagedef,installOscript,installи др.);infobase_*- информационные базы (create,updateDb,init,initFromSrc,dumpDt,restoreDtи др.);cf_*- конфигурация (load,loadInc,dump,compile,decompile,makeDistи др.);cfe_*- расширения конфигурации, включаяcfe_borrowObject;epf_*- внешние обработки и отчёты;test_*- тесты (xunit, vanessa, yaxunit, mutatos, allure и др.);syntaxCheck_run- синтаксический контроль;run_enterprise,run_designer- запуск клиента и конфигуратора;odata_query,odata_setup- OData;pipelines_run- пайплайны;env_*,serviceFiles_*,session_*,tasks_*,debug_*,properties_show,edt_*,server_*.
Инструментов чтения метаданных среди них нет.
Скрипт запускает MCP-сервер так же, как Cursor, по параметрам из .cursor/mcp.json, и выводит список инструментов. С аргументом он вызывает один инструмент без параметров. Удобно, когда непонятно, кто виноват: Cursor или связка «MCP-сервер - расширение».
Сохраните его в проекте как tools/mcp-check.mjs и запускайте из корня проекта, пока проект открыт в Cursor и IPC включён (шаг 5). Нужен только Node.js, пакеты ставить не надо.
Вызывайте так только безопасные инструменты вроде env_status: скрипт ничего не переспрашивает, а среди инструментов есть пересоздание базы.
Шаг 8. Проверка: «Покажи состояние окружения 1С»
В первой статье проверкой был вопрос «Какие объекты есть в корне конфигурации?». Этот вопрос не проверяет MCP вообще: агент ответит на него, прочитав файлы проекта. Документация MCP-расширения предлагает другую проверку, и её мы и рекомендуем.
Откройте чат агента и напишите:
Покажи состояние окружения 1С
Агент должен сам вызвать инструмент env_status. По документации в ответе будут активный профиль запуска, версия платформы и путь к базе.
У нас агент вызвал env_status (в чате видно «1 tool») и вывел таблицу:
- профиль -
default, схема настроек v2; env.json- файла нет;- vanessa-runner - не определена;
- строки подключения нет;
- OData - автономный сервер не запущен.
Затем он предложил создать служебные файлы. Для чистого проекта без базы это правильная картина: MCP работает, а окружение ещё не настроено.
Если агент ответил без вызова инструмента, такая проверка ещё не подтверждает работу MCP. Попросите его явно вызвать env_status. Если инструмент недоступен, проверьте подключение по шагу 7.
Рис. 9. Проверка в чате: 1 под запросом видно «1 tool» - агент вызвал env_status, а не ответил по памяти. Таблица честно показывает пустое окружение: env.json нет, vanessa-runner не определена, OData не запущен. Путь к проекту на снимке заменён на <user>.
Грабли: MODULE_NOT_FOUND и два окна Cursor
MODULE_NOT_FOUND после обновления расширения
В .cursor/mcp.json записан путь к index.js, и в этом пути есть версия расширения (…mcp-1c-platform-tools-0.3.0-universal…). Когда расширение обновляется, каталог старой версии пропадает, и сервер падает с ошибкой MODULE_NOT_FOUND.
Начиная с версии 0.1.10 MCP-расширение чинит это само: при запуске оно переписывает путь, если тот ведёт на другую установку этого же расширения (так сказано в его README и видно в коде, out/src/cursorConfig.js). Путь, прописанный вручную, например на сборку из исходников, расширение не трогает, его придётся править руками.
Мы проверили это на стенде 25.09.26: вписали в путь версию 0.2.3 - с неё у нас начиналась установка, но её каталога после обновления уже нет - и перезапустили Cursor. Вот что произошло:
- Первый запуск всё равно упал. Cursor стартовал сервер в 11:59:20, а расширение активировалось и переписало путь только в 11:59:33 (в его логе: «Конфиг Cursor обновлён»). Сервер к этому моменту уже упал с
MODULE_NOT_FOUND. - Интерфейс ошибку почти не показывает. Сначала в списке висит зелёная точка и «0 tools enabled». Потом сервер уходит в группу «Needs Attention» и выключается: Cursor выключает сервер после любой правки
.cursor/mcp.json, в том числе сделанной расширением. В окне сервера написано только «MCP error -32000: Connection closed», а причину видно лишь по кнопке Show Output. - Переключатель и Reload не помогли. Путь в файле уже был правильным, но переподключился сервер только после перезапуска Cursor.
Что делать, если после обновления расширения MCP-инструменты пропали:
- Проверить путь в
.cursor/mcp.json: номер версии должен совпадать с карточкой расширения. Если путь не исправился сам (например, вы писали его руками), выполните «Настроить MCP для Cursor» ещё раз. - Перезапустить Cursor.
- Снова включить сервер, как в шаге 7.
Пока Cursor открыт, обновление ничего не ломает: уже запущенный процесс сервера продолжает работать. Ошибка появляется при следующем запуске.
Рис. 10. MODULE_NOT_FOUND в Cursor 3.19.7: 1 сервер попал в группу «Needs Attention» и выключен, 2 причина видна только в Output (кнопка Show Output в окне сервера): Cannot find module …mcp-1c-platform-tools-0.2…, code: 'MODULE_NOT_FOUND'. Имя пользователя в пути заменено на <user>.
Два окна Cursor с разными проектами
IPC-порт по умолчанию один на всех: 40241. Если открыть второй проект во втором окне Cursor, второе окно сообщит, что порт уже используется, а агент может попасть не в тот проект. Это видно по ошибке WORKSPACE_MISMATCH.
Лечение по документации: задать каждому проекту свой порт в .vscode/settings.json этого проекта. Порт, на который смотрит MCP-сервер, указан в .cursor/mcp.json в переменной ONEC_IPC_PORT. Точный рецепт - в docs/index.md репозитория yellow-hammer/mcp-1c-platform-tools, раздел «Несколько окон».
А как агенту увидеть метаданные?
Это был главный тезис первой статьи, и он был неверным. Там говорилось, что MCP-сервер передаёт агенту «полную объектную модель» и «сериализацию графа», а реквизиты справочника агент получает через MCP. Как показано выше, таких инструментов в MCP-сервере нет.
Метаданные агент читает сам, из файлов проекта. Выгрузка конфигурации в файлы - это XML-описания объектов и модули BSL рядом с ними, например:
Catalogs/Номенклатура.xml- описание справочника: реквизиты, табличные части, свойства;Catalogs/Номенклатура/Ext/ObjectModule.bsl- модуль объекта.
Файлов с расширением .1c, о которых писала первая статья, в выгрузке нет. Файла Справочник.Номенклатура.bsl тоже нет.
Рис. 11. Метаданные - это обычные файлы: 1 Catalogs/Номенклатура.xml в дереве проекта, 2 описание реквизита «Артикул» (строка, 20 символов) внутри XML. Именно это агент и читает, без всякого MCP.
Для небольших вопросов («какие реквизиты у справочника Номенклатура») этого достаточно: агент откроет XML и прочитает. Для вопросов про связи (где используется объект, кто вызывает функцию, что сломается при изменении) чтения отдельных файлов мало. Для этого мы используем граф знаний конфигурации, про него есть отдельная статья об Analyzer 1C.
Что было не так в первой статье
| Что было написано в статье 2795749 | Как на самом деле |
|---|---|
| MCP-сервер передаёт агенту полную объектную модель, «сериализацию графа»; реквизиты справочника - через MCP | MCP-сервер - пульт команд расширения. Команды metadata.* намеренно не публикуются в MCP. Метаданные агент читает из XML сам |
| Связь «через локальный канал (stdio/IPC) - без отдельного сетевого порта» | TCP 127.0.0.1:40241 с токеном (если задан, иначе без защиты, см. шаг 6), включается настройкой 1c-platform-tools.ipc.enabled |
| Не сказано, что сервер после настройки выключен | Cursor добавляет новый MCP-сервер выключенным, включать надо вручную (шаг 7) |
Нет про MODULE_NOT_FOUND |
Путь в mcp.json содержит версию расширения. Расширение чинит его само, но на нашем стенде первый запуск Cursor после обновления упал; помогли перезапуск и повторное включение сервера |
| Нет про два окна Cursor | Конфликт порта и WORKSPACE_MISMATCH, свой порт на проект |
| Проверка: «Какие объекты есть в корне конфигурации?» | Официальная проверка - «Покажи состояние окружения 1С» (инструмент env_status) |
| Тест: «создать новый справочник через MCP» | Такого инструмента нет |
Метаданные в файлах .1c, модуль Справочник.Номенклатура.bsl |
XML (Catalogs/Номенклатура.xml) и модули Catalogs/Номенклатура/Ext/ObjectModule.bsl |
packagedef создать вручную |
Кнопка «Инициализировать текущий» или команда «1С: Зависимости: Инициализировать проект» |
packagedef - стандартный способ описания проекта 1С, EDT на него ориентируется |
Это формат OneScript/opm. У EDT свой формат проекта |
.ВерсияСреды - версия платформы |
Минимальная версия OneScript |
| Модели на схеме: Claude 3.7 / GPT-4o | Модели 2024-2025 годов, к сентябрю 2026 устарели |
| «Исключает галлюцинации», «ускоряет в разы» | Ничем не подтверждено. В этой статье таких обещаний нет |
| Только HTML-схемы, ни одного снимка экрана | Шаги пройдены на живом стенде, рисунки сняты там же. packagedef, mcp.json и скрипт проверки приведены в статье |
Отдельно о цифре «15 минут» в заголовке первой статьи. Мы её не повторяем: время установки на стенде мы не замеряли, а обещать цифру без замера не будем.
Что дальше
После шага 8 MCP подключён, но агенту пока почти нечего делать: env_status сам сказал, что окружение пустое. Чтобы агент мог собирать конфигурацию и проверять свой код, нужны:
- OneScript и vanessa-runner (ставятся из дерева «Зависимости»);
- профиль запуска из узла «Служебные файлы»:
env.jsonдля vanessa-runner 2.x илиautumn-properties.jsonдля 3.x. В приведённомpackagedefуказан vanessa-runner 3.0.0, поэтому после его установки нужен второй формат; - информационная база из исходников (
infobase_initFromSrc); - после этого -
syntaxCheck_runиcf_compileпрямо из чата.
Форматы профилей описаны в документации Platform Tools 0.9.6. Это тема следующей части. Её мы тоже пройдём на том же стенде и с теми же снимками экрана.
А у Вас MCP-сервер Platform Tools заработал с первого раза? На каком шаге застряли и какие версии Cursor и расширений у Вас стоят? Напишите в комментариях: если найдётся шаг, который у Вас выглядит иначе, мы добавим его в статью.
Теги: Cursor, MCP, Model Context Protocol, 1C: Platform Tools, yellow-hammer, ИИ-агент, 1С, BSL, packagedef, OneScript, opm, Open VSX, mcp.json, IPC, env_status, выгрузка конфигурации в XML, Analyzer 1C, AI для 1С, DevOps 1С
Вступайте в нашу телеграмм-группу Инфостарт