Консоль отзыва продукции через ToolJet MCP: когда агент собирает internal app без React-codebase

Три режима на один внутренний инструмент: свободный codegen, MCP по контрактам платформы или «собрали v1 и забыли», и сопровождение съедает больше времени, чем старт. Для соло-разработчика с MCP-сервером в IDE урок из кейса ToolJet не в low-code как таковом, а в lint-before-write: без валидации перед записью агент размножает queries, bindings и поля, которые потом правит не он.
Почему первая версия internal app: только половина агентной работы
Авторы кейса формулируют мысль прямо: собрать первую версию внутреннего приложения, это только часть задачи. Сложнее удержать его полезным, когда меняются процесс, данные и люди вокруг. Фильтры, шаг согласования, compliance-поля, новый layout: типичные эволюционные запросы к уже работающему инструменту.
Для команд, которые гоняют Codex, Claude Code или другого coding agent через MCP, это не абстрактная философия. Сотни мелких правок по множеству internal apps быстро превращаются в сопровождение крупнее первоначальной сборки. Агент ускоряет генерацию; узкое место смещается в сопровождение.
Три экрана recall-консоли: что агент собрал из brief
Кейс про консоль реагирования на отзыв продукции (product recall) для производственной компании в Южной Австралии, а не про RAG-recall и не про абстрактный compliance-термин. Её используют quality, operations, compliance, supply-chain и customer-response.
Из brief примерно в 1 400 слов Codex через ToolJet MCP собрал демо с тремя страницами:
- Recall Command Centre: портфельные KPI (активные отзывы, units at risk, recovered units, financial exposure, completion rate), spotlight приоритетного кейса, таблица с фильтрами и поиском.
- Recall Case & Response Workspace: один кейс от Issue Detected до Closed (lots, distribution trace, stakeholder communication, response actions, root-cause, audit trail). На демо-данных, например: 18 420 affected units, 16 210 located, 13 840 quarantined, 11 920 recovered.
- Response Desk: добавлена короткой follow-up-командой «Add another relevant page with urgent actions», очередь срочных действий по всем отзывам (overdue, due today, blocked, critical).
Итоговый масштаб по автору: 10 tables, 109 seeded rows, 28 queries, 109 components, 3 pages. Стартовая инструкция агенту: «Build this application in ToolJet. Follow the attached brief, keep the data consistent across every page, and verify each phase before moving on.»
Как ToolJet MCP удерживает агента в рамках платформы
ToolJet MCP не отдаёт отдельный React-codebase. Агент вызывает API платформы ToolJet: страницы, компоненты, queries, events, layouts, ToolJet Database. Результат остаётся обычным приложением ToolJet; его можно править в visual builder и query editor (GUI/SQL).
Репозиторий: github.com/ToolJet/tooljet-mcp.
Сборка идёт фазами с обязательной валидацией:
Plan the next phase → Validate → Fix validation errors → Apply the phase → Verify the result
Перед записью фазы спецификация lintится. Успешный lint выдаёт временный token, который потребляется write-операцией. При провале фаза не записывается. Авторы приводят отклонённые ошибки: reserved SQL keyword в колонке, binding к ещё не смонтированному компоненту, action с неверным property.
Агент работает с контрактами платформы (table, container, input, query), а не изобретает свою frontend-модель на каждый запрос. Паттерн переносим на любой MCP-сервер в IDE: узкий валидированный API вместо свободного codegen.
Счётчик токенов в кейсе (approximate budget, не API bill): первый крупный ход ~190k; Page 2 и mutations ~84k; Response Desk ~51k. Снижение за счёт reuse модели данных и структуры, та же логика, что и при итерации «Add another relevant page» без нового ТЗ.
В кейсе нет Cursor, rules или skills IDE, только Codex / Claude Code как агенты. Но контур применим шире: brief → агент → пофазная сборка с lint-before-write вместо одного «сгенерируй всё»; итерация короткой командой на существующей модели данных, без переписывания brief; разделение ролей (агент для крупных фаз, ручные правки в GUI платформы для мелочей: «Once your app is ready, the next change does not have to go through Codex.»). Если ваша платформа или MCP-сервер не даёт контрактов и lint перед write, агентный цикл повторяет ту же ловушку, что и codegen: быстрый v1 и дорогое сопровождение. Проверка на практике: не «сколько строк сгенерировал Codex», а выдерживает ли приложение третью страницу и десятую правку без нового ТЗ.
Codegen против абстракций: две ставки на AI app building
Автор противопоставляет два пути:
| Путь | Суть | Trade-off в кейсе |
|---|---|---|
| Codegen-агент | Больше React/кода на выходе | Каждое приложение, отдельный codebase для поддержки |
| ToolJet MCP | Агент оперирует готовыми абстракциями платформы | Выход в модели ToolJet; поддержка через visual builder, GUI/SQL, дальнейшие MCP-итерации |
Ключевые тезисы подхода ToolJet:
- Internal tools часто живут дольше первого автора; сопровождать их будет тот, кто понимает бизнес-процесс, а не React.
- После MCP-сборки не обязательно снова звать агента: мелкий UI в visual builder, крупная фича снова через MCP, потому что агент уже «видит» структуру.
- Генерация дешевеет; maintainability при росте числа приложений становится узким местом.
Формулировка из источника: «One is to keep making the agent better at producing code. … The other option is to give the agent better abstractions to work with. ToolJet MCP follows the second approach.»
Источники
- Building a Recall Response Console With ToolJet MCP (and Examining ToolJet's Approach to AI App Building) — Dev.to, Karan Rathod for ToolJet, 14 сентября 2026; доступ 15 сентября 2026
- ToolJet MCP — репозиторий MCP; доступ 15 сентября 2026