С искусственным интеллектом в веб‑разработке мы работаем уже достаточно давно. На проектах с MODX 2 ChatGPT помогал искать ошибки, разбирать чужой код, писать сниппеты и компоненты, переделывать шаблоны. Польза была вполне практической, но сам процесс, в большей части, оставался традиционным. Нужно было найти нужный чанк, принести его в чат, объяснить, откуда берутся данные, показать TV‑поля, получить исправленный код, вернуть его в MODX и проверить результат.
ИИ заметно ускорял написание кода, но разработчик при этом продолжал работать «курьером» между ИИ и сайтом. В какой‑то момент мне захотелось убрать именно эту часть работы. Не дать ChatGPT полный SSH‑доступ и посмотреть, что он там натворит, а сделать так, чтобы он сам видел структуру сайта примерно так же, как её видит разработчик MODX, ресурсы как ресурсы, чанки как чанки, TV как TV, а не просто как строки в таблицах базы данных.
Так из довольно простого желания перестать делать Ctrl+C, Ctrl+V между окнами родился эксперимент, который постепенно вырос в отдельный проект. И в рабочий инструмент.
MODX 3 подкрался незаметно…
Повод получился достаточно комичный. Один новый разработчик, который ещё не успел выучить наши внутренние стандарты, какого‑то чёрта поставил на новый проект MODX 3. Раньше третью ветку мы сознательно обходили. В первую очередь нам мешал MIGX, который используется достаточно активно, особенно на старых проектах. С совместимостью долгое время были проблемы, поэтому особого желания переводить накопившееся хозяйство на MODX 3 у нас не возникало.
Но на момент написания статьи «тройка» уже заметно повзрослела, большинство детских болезней прошло, ситуация с дополнениями стала значительно лучше, и откатывать новый сайт обратно на MODX 2 только потому, что «мы так привыкли», показалось уже не очень разумным. Тем более что сайт, зараза, работал.
Раз уж всё равно приходилось немного менять привычный способ работы, появилась мысль заодно серьёзнее подойти к ИИ. С MCP я уже был знаком и использовал его в других задачах, поэтому вопрос стоял не в том, что такое MCP, а гораздо практичнее, есть ли уже нормальный MCP для MODX и что из существующих проектов можно использовать.
Пошёл смотреть GitHub, а что ж еще...
Open source в нормальном смысле этого слова
Проектов нашлось немного. На момент, когда мы выбирали основу, ближе всего к нашей задаче оказался modxMCP от dampilov94.
Это был уже далеко не пример из трёх команд. Проект умел работать с ресурсами, шаблонами, чанками, сниппетами, TV, настройками и дополнительными компонентами, искать код и места использования элементов. В нём уже были project_overview, который позволяет быстро получить компактную карту проекта, и dependency_graph, который строит связи между элементами MODX, находит битые ссылки и помогает понять, что именно может затронуть изменение.
Параллельно посмотрели modxmcp от karamble. Он решал похожую задачу немного иначе. Проект ориентирован на MODX 3 и делает заметный упор на штатный путь изменения данных через процессоры MODX. Мне понравились более компактная внутренняя организация и довольно строгий подход к тому, какими правами вообще должен обладать агент.
Если очень грубо свести то, что было важно именно нам, картина получалась примерно такая.
Проект |
Сильные стороны |
Что нам не подходило |
|---|---|---|
Широкая работа с сущностями MODX, |
Изначально рассчитан на MODX 2, архитектуру под нашу дальнейшую задачу пришлось заметно перерабатывать |
|
MODX 3, штатные процессоры MODX, аккуратная модель доступа, компактный специализированный набор инструментов |
Другой охват возможностей, для нашего рабочего сценария не хватало части уже нужных операций |
Выбирать здесь «лучший MCP» я не стал. У проектов разные сильные стороны, поэтому мы взяли то, что лучше подходило нашей задаче, а дальше начали собирать собственную архитектуру. На то он, собственно, и open source.

dependency_graph. Перед изменением агент может увидеть связи элемента MODX и оценить, что ещё оно затронет.Почему просто SSH здесь недостаточно
SSH у агента тоже есть, и он нужен, потому что если надо разобраться со сборкой Bootstrap, посмотреть конфигурацию сервера или изменить SCSS, предметный MCP для MODX ничем не поможет. Но когда задача относится к самой CMS, одного доступа к файлам уже мало. Сайт на MODX это не каталог PHP‑файлов. Значительная часть его структуры находится в ресурсах, шаблонах, чанках, сниппетах, TV, системных настройках и связях между ними. Можно дать агенту ещё SQL, информации станет больше, но таблицы базы данных всё равно плохо объясняют смысл этой информации.
Для человека modChunk это не просто запись с полем content. Разработчик понимает, что этот чанк может использоваться несколькими шаблонами и сниппетами, а изменение общей карточки товара способно затронуть половину каталога. Вот этот смысл хотелось сохранить и для агента, чтобы он видел не просто данные, которые можно изменить, а объект CMS со связями и последствиями.
Позже мы сформулировали эту мысль в документации проекта достаточно коротко.
MODX MCP не пытается дать ИИ максимальный доступ к сайту. Он пытается дать ИИ правильный доступ.
Для меня это до сих пор главная идея всей конструкции.
Первый тест был максимально «научным»
После адаптации компонента под MODX 3 надо было проверить самую простую вещь, агент действительно способен получить задачу и довести её до изменения работающего сайта. Поэтому я попросил сделать фон сайта красным и увеличить размер H1. В два раза. Содержательность задачи примерно нулевая, зато результат сложно не заметить. На проекте использовался Bootstrap, агент сам нашёл исходники стилей, внёс изменение, пересобрал CSS и показал результат. После этого я попросил всё вернуть обратно, и сайт вернулся в исходное состояние.
Никакого технологического шока не произошло, с подобными системами мы уже работали и понимали, что такая цепочка в принципе возможна. Интереснее было другое, мне не пришлось заранее объяснять, какой файл открыть, где искать нужное значение и какой командой пересобирать стили. Я поставил задачу на уровне результата, а технический путь агент нашёл самостоятельно.
На красном фоне эта разница выглядит почти игрушечной, но из неё довольно быстро вырос вполне рабочий подход. Первое, что теперь делает агент при подключении нового сайта, это разбирает его структуру, получает ресурсы, шаблоны, чанки, сниппеты и TV, смотрит взаимосвязи между элементами, установленные компоненты, фронтенд‑стек и другие устойчивые особенности проекта. Результат такой инвентаризации фиксируется в проектном AGENTS.md, поэтому в следующем чате не приходится снова начинать знакомство с сайтом с нуля.
И вот после этого у нас начались проблемы...
Дать агенту MODX оказалось проще, чем научить его думать как MODX‑разработчик
Одна из первых реальных задач была совершенно обычной. Есть раздел сайта, нужно вывести дочерние ресурсы через pdoResources, использовать определённые TV и собрать карточки. Задачу сформулировали достаточно точно, агент внимательно всё прочитал и сделал статическую вёрстку. Внешне результат был правильный, пять карточек стояли на месте, данные выглядели нормально, страница работала, только решение не имело почти никакого отношения к архитектуре сайта. Оказалось, что доступ к сущностям MODX ещё не означает понимания нормальных способов работы с MODX. Можно дать модели 180 инструментов, но это совершенно не гарантирует, что она выберет правильный.
В исходном modxMCP эта проблема уже частично учитывалась. В документации был рекомендуемый порядок работы, сначала сориентироваться в проекте, затем найти нужный объект, посмотреть его окружение и зависимости, перед изменением оценить последствия, для опасной операции сначала выполнить предварительную проверку, после записи проверить результат. Мы пошли дальше в ту же сторону и добавили правила конкретного проекта и накопленные знания о его архитектуре. Задача постепенно сместилась от желания дать модели побольше команд к попытке научить её выбирать, какая из этих команд вообще уместна.
Это сильно меняет отношение к количеству инструментов. На момент написания статьи в нашей общей ветке зарегистрировано 182 действия. Само число выглядит солидно, но качество работы агента определяется не тем, сколько кнопок ему выдали, а тем, понимает ли он, какую кнопку сейчас лучше вообще не нажимать.
Порт под MODX 3 довольно быстро перестал быть просто портом
Исходный modxMCP был рассчитан на MODX 2, а первый наш проект работал на третьей версии. Первым этапом была вполне понятная задача, адаптировать компонент под MODX 3. Подробно пересказывать изменения пространств имён, процессоров и другие отличия двух поколений MODX смысла не вижу, любой, кто переносил дополнение со второй версии на третью, примерно представляет объём веселья.
Пока версия для MODX 3 была небольшим ответвлением, отдельная кодовая база выглядела терпимо. Потом в неё стали добавляться свои проверки, изменения клиента, установщика, безопасность и новые инструменты. К этому моменту первоначальный эксперимент уже превратился в рабочий проект, и захотелось использовать новые возможности на старых сайтах с MODX 2. Поддерживать две почти одинаковые кодовые базы и синхронно переносить между ними каждое изменение выглядело уже не разработкой, а добровольным мазохизмом.
Архитектуру пришлось переделывать ещё раз. Большой общий обработчик начали разбивать на отдельные классы и модули, появился реестр инструментов, общая среда выполнения и отдельный платформенный слой, который скрывает различия между MODX 2 и MODX 3.

Прикладной инструмент теперь не должен сам решать, какой конкретный класс существует в MODX 2, а какой в MODX 3. Он работает с логической сущностью, а различия остаются на границе платформы. Интерфейс этого слоя получился небольшим.
interface PlatformInterface { public function key(); public function majorVersion(); public function supports($modx); public function className($logicalName); public function processorTarget($processor); public function runProcessor( $modx, $processor, array $properties = array(), array $options = array() ); }
Например, инструменту нужен resource. Для MODX 2 адаптер подставит modResource, для MODX 3 соответствующий класс Revolution. Та же логика работает с чанками, шаблонами, TV и процессорами MODX. Код здесь совершенно нереволюционный, ценность в том, что различия двух платформ перестают расползаться по всей системе в виде десятков проверок версии. Если завтра меняется способ запуска процессора на одной платформе, исправление остаётся в одном месте. Именно эту часть архитектуры мы уже заметно развивали сами, опираясь на опыт обоих изученных открытых проектов.
Иногда важнее не что изменить, а каким путём
Предметный интерфейс позволяет решить ещё одну проблему, которая плохо заметна при прямой работе с базой. Запись в MODX не всегда равна корректному изменению MODX.
В истории исходного modxMCP был хороший реальный пример. Операции построчного редактирования и массовой замены когда‑то сохраняли содержимое напрямую. Результат в MODX был правильный, сайт работал, но VersionX не создавал новую версию, потому что изменение обходило стандартные события сохранения. Потом эти операции переделали так, чтобы итоговое сохранение проходило через штатный процессор MODX.
Этот пример мне нравится больше длинных рассуждений о правильной архитектуре. Данные изменились, пользователь увидел нужный результат, но система целиком получила изменение не тем путём.
В нашей модульной архитектуре изменяющий инструмент в итоге вызывает платформенный слой примерно так.
$response = $context->platform()->runProcessor( $context->modx(), $this->spec['processor'], $props );
Какой конкретно процессор стоит за логической операцией в MODX 2 или MODX 3, решает адаптер, инструменту это знать не требуется. В итоге изменение проходит тем способом, который понимает сама CMS, с её событиями, процессорами и поведением установленных компонентов. Именно здесь предметный MCP становится чем‑то большим, чем удобный набор удалённых команд.
Что получилось на сегодняшний день
Текущая общая ветка называется MODX MCP и опубликована под лицензией MIT. Из одного дерева исходников собираются версии для MODX Revolution 2.8.x и 3.x, MCP‑клиент и публичный набор действий остаются общими, различия платформ вынесены в адаптеры.
На момент подготовки статьи все 182 зарегистрированных действия переведены на модульную среду выполнения. MODX 3 уже прошёл проверку на боевом сайте. Для MODX 2 основные сценарии сначала прогнали на тестовой установке, сейчас компонент подключён уже к нескольким продакшенам. Дальше там неизбежно будут вылезать те пограничные случаи, которые никакой тестовый стенд заранее не показывает. Но мы к этому готовы.
Сам компонент я оставил открытым. Это кажется честным хотя бы потому, что проект вырос из чужого open source, а значительная часть универсальной работы полезна не только нашей инфраструктуре. Над компонентом продолжается активная работа, он развивается вместе с реальными задачами и новыми сайтами.
Сейчас готовим компонент к публикации в официальном каталоге MODX Extras и на modstore.pro. Планируем разместить его там в ближайшее время, чтобы пакет можно было получать привычным для разработчиков MODX способом.
При этом MODX MCP это именно предметный интерфейс к CMS, а не вся система целиком. В рабочем контуре рядом остаются SSH, браузер, файловые инструменты и закрытая серверная часть. Если проблема находится в SCSS, конфигурации веб‑сервера или PHP‑файле, нет никакого смысла изображать, что MCP должен решить всё на свете.
Серверную часть мы публиковать пока не планируем. Она слишком сильно зависит от нашего окружения, серверов, правил работы и того, как устроена конкретная команда. Отдельные механизмы покажу во второй статье, потому что именно там появляется следующий вопрос, как разрешить агенту менять боевые сайты так, чтобы потом не пришлось героически их спасать.
Что я из этого вынес
Начиналось всё с желания перестать таскать руками код между MODX и ChatGPT. В процессе выяснилось, что дать агенту технический доступ к сайту довольно просто. Гораздо интереснее решить, какую картину сайта он при этом видит.
Если дать только файлы, он будет мыслить файлами. Если дать таблицы, он будет видеть таблицы. Если сама система состоит из ресурсов, шаблонов, сущностей и связей, имеет смысл сохранить эту предметную модель и в интерфейсе для ИИ.
MODX здесь только конкретный пример. В WordPress сущности будут называться по‑другому, в CRM или собственной системе тоже, но принцип остаётся тем же. Чем сложнее система, тем полезнее дать агенту интерфейс, который сохраняет смысл самой системы, а не только низкоуровневый доступ к её данным.
На первом боевом тесте мы всего лишь сделали фон красным и увеличили заголовок. Через некоторое время из этого выросла общая архитектура для двух поколений MODX и рабочий инструмент. Вместе с ним появился следующий вопрос, что вообще можно разрешать агенту менять самостоятельно и как сделать эти изменения контролируемыми и обратимыми.
Во второй части (а их планируется три) расскажу о блокировках, резервных копиях, откате, оценке риска и о том, что пришлось построить вокруг MCP, прежде чем я решился спокойно сказать агенту «исправляй».
Комментарии (10)

yosora
03.10.2026 13:35Интересно конечно, до этого не слышал про MODX, разве лучше Тильды? Не особо силён в направлении создания сайтов, обычно открыл ide и делаю

gevals
03.10.2026 13:35Modx имеет свои плюсы и минусы.. Вот бы наконец-то кто-то довел до ума хоть одну сборку на нем..

rumataestor Автор
03.10.2026 13:35У разработчиков, которые давно работают с MODX, свои сборки, конечно, обычно есть. У нас в студии тоже есть такая. Обычный коммерческий сайт со стандартным набором блоков можно развернуть на сервере минут за 10–15. Там уже есть базовая структура, первый экран, плитки услуг или товаров, формы обратной связи, типовые страницы, основные настройки и вся та скучная, но необходимая обвязка, которую в сотый раз собирать руками уже никакого удовольствия нет. Если Вы об этом.
Но сделать одну супер-универсальную сборку, которую можно поставить вообще всем, по-моему, невозможно. Проекты слишком разные. Где-то каталог, где-то услуги, где-то куча TV, где-то интеграции, где-то половина стандартных блоков вообще не нужна. Если пытаться запихнуть всё в одну сборку «на все случаи жизни», довольно быстро получается сарай, в котором вроде есть всё, но потом ещё полдня ищешь, что из этого можно снести.
Поэтому мы сейчас скорее смотрим в сторону хорошей базовой сборки плюс агент. База быстро даёт нормальную стартовую точку, а дальше уже человек выбирает, что ему нужно именно в этом проекте. Какой первый экран, какие карточки, какие формы, какие блоки вообще нужны. А агент уже разбирается с конкретным сайтом и его архитектурой, а не пытается натянуть одну универсальную заготовку на всех подряд.
То есть хорошая сборка, на мой взгляд, нужна обязательно. Просто веры в «одну идеальную сборку для всех» у меня примерно столько же, сколько в универсальное ТЗ на любой сайт. Обычно где-то на третьем проекте оно начинает мстить.

gevals
03.10.2026 13:35Да просто люди порой продают порой некие сборки, да еще якобы затачивают под seo, а на деле недоработанный колхоз.
Ясно дело, невыгодно чётко нормально сделанную подходящую под 90% базовых случаев выкладывать свободно, я вот так даже купил одну, все равно полуфабрикат. Чаще всего разработчики не очень понимают реалии, так как не продают услуги и товары, в продают только сайты ))
Сейчас конечно с силами ИИ, мне кажется это все может стать менее актуальным, хотя кто знает...
Модх все же больше для относильно небольших сайтов, потому и хотелось найти что то более менее универсальное. Интернет-магазины, например, как ни крути, это отдельная сущность, если конечно речь не идет о магазине на 20 товаров.

rumataestor Автор
03.10.2026 13:35Про «сборку, заточенную под SEO» у меня сразу лёгкая аллергия. Факторы ранжирования и требования поисковиков меняются постоянно. То, что полгода назад было важно, сегодня уже можно забыть. А год назад никто не думал про попадание в ответы ИИ, сейчас этим торгуют из каждого второго утюга.
Поэтому в сборку имеет смысл закладывать хорошую техническую базу: индексацию, canonical, sitemap, schema.org, скорость, нормальную архитектуру, отсутствие дублей. В общем, всё, что нужно, чтобы не начинать каждый новый проект с вопроса «а где скачать MODX?». А дальше уже начинается конкретный сайт. Со своими задачами и своей болью.
Про разработчиков согласен. Хороший разработчик должен понимать не только MODX, но и бизнес клиента. Иначе технически всё может быть красиво, а по факту сайт не решает его задачи.
С интернет-магазинами я бы MODX тоже не хоронил. Видел магазин на miniShop2 с 20+ тысячей товаров, оплатой через Альфа-Банк и Сбер и нормальной интеграцией всего этого хозяйства. Работал отлично.
А вот про ИИ вы хорошую мысль подкинули. Похоже, нам нужен ещё один слой — бизнес-контекст. Что продаёт клиент, кто его покупатель, какие у него процессы, что для него важнее и что он, в конце концов, любит зелёный цвет.
Тогда получается нормальная схема: базовая сборка, технический контекст проекта и бизнес-контекст клиента. А агент уже быстро собирает из этого не «универсальный сайт», а сайт под конкретного человека. Вот тут MODX как раз очень к месту: по сути это гибкий фреймворк с человеческой админкой сверху.

gevals
03.10.2026 13:35сборка заточенная под SEO- конечно без фанатизма, никто не знает и знать не может идеального для SEO, тут скорей всего имеется ввиду вот что:
1) без откровенных косяков - а таких полно..с их наличием вообще замучаешься сайт продвигать ( некие такие грабли- начиная от условно неверного robots.txt и кончая косяками с 404 и другими редиректами и дублями страниц)
2) заточенную скорей адаптированную- чтобы легко можно было title description прописывать и без кучи мусорного кода, с возможностями микроразметки.. часто на это все плевать хотели..
по сути вы про это и написали- как про техническую базу..
rumataestor Автор
03.10.2026 13:35Да, примерно так. И дело тут даже не в MODX — думаю, на любой CMS со временем у каждого собирается свой набор инструментов, любимых компонентов, плагинов и своих же проверенных граблей.
Я свою сборку делал руками и знаю её наизусть. Если меня ночью разбудить и сказать: «Вот тут что-то поехало», я в 99% случаев хотя бы сразу понимаю, куда лезть и что смотреть. И, по-моему, в этом главный смысл: не в мифической «идеальной SEO-оптимизации», а в том, что база тебе знакома, предсказуема и ты знаешь все её тараканы по именам.
lacost21
Я думал это говно мамонта уже не используют
rumataestor Автор
MODX можно любить, можно не любить, можно даже считать «говном мамонта» — тут дело вкуса. Его, кстати, до сих пор вполне используют. Но статья вообще не про то, какая CMS лучше.
Смысл как раз в другом: дать ИИ не тупой доступ к файлам и базе, а предметный интерфейс конкретной системы, чтобы он понимал её сущности и связи между ними. У нас этим примером стал MODX, потому что мы с ним работаем.
Работаете с WordPress — поставьте или сделайте такой же коннектор к WordPress и работайте с постами, таксономиями, плагинами и настройками WordPress. Для Drupal, Bitrix или своей CMS идея будет ровно той же.