Вайбкодинг на InstantCMS c instantCMS MCP Server

+17
886
Вайбкодинг на InstantCMS c instantCMS MCP Server

MCP (Model Context Protocol) — открытый протокол от Anthropic, который позволяет AI-ассистентам (Claude, Cursor, Cline и др.) вызывать внешние инструменты прямо в процессе диалога. Вместо того чтобы объяснять LLM как устроен InstantCMS, MCP-сервер передаёт ей точные данные: структуры файлов, API классов, хуки с параметрами, готовые примеры кода.

Зачем это нужно?

Разработка дополнений для InstantCMS 2 требует знания многих соглашений:

  • Где лежат файлы контроллеров, шаблонов, языковых файлов
  • Как называть классы (class modelMyAddon extends cmsModel)
  • Какие хуки существуют и какие параметры они принимают
  • Как использовать API cmsModel, cmsTemplate, cmsRequest, cmsCache
  • Как оформить пакет для установки через менеджер пакетов

Без MCP-сервера LLM либо галлюцинирует (придумывает несуществующие методы), либо требует, чтобы разработчик постоянно копировал документацию в чат. InstantCMS MCP Server решает обе проблемы — AI получает точные данные по запросу, не занимая контекстное окно.

Что умеет сервер

Сервер предоставляет 12 инструментов и 4 ресурса.

Инструменты (Tools)

ИнструментЧто делает
  1. scaffold_addon
Генерирует все файлы нового дополнения по параметрам
  1. get_addon_structure
Возвращает структуру файлов для выбранного типа дополнения
  1. list_hooks
Список всех 90+ хуков с фильтрацией по категории и типу
  1. get_hook_details
Детали конкретного хука: параметры, возвращаемый тип, пример кода
  1. search_hooks
Поиск хуков по описанию на русском языке
  1. get_component_api
API классов: cmsModel, cmsTemplate, cmsRequest, cmsCache, cmsEventsManager
  1. list_components
Список всех задокументированных компонентов
  1. validate_addon
Проверка корректности структуры дополнения
  1. get_field_types
Типы полей форм: fieldString, fieldList, fieldImage и др.
  1. get_code_example
Готовые примеры: пагинация, AJAX, кэширование, хуки, загрузка файлов
  1. scaffold_template
Генерирует скаффолд темы (шаблона)
  1. get_template_structure
Структура шаблона, доступные переменные .tpl.php

Ресурсы (Resources)

РесурсURI
Все хуки
  1. instantcms://hooks/all
Все компоненты
  1. instantcms://components/all
Типы дополнений
  1. instantcms://addon/types
Быстрый старт
  1. instantcms://quickstart

Примеры использования

Создать дополнение с нуля

Достаточно написать в чате:

«Создай дополнение latest_news — лента последних новостей с виджетом для главной страницы»

AI вызовет scaffold_addon и получит готовый код всех файлов. Структура сгенерированного пакета:

  1. package/
  2. ├── manifest.ru.ini
  3. ├── install.sql
  4. └── system/
  5. ├── controllers/latest_news/
  6. │ ├── frontend.php
  7. │ ├── model.php
  8. │ ├── actions/
  9. │ │ ├── index.php
  10. │ │ └── view.php
  11. │ └── widgets/list/
  12. │ ├── widget.php
  13. │ └── options.form.php
  14. └── languages/ru/controllers/latest_news/
  15. └── latest_news.php
  16.  
  17. templates/default/controllers/latest_news/
  18. ├── index.tpl.php
  19. ├── view.tpl.php
  20. └── widgets/list/list.tpl.php

Найти нужный хук

«Какой хук срабатывает когда пользователь регистрируется?»

AI вызывает search_hooks с запросом «регистрация пользователя» и получает:

  1. {
  2. "name": "user_registered",
  3. "category": "users",
  4. "type": "action",
  5. "description": "Срабатывает после успешной регистрации пользователя",
  6. "params": { "user_id": "int — ID нового пользователя" }
  7. }

Детали и пример реализации хука

«Покажи пример реализации хука content_after_add_approve»

AI вызывает get_hook_details и возвращает готовый PHP-код:

  1. <?php
  2. // hooks/content_after_add_approve.php
  3.  
  4. class onMyAddonContentAfterAddApprove extends cmsAction {
  5.  
  6. public function run($data) {
  7. $content_id = $data['id'];
  8. $ctype = $data['ctype'];
  9. $item = $data['item'];
  10.  
  11. // Ваша логика &mdash; например, отправить уведомление
  12.  
  13. return $data; // обязательно
  14. }
  15.  
  16. }

API модели

«Как отфильтровать записи по нескольким условиям в cmsModel?»

AI вызывает get_component_api для cmsModel и получает полный список методов с примерами:

  1. <?php
  2. // Цепочка фильтров
  3. $items = $this->model
  4. ->filterEqual('is_pub', 1)
  5. ->filterEqual('ctype', 'news')
  6. ->orderBy('date_pub', 'desc')
  7. ->limitPage($page, $perpage)
  8. ->get('content_items');
  9.  
  10. // Получить одну запись
  11. $item = $this->model->getItem($id);
  12.  
  13. // Сохранить
  14. $id = $this->model->addItem('my_table', $data);
  15. $this->model->updateItem('my_table', $id, $data);

Список с пагинацией

«Покажи как сделать список с пагинацией»

AI вызывает get_code_example и возвращает готовый блок:

  1. <?php
  2. // actions/index.php
  3. class actionMyAddonIndex extends cmsAction {
  4.  
  5. public function run() {
  6. $page = $this->request->get('page', 1);
  7. $perpage = $this->options['perpage'] ?? 10;
  8.  
  9. $total = $this->model->filterEqual('is_pub', 1)->count('myaddon_items');
  10. $items = $this->model
  11. ->filterEqual('is_pub', 1)
  12. ->orderBy('date_add', 'desc')
  13. ->limitPage($page, $perpage)
  14. ->get('myaddon_items');
  15.  
  16. return $this->cms_template->render('index', [
  17. 'items' => $items,
  18. 'total' => $total,
  19. 'page' => (int) $page,
  20. 'perpage' => (int) $perpage,
  21. ]);
  22. }
  23.  
  24. }
  1. <!-- index.tpl.php &mdash; вывод пагинации -->
  2. <?php if ($total > $perpage): ?>
  3. <div class="pagination">
  4. <?= cmsCore::getController('system')->getPagination($total, $page, $perpage, '/myaddon/') ?>
  5. </div>
  6. <?php endif; ?>

Установка

Требования: Node.js 18+, npm.

  1. # 1. Клонировать репозиторий
  2. git clone https://github.com/your-username/instantcms-mcp.git
  3. cd instantcms-mcp
  4.  
  5. # 2. Установить зависимости
  6. npm install
  7.  
  8. # 3. Собрать проект
  9. npm run build
  10.  
  11. # Готово &mdash; запуск: node dist/index.js

Подключение к AI-инструментам

MCP-сервер работает через stdio transport — запускается как дочерний процесс AI-инструмента. Никакого отдельного сервера держать запущенным не нужно.

Claude Code (CLI)

  1. # Добавить глобально
  2. claude mcp add instantcms node /абсолютный/путь/к/instantcms-mcp/dist/index.js
  3.  
  4. # Или только для текущего проекта
  5. claude mcp add --scope project instantcms node /абсолютный/путь/к/instantcms-mcp/dist/index.js
  6.  
  7. # Проверить подключение
  8. claude mcp list

Claude Desktop

Откройте файл конфигурации:

  • macOS:
    1. ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:
    1. %APPDATA%\Claude\claude_desktop_config.json

Добавьте блок mcpServers:

  1. {
  2. "mcpServers": {
  3. "instantcms": {
  4. "command": "node",
  5. "args": ["/абсолютный/путь/к/instantcms-mcp/dist/index.js"]
  6. }
  7. }
  8. }

Перезапустите Claude Desktop. В интерфейсе появится иконка молотка — значит MCP-сервер подключён.

Cursor

Откройте Cursor Settings → MCP → Add new MCP server или отредактируйте ~/.cursor/mcp.json:

  1. {
  2. "mcpServers": {
  3. "instantcms": {
  4. "command": "node",
  5. "args": ["/абсолютный/путь/к/instantcms-mcp/dist/index.js"]
  6. }
  7. }
  8. }

Перезапустите Cursor. В режиме Agent (Composer → Cmd+I) инструменты MCP будут доступны автоматически.

Cline (расширение VSCode)

  1. Откройте VSCode → расширение Cline → иконка настроек (⚙) → MCP Servers
  2. Нажмите Edit MCP Settings
  3. Добавьте в открывшийся JSON:
  1. {
  2. "mcpServers": {
  3. "instantcms": {
  4. "command": "node",
  5. "args": ["/абсолютный/путь/к/instantcms-mcp/dist/index.js"],
  6. "disabled": false,
  7. "autoApprove": []
  8. }
  9. }
  10. }

Сохраните файл — Cline подхватит изменения автоматически.

OpenCode

Откройте или создайте файл ~/.config/opencode/config.json:

  1. {
  2. "mcp": {
  3. "servers": {
  4. "instantcms": {
  5. "command": "node",
  6. "args": ["/абсолютный/путь/к/instantcms-mcp/dist/index.js"],
  7. "env": {}
  8. }
  9. }
  10. }
  11. }

Запустите opencode в папке проекта — инструменты будут доступны автоматически.

Как убедиться, что всё работает

Напишите в чате любого из инструментов:

«Покажи список хуков InstantCMS категории users»

Если MCP-сервер подключён, AI вызовет list_hooks и выведет список хуков. Если нет — ответит по памяти (и может ошибиться).

Как обновлять сервер

После изменений в исходном коде достаточно пересобрать проект:

  1. cd /путь/к/instantcms-mcp
  2. npm run build
  • Claude Code: изменения подхватываются при следующем запросе
  • Claude Desktop / Cursor: перезапустить приложение
  • Cline: перезагрузить окно VSCode (Cmd+Shift+P → Reload Window)

Типы дополнений

При вызове scaffold_addon можно указать тип:

ТипОписание
  1. basic
Только фронтенд: контроллер + модель + экшены
  1. with_admin
+ Панель администратора с CRUD (backend.php, grids, forms)
  1. with_hooks
+ Обработчики событий системы (hooks/)
  1. with_routes
+ Кастомная маршрутизация URL (routes.php)
  1. with_widget
+ Виджет для размещения на главной странице

Категории хуков

Сервер содержит хуки по 20+ категориям:

engine · content · users · comments · wall · messages · groups · activity · photos · images · forms · admin · template · search · sitemap · rss · cron · subscriptions · rating · moderation · controllers

Пример поиска:

  1. search_hooks("после публикации материала")
  2. &rarr; content_after_add_approve, content_after_update_approve

Скачать можно из репозитория github.com/maxisoft-git/instantcms-mcp

Присоединяйтесь к нам будет много интересного и сможете оперативно узнать что то новое

07.03.2026  Сервер дополнен новыми примерами с правилами, что обеспечить еще большую точность и правильность в разработке кода.

0
Clear Clear 1 месяц назад #

Класс. )) Что тут скажешь. А что со скилами ?

+3
maxisoft maxisoft 1 месяц назад #

это еще одна итерация, развития. В работе создание RAG системы для ИИ чтобы можно было быстрее находить нужную информацию. С разрешения Игоря система будет обучаться и создаваться на даных с официального сайта, без учета персональных данных.

+1
Clear Clear 1 месяц назад #

Ты просто крассавчег )). Ну пушка же в процессе )))

+3
maxisoft maxisoft 1 месяц назад #

скилы тоже хочу собрать под инстант. НО пока не могу определиться какие нужны для старта

0
dChirkis dChirkis 1 месяц назад #

Мощно задвинул, внушает 💪 👍

+3
Clear Clear 1 месяц назад #

Чувствую в ближайшем будущем глобальное развитие CMS )

+1
dChirkis dChirkis 1 месяц назад #

Как сервер поставить себе в локаль? Докер?  У меня Proxmox развернут, готов нагрузить его

+1
Clear Clear 1 месяц назад #

Я думаю нужно тему на форуме создать. Тут не удобно ))

+1
maxisoft maxisoft 1 месяц назад #

можно в докере вообще то нужен только nodejs так как я верстаю и разработку ботов делаю и пищу проекты на nodejs он стоит у меня найтивно поэтому думаю можно поставить найтивно и просто скопировать папку в нужное место подключить в редактору и все

+5
maxisoft maxisoft 1 месяц назад #

да забыл написать все будет бесплатно, на благо развития сообщества и возможно это даст толчок для появления новых разработок.

+1
Дима 1С Дима 1С 1 месяц назад #

Вот тогда просто кинул немного тебе на карту, в виде поощрений

+2
Litemir Litemir 1 месяц назад #

Я прочитал, то, что было сгенерировано, а почему, AI — не упомянуло о том, как удалить компонент. Я просмотрел много компонентов, но не в одном нет полного удаления файлов. Вопрос почему? Это не так важно, или просто не охото доп. код писать! Я уверен, что многие просто кликают, удалить и на этом этапе, стопе))). Хотя в документации есть частичное описание как это сделать. 

0
maxisoft maxisoft 1 месяц назад #

о каком компоненте идет речь? про какое удаление вы спрашиваете? я просто не совсем понимаю к какой части идет вопрос к тому почему сервер не отдает такую информацию ?

0
Litemir Litemir 1 месяц назад #

Я не много отдалился от Вашей темы. И обобщил свой комментарий. И по поводу сервера, вы где-то разместили репозиторий? 

+3
maxisoft maxisoft 1 месяц назад #

Я с вами согласен что при удалении компонентов не все файлы которые ставятся при установке удаляются и тем самым замусоривают систему. НО это как бы тема для другого общения. Репозиторий сделал ссылку прописал в посте.

0
Алексей Т Алексей Т 1 месяц назад #

Действительно удобно- спасибо!

0
Алексей Т Алексей Т 1 месяц назад #

Почти внедрил Формат данных Nordic + рендер в InstantCMS
Идея: Хранить в InstantCMS те же сущности (страницы, блоки в формате Nordic), а отображение делать на стороне сервера через шаблоны InstantCMS. Класс.

+1
maxisoft maxisoft 1 месяц назад #

Обновил правила сервера, стал еще более правильно генерировать код. Следуюшим этапом научить собирать правильную структуру шаблона, возможно получиться и заставить делать шаблоны.

+2
maxisoft maxisoft 1 месяц назад #

очередное обновление теперь сервер может собирать схемы для шаблонов на автомате чтобы не создавать их в ручную 

Изображение

0
Алексей Т Алексей Т 1 месяц назад #

Спасибо большое уже пользуюсь во всю. Большая работа сделана.

0
Дима 1С Дима 1С 1 месяц назад #

еще бы сам портировал шаблон — тогда вообще все мои мечты сбудутся) 

0
Алексей Т Алексей Т 1 месяц назад #

портировал шаблон это как по русски пожалуйста

0
maxisoft maxisoft 1 месяц назад #

это когда ты кинул например картинку или html а на выходе который шаблон для инстанта

0
maxisoft maxisoft 24 дня назад #

Если кто то захочет поддержать данную разработку и дальнейшее ее развитие, могут это сделать тут Поддержать разработчика

0
Максим Максим 22 дня назад #

Не получается поддержать. При нажатии  купить, всплывает модалка «Ошибка платёжной системы: Failed to execute 'json' on 'Response': Unexpected end of JSON input. Пожалуйста, попробуйте позже или свяжитесь с поддержкой.» 

0
maxisoft maxisoft 22 дня назад #

Да была проблема с онлайн ККМ кассой, уже все исправили

0
vladimird vladimird 20 дней назад #

Это аналогичный компонет, как это instantcms.ru/addons/comgen.html   ?
Просто хочу компонент RSS сделать для себя. Но не пойму, каким инструментом воспользоваться. Тяжелова-то для понимания, с чего могу начать.

+1
maxisoft maxisoft 20 дней назад #

Нет это разные вещи, instantcms.ru/addons/comgen.html — это просто комопонет который создает каркас для ускорения разработки, а у меня это немного другой инструмент это так скажем помощник для ИИ агентов чтобы правильно все сделать и написать полноценный компонент с логикой и прочим.

Еще от автора

iPush - push-уведомления (обновление)
Обновление компонента
instantCMS MCP Server - обновление
Обновление функционала
Cookies UTM — модуль сохранения UTM-меток в cookies
Cookies UTM — это лёгкий модуль для сайта, который автоматически сохраняет UTM-метки из URL в cookies браузера пользователя.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.