Почему MCP теперь мультисайтовый
Раньше один MCP-процесс в Cursor был привязан к одному хосту: один CMS_URL, один токен, один сайт. Это нормально для первого production, но ломается, как только у вас появляются два живых инстанса — например официальный сайт продукта и портфолио на той же платформе.
Multi-site MCP решает именно это: один агент, несколько установок Jasefly. Не multi-tenant база внутри одного сайта, а оркестрация нескольких независимых хостов из одного MCP-сервера.
Зачем это нужно
- Контент и релизы на
jasefly.comиiia3uk.ruбез второго Cursor-агента. - Одинаковый набор инструментов (
cms_site_map,cms_release, модули) с явным выборомsite. - Секреты остаются в
mcp-cms/.env, а не в коде и не в чате.
Как устроено
Источник правды для списка сайтов — только переменные окружения:
CMS_SITES=jasefly,iia3uk
CMS_SITE_JASEFLY_URL=https://jasefly.com
CMS_SITE_JASEFLY_TOKEN=…
CMS_SITE_JASEFLY_RUNTIME=php-shared
CMS_SITE_JASEFLY_DEPLOYMENT=shared
CMS_SITE_IIA3UK_URL=https://iia3uk.ru
CMS_SITE_IIA3UK_TOKEN=…
Файл sites.js — парсер env, а не каталог доменов. Добавить хост = править .env и перезапустить MCP. Никогда не «регистрируйте» сайт правкой исходников MCP.
Правила агента
- Сначала
cms_sites— список id/alias/доменов без токенов. - Если сайтов ≥ 2 и пользователь не сказал куда — спросить, не угадывать.
- В каждый remote-tool передавать
site: id, alias или домен. - Нет fan-out «залить на всех»: один вызов → один хост.
- Опасные операции по-прежнему с
confirm: true.
Что меняется на практике
Деплой выглядит так:
cms_sites
→ cms_release({ summary: "…", changes: ["…"], site: "jasefly" })
→ cms_release({ summary: "…", changes: ["…"], site: "iia3uk" })
Троттлинг, кэш GET и hosting guard работают per site. Агент не долбит два хоста одним списком запросов.
Чего multi-site MCP не делает
Это не общая БД и не «мультитенант из коробки». Каждый сайт — своя установка, свой токен, свой runtime (php-shared или node-vps). MCP только даёт одному оператору (человеку или агенту) единый пульт.
Итог
Multi-site появился не ради маркетинга, а потому что один продукт уже живёт на нескольких хостах. Один агент, явный site, секреты в env — меньше хаоса и меньше случайных деплоев «не туда».