Layero
Build, publish and run frontend sites from your IDE chat — build servers and CDN inside Russia.
What it can do
- List Design Systems: Return the catalogue of design systems Layero ships with.
- List Structures: Return the catalogue of landing structures Layero ships with.
- Compose Landing: Drive the 3-step quiz flow and produce a complete landing. This is the **main entry point**. Don't ask the user questions in chat before calling this — the tool opens native quiz dial
What data it sees
Do you need an account
No: the server works without sign-in
Build, publish and run frontend sites from your IDE chat — build servers and CDN inside Russia.
Layero is a frontend hosting and deployment platform. This MCP server covers the whole cycle, not just the first page: it turns a short brief into a complete landing (5 design systems × 6 structures), wires the form to Telegram or Google Sheets and publishes the result — then reports the state of a site, diagnoses a failed build, connects a custom domain and analytics, and compares speed before and after. Pages load fast for CIS users without a VPN. Works in Claude Code, Cursor and Codex.
Tools (16): build — list_design_systems, list_structures, compose_landing; ship — publish_landing, add_integration; operate — site_status, diagnose_deploy, check_performance; setup — env_vars, connect_domain, check_domain, list_domains; analytics — connect_analytics, site_analytics; account — whoami, my_projects.
Docs: https://docs.layero.ru/plugin/intro/
Not to be confused with Layer0 / Edgio, or with layero.com — unrelated products.
How to connect
How to connect Layero to Claude
The server address to paste into Claude settings:
https://layero--borisowvalia.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Layero to ChatGPT
The server address to paste into ChatGPT settings:
https://layero--borisowvalia.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Layero to Cursor
The server address to paste into Cursor settings:
https://layero--borisowvalia.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (16)
Raw names from tools/list. Only developers need these.
| list_design_systems | Return the catalogue of design systems Layero ships with. |
| list_structures | Return the catalogue of landing structures Layero ships with. |
| compose_landing | Drive the 3-step quiz flow and produce a complete landing. This is the **main entry point**. Don't ask the user questions in chat before calling this — the tool opens native quiz dialogs in the IDE itself. Call this immediately when the user describes what they want. The three quizzes are: 1. **Motivation** — what's being built, for whom, the desired action. 2. **Look & feel** — palette, tone, optional references. 3. **Final picks** — design system (top 3 matched), where submissions go, project name slug. Returns a ``ComposeResult`` with the file bundle to write to disk. The agent then writes the files using the IDE's filesystem tool and proceeds to integration setup / deploy. |
| add_integration | Wire form submissions into a destination. Returns the integration recipe. The agent executes the steps itself — runs terminal commands, edits files, deploys a relay if needed. |
| whoami | Кто подключён к Layero и сколько у него проектов. Вызови первым, если не уверен, что токен настроен: понятная ошибка здесь дешевле, чем на середине деплоя. |
| my_projects | Список сайтов пользователя на Layero. По умолчанию — 30 последних. Список целиком нужен редко, а вот вытеснить им половину контекста легко: у активного пользователя проектов десятки. |
| site_status | Как себя чувствует сайт: отдаётся ли он и чем кончилась сборка. `project` — id или slug. Один вызов вместо трёх (проект, деплои, живая проверка адреса): агенту нужен вывод, а не сырые данные для его составления. |
| env_vars | Переменные окружения проекта: посмотреть имена, задать, удалить. ЗНАЧЕНИЯ НЕ ЧИТАЮТСЯ — ни тобой, ни платформой в ответе. Возвращаются только имена и длины. Это не ограничение реализации, а осознанное правило: всё, что попадает в твой ответ, оседает в истории переписки, а секрет, однажды туда попавший, оттуда уже не убрать. Если пользователь спрашивает «какой у меня ключ» — честно скажи, что показать не можешь, и предложи задать новый. `set` не требует знать остальные переменные: платформа сохраняет их сама. `unset` удаляет только названные. После изменения нужен новый деплой — переменные подхватываются при сборке, а не на лету. Скажи об этом, иначе пользователь решит, что ничего не поменялось. |
| connect_analytics | Подключить Яндекс.Метрику к сайту. ВАЖНО: авторизация проходит В БРАУЗЕРЕ, и сделать этот шаг за пользователя нельзя — ни тебе, ни платформе. Инструмент возвращает ссылку: покажи её и попроси открыть и разрешить доступ. Не жди результата в цикле — человек может уйти на час; проверишь позже через этот же инструмент без аргумента `branch` или через `site_analytics`. |
| site_analytics | Посещаемость сайта: итоги, направление и топ источников. Временной ряд свёрнут в направление, разбивки урезаны до пятёрки: девяносто точек графика в контексте бесполезны, а вывод из них всё равно делать тебе. |
| check_performance | Замерить скорость сайта и сказать, не стало ли хуже после деплоя. Вердикт выносится ПО БАЛЛУ, а не по таймингам: разброс повторных прогонов одного и того же деплоя — не больше пункта, тогда как LCP и TTFB на том же коде гуляют на 37-40%. Значимой считается разница от 3 пунктов; всё, что меньше, — погрешность измерения, и говорить о просадке в таком случае значит выдумывать проблему. Прогон занимает десятки секунд. С `wait=true` инструмент дождётся сам; не запускай второй замер параллельно — он займёт очередь и ничего не добавит. |
| connect_domain | Привязать свой домен к сайту. ВАЖНО: между этим вызовом и работающим доменом стоит ЧЕЛОВЕК. Ты получишь DNS-записи — покажи их пользователю и объясни, что вписать их нужно у регистратора домена. Готовности не жди: DNS расходится от минут до часа, платформа перепроверяет сама, а ты проверишь позже через `check_domain`. Крутиться в ожидании здесь — сжигать время и контекст впустую. Адрес можно передавать как есть: `https://shop.example.com/page` платформа приведёт к `shop.example.com` сама. |
| check_domain | Проверить, заработал ли привязанный домен. Запускает проверку DNS немедленно, не дожидаясь фоновой перепроверки. Если записи ещё не разошлись — это нормально, скажи об этом и предложи вернуться позже. |
| list_domains | Свои домены проекта и их состояние. |
| diagnose_deploy | Почему упал деплой — с разобранной причиной, а не сырым логом. Без `deploy` берётся последняя сборка — она и отражает текущее состояние. Разобрать конкретную старую можно, передав её id. В ответе не хвост лога, а окрестность фатальной строки: платформа уже выбрала из него значимое. Читай `verdict` и выжимку, чини код, деплой заново — этот цикл ты закрываешь сам, без участия человека. |
| publish_landing | Опубликовать лендинг на Layero — прямо отсюда, без терминала. Присылай ФАКТИЧЕСКОЕ содержимое файлов: сервер не помнит бандл между вызовами. Если пользователь правил текст после генерации — передай актуальные версии, иначе опубликуется то, что было. `project` (id существующего проекта) указывай при повторной публикации того же лендинга; без него платформа найдёт проект с таким именем или заведёт новый. |