
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)
| Инструмент | Что делает |
|---|---|
| Генерирует все файлы нового дополнения по параметрам |
| Возвращает структуру файлов для выбранного типа дополнения |
| Список всех 90+ хуков с фильтрацией по категории и типу |
| Детали конкретного хука: параметры, возвращаемый тип, пример кода |
| Поиск хуков по описанию на русском языке |
| API классов: cmsModel, cmsTemplate, cmsRequest, cmsCache, cmsEventsManager |
| Список всех задокументированных компонентов |
| Проверка корректности структуры дополнения |
| Типы полей форм: fieldString, fieldList, fieldImage и др. |
| Готовые примеры: пагинация, AJAX, кэширование, хуки, загрузка файлов |
| Генерирует скаффолд темы (шаблона) |
| Структура шаблона, доступные переменные .tpl.php |
Ресурсы (Resources)
| Ресурс | URI |
|---|---|
| Все хуки |
|
| Все компоненты |
|
| Типы дополнений |
|
| Быстрый старт |
|
Примеры использования
Создать дополнение с нуля
Достаточно написать в чате:
«Создай дополнение latest_news — лента последних новостей с виджетом для главной страницы»
AI вызовет scaffold_addon и получит готовый код всех файлов. Структура сгенерированного пакета:
package/ ├── manifest.ru.ini ├── install.sql └── system/ ├── controllers/latest_news/ │ ├── frontend.php │ ├── model.php │ ├── actions/ │ │ ├── index.php │ │ └── view.php │ └── widgets/list/ │ ├── widget.php │ └── options.form.php └── languages/ru/controllers/latest_news/ └── latest_news.php templates/default/controllers/latest_news/ ├── index.tpl.php ├── view.tpl.php └── widgets/list/list.tpl.php
Найти нужный хук
«Какой хук срабатывает когда пользователь регистрируется?»
AI вызывает search_hooks с запросом «регистрация пользователя» и получает:
{ "name": "user_registered", "category": "users", "type": "action", "description": "Срабатывает после успешной регистрации пользователя", "params": { "user_id": "int — ID нового пользователя" } }
Детали и пример реализации хука
«Покажи пример реализации хука content_after_add_approve»
AI вызывает get_hook_details и возвращает готовый PHP-код:
<?php // hooks/content_after_add_approve.php class onMyAddonContentAfterAddApprove extends cmsAction { public function run($data) { $content_id = $data['id']; $ctype = $data['ctype']; $item = $data['item']; // Ваша логика — например, отправить уведомление return $data; // обязательно } }
API модели
«Как отфильтровать записи по нескольким условиям в cmsModel?»
AI вызывает get_component_api для cmsModel и получает полный список методов с примерами:
<?php // Цепочка фильтров $items = $this->model ->filterEqual('is_pub', 1) ->filterEqual('ctype', 'news') ->orderBy('date_pub', 'desc') ->limitPage($page, $perpage) ->get('content_items'); // Получить одну запись $item = $this->model->getItem($id); // Сохранить $id = $this->model->addItem('my_table', $data); $this->model->updateItem('my_table', $id, $data);
Список с пагинацией
«Покажи как сделать список с пагинацией»
AI вызывает get_code_example и возвращает готовый блок:
<?php // actions/index.php class actionMyAddonIndex extends cmsAction { public function run() { $page = $this->request->get('page', 1); $perpage = $this->options['perpage'] ?? 10; $items = $this->model ->filterEqual('is_pub', 1) ->orderBy('date_add', 'desc') ->limitPage($page, $perpage) ->get('myaddon_items'); return $this->cms_template->render('index', [ 'items' => $items, 'total' => $total, 'page' => (int) $page, 'perpage' => (int) $perpage, ]); } }
<!-- index.tpl.php — вывод пагинации --> <?php if ($total > $perpage): ?> <div class="pagination"> <?= cmsCore::getController('system')->getPagination($total, $page, $perpage, '/myaddon/') ?> </div> <?php endif; ?>
Установка
Требования: Node.js 18+, npm.
# 1. Клонировать репозиторий git clone https://github.com/your-username/instantcms-mcp.git cd instantcms-mcp # 2. Установить зависимости npm install # 3. Собрать проект npm run build # Готово — запуск: node dist/index.js
Подключение к AI-инструментам
MCP-сервер работает через stdio transport — запускается как дочерний процесс AI-инструмента. Никакого отдельного сервера держать запущенным не нужно.
Claude Code (CLI)
# Добавить глобально claude mcp add instantcms node /абсолютный/путь/к/instantcms-mcp/dist/index.js # Или только для текущего проекта claude mcp add --scope project instantcms node /абсолютный/путь/к/instantcms-mcp/dist/index.js # Проверить подключение claude mcp list
Claude Desktop
Откройте файл конфигурации:
- macOS:
- ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
- %APPDATA%\Claude\claude_desktop_config.json
Добавьте блок mcpServers:
{ "mcpServers": { "instantcms": { "command": "node", "args": ["/абсолютный/путь/к/instantcms-mcp/dist/index.js"] } } }
Перезапустите Claude Desktop. В интерфейсе появится иконка молотка — значит MCP-сервер подключён.
Cursor
Откройте Cursor Settings → MCP → Add new MCP server или отредактируйте ~/.cursor/mcp.json:
{ "mcpServers": { "instantcms": { "command": "node", "args": ["/абсолютный/путь/к/instantcms-mcp/dist/index.js"] } } }
Перезапустите Cursor. В режиме Agent (Composer → Cmd+I) инструменты MCP будут доступны автоматически.
Cline (расширение VSCode)
- Откройте VSCode → расширение Cline → иконка настроек (⚙) → MCP Servers
- Нажмите Edit MCP Settings
- Добавьте в открывшийся JSON:
{ "mcpServers": { "instantcms": { "command": "node", "args": ["/абсолютный/путь/к/instantcms-mcp/dist/index.js"], "disabled": false, "autoApprove": [] } } }
Сохраните файл — Cline подхватит изменения автоматически.
OpenCode
Откройте или создайте файл ~/.config/opencode/config.json:
{ "mcp": { "servers": { "instantcms": { "command": "node", "args": ["/абсолютный/путь/к/instantcms-mcp/dist/index.js"], "env": {} } } } }
Запустите opencode в папке проекта — инструменты будут доступны автоматически.
Как убедиться, что всё работает
Напишите в чате любого из инструментов:
«Покажи список хуков InstantCMS категории users»
Если MCP-сервер подключён, AI вызовет list_hooks и выведет список хуков. Если нет — ответит по памяти (и может ошибиться).
Как обновлять сервер
После изменений в исходном коде достаточно пересобрать проект:
cd /путь/к/instantcms-mcp npm run build
- Claude Code: изменения подхватываются при следующем запросе
- Claude Desktop / Cursor: перезапустить приложение
- Cline: перезагрузить окно VSCode (Cmd+Shift+P → Reload Window)
Типы дополнений
При вызове scaffold_addon можно указать тип:
| Тип | Описание |
|---|---|
| Только фронтенд: контроллер + модель + экшены |
| + Панель администратора с CRUD (backend.php, grids, forms) |
| + Обработчики событий системы (hooks/) |
| + Кастомная маршрутизация URL (routes.php) |
| + Виджет для размещения на главной странице |
Категории хуков
Сервер содержит хуки по 20+ категориям:
engine · content · users · comments · wall · messages · groups · activity · photos · images · forms · admin · template · search · sitemap · rss · cron · subscriptions · rating · moderation · controllers
Пример поиска:
search_hooks("после публикации материала") → content_after_add_approve, content_after_update_approve
Скачать можно из репозитория github.com/maxisoft-git/instantcms-mcp
Присоединяйтесь к нам будет много интересного и сможете оперативно узнать что то новое
07.03.2026 Сервер дополнен новыми примерами с правилами, что обеспечить еще большую точность и правильность в разработке кода.



Класс. )) Что тут скажешь. А что со скилами ?
это еще одна итерация, развития. В работе создание RAG системы для ИИ чтобы можно было быстрее находить нужную информацию. С разрешения Игоря система будет обучаться и создаваться на даных с официального сайта, без учета персональных данных.
Ты просто крассавчег )). Ну пушка же в процессе )))
скилы тоже хочу собрать под инстант. НО пока не могу определиться какие нужны для старта
Мощно задвинул, внушает 💪 👍
Чувствую в ближайшем будущем глобальное развитие CMS )
Как сервер поставить себе в локаль? Докер? У меня Proxmox развернут, готов нагрузить его
Я думаю нужно тему на форуме создать. Тут не удобно ))
можно в докере вообще то нужен только nodejs так как я верстаю и разработку ботов делаю и пищу проекты на nodejs он стоит у меня найтивно поэтому думаю можно поставить найтивно и просто скопировать папку в нужное место подключить в редактору и все
да забыл написать все будет бесплатно, на благо развития сообщества и возможно это даст толчок для появления новых разработок.
Вот тогда просто кинул немного тебе на карту, в виде поощрений
Я прочитал, то, что было сгенерировано, а почему, AI — не упомянуло о том, как удалить компонент. Я просмотрел много компонентов, но не в одном нет полного удаления файлов. Вопрос почему? Это не так важно, или просто не охото доп. код писать! Я уверен, что многие просто кликают, удалить и на этом этапе, стопе))). Хотя в документации есть частичное описание как это сделать.
о каком компоненте идет речь? про какое удаление вы спрашиваете? я просто не совсем понимаю к какой части идет вопрос к тому почему сервер не отдает такую информацию ?
Я не много отдалился от Вашей темы. И обобщил свой комментарий. И по поводу сервера, вы где-то разместили репозиторий?
Я с вами согласен что при удалении компонентов не все файлы которые ставятся при установке удаляются и тем самым замусоривают систему. НО это как бы тема для другого общения. Репозиторий сделал ссылку прописал в посте.
Действительно удобно- спасибо!
Почти внедрил Формат данных Nordic + рендер в InstantCMS
Идея: Хранить в InstantCMS те же сущности (страницы, блоки в формате Nordic), а отображение делать на стороне сервера через шаблоны InstantCMS. Класс.
Обновил правила сервера, стал еще более правильно генерировать код. Следуюшим этапом научить собирать правильную структуру шаблона, возможно получиться и заставить делать шаблоны.
очередное обновление теперь сервер может собирать схемы для шаблонов на автомате чтобы не создавать их в ручную
Спасибо большое уже пользуюсь во всю. Большая работа сделана.
еще бы сам портировал шаблон — тогда вообще все мои мечты сбудутся)
портировал шаблон это как по русски пожалуйста
это когда ты кинул например картинку или html а на выходе который шаблон для инстанта
Если кто то захочет поддержать данную разработку и дальнейшее ее развитие, могут это сделать тут Поддержать разработчика
Не получается поддержать. При нажатии купить, всплывает модалка «Ошибка платёжной системы: Failed to execute 'json' on 'Response': Unexpected end of JSON input. Пожалуйста, попробуйте позже или свяжитесь с поддержкой.»
Да была проблема с онлайн ККМ кассой, уже все исправили
Это аналогичный компонет, как это instantcms.ru/addons/comgen.html ?
Просто хочу компонент RSS сделать для себя. Но не пойму, каким инструментом воспользоваться. Тяжелова-то для понимания, с чего могу начать.
Нет это разные вещи, instantcms.ru/addons/comgen.html — это просто комопонет который создает каркас для ускорения разработки, а у меня это немного другой инструмент это так скажем помощник для ИИ агентов чтобы правильно все сделать и написать полноценный компонент с логикой и прочим.