Skip to main content
Glama

Что он делает

Спросите Claude Code (или любого MCP-клиента):

Разработай домашний дашборд для фитнес-трекера. Три концентрических кольца активности, еженедельная гистограмма, список недавних тренировок, премиальная темная тема с неоновыми акцентами.

mockit-mcp возвращает настоящий PNG-макет (размером 390×844 при масштабе устройства 2x, вьюпорт класса iPhone) и исходный код HTML/Tailwind — чтобы вы могли визуально итерировать и перенести его в SwiftUI, когда будете готовы к разработке.

Это не статический движок шаблонов и не низкокачественная ИИ-поделка. Системный промпт вручную настроен на премиальную эстетику iOS: реальный контент, SVG-иконки (без эмодзи), стильные градиенты вместо стоковых фото, типографика по HIG (Human Interface Guidelines) и тональная многослойность вместо тяжелых теней.

Основные возможности

  • Два бэкенда, одни и те же инструменты. Используйте локальный CLI claude (подписка, без доплат) или API Anthropic (ключ + оплата за вызов). Переключайтесь одной переменной окружения.

  • Реальный вывод в PNG. Безголовый Chromium через Playwright. Вьюпорт по умолчанию — 390×844 @2x (класс iPhone); любой пользовательский размер задается одной переменной окружения.

  • Итеративное уточнение. iterate_screen принимает ID экрана + обратную связь ("сделай карточку героя меньше") и создает новую версию, отслеживая связь родитель/потомок.

  • Библиотека на диске. Каждая генерация сохраняет HTML + PNG + JSON-метаданные. Просматривайте, фильтруйте, экспортируйте повторно.

  • Стандарт MCP. Работает с Claude Code, Claude Desktop, Cursor, Windsurf или любым другим MCP-клиентом.

  • Транспорты Stdio + HTTP. Запускайте локально для разработки или как сетевой сервис для общего/контейнеризированного использования.

Инструменты

Инструмент

Описание

generate_screen

Текстовое задание → PNG + HTML. Опциональные поля design_system и project.

iterate_screen

Берет предыдущий screen_id + строку feedback, создает новую версию.

list_screens

Список экранов, опционально с фильтрацией по проекту.

get_screen

Получить метаданные (или полный HTML) для конкретного экрана.

Установка

Предварительные требования

  • Node.js 20+

  • Либо авторизованный CLI claude (cli бэкенд, по умолчанию), либо API-ключ Anthropic (api бэкенд)

  • Загрузка Chromium для Playwright (~170 МБ, единоразово)

Быстрый старт (CLI бэкенд, рекомендуется для локальной разработки)

git clone https://github.com/karyaboyraz/mockit-mcp.git
cd mockit-mcp
npm install
npx playwright install chromium
npm run build

Добавьте в Claude Code:

claude mcp add mockit -- node "$(pwd)/dist/server.js"

Готово. API-ключ не нужен — используется ваша существующая сессия CLI claude.

API бэкенд (если на хосте нет CLI claude)

echo "CLAUDE_BACKEND=api" > .env
echo "ANTHROPIC_API_KEY=sk-ant-..." >> .env
npm run build
claude mcp add mockit -- node "$(pwd)/dist/server.js"

Docker (HTTP транспорт, для общего развертывания)

cat > .env <<'ENV'
CLAUDE_BACKEND=api
ANTHROPIC_API_KEY=sk-ant-...
# Required if you change the port binding from 127.0.0.1 to 0.0.0.0:
MCP_HTTP_TOKEN=$(openssl rand -hex 32)
ENV
docker compose up -d --build

По умолчанию docker-compose.yml привязывает HTTP-порт только к 127.0.0.1, и сервер требует MCP_HTTP_TOKEN для любого запроса не с локальной машины. Не открывайте этот сервер в публичную сеть без установки надежного MCP_HTTP_TOKEN — каждая генерация расходует лимиты вашего API-ключа Anthropic.

Затем укажите любому клиенту URL локальной петли:

claude mcp add --transport http mockit http://127.0.0.1:7821/mcp \
  -H "Authorization: Bearer <MCP_HTTP_TOKEN>"

Для удаленного доступа измените привязку порта в docker-compose.yml на 0.0.0.0:7821:7821 и убедитесь, что установлен MCP_HTTP_TOKEN — в противном случае сервер откажется запускаться.

Использование

В любом MCP-клиенте просто спросите:

Разработай дашборд фитнес-трекера. Покажи прогресс колец за сегодня, еженедельную диаграмму и список недавних тренировок. Темная тема, неоново-зеленый акцент.

PNG появится в чате. HTML будет сохранен в designs/{project}/{name}-{id}.html.

Для последующих правок:

iterate_screen для того фитнес-дашборда — замени диаграмму на пульс во времени и добавь кнопку "поделиться тренировкой" внизу.

См. examples/ для примеров промптов и готовых результатов.

Конфигурация

Все опционально. См. .env.example для полного списка.

Переменная

По умолчанию

Примечания

CLAUDE_BACKEND

cli

cli использует CLI claude; api использует SDK Anthropic напрямую

ANTHROPIC_API_KEY

Требуется только для api бэкенда

ANTHROPIC_MODEL

claude-opus-4-7

Только для API бэкенда. Если у вашего аккаунта нет доступа к Opus, установите claude-sonnet-4-6 или claude-haiku-4-5

CLAUDE_CLI_PATH

claude

Путь к бинарному файлу claude

CLAUDE_CLI_TIMEOUT_MS

180000

Таймаут подпроцесса

MCP_TRANSPORT

stdio

stdio или http

HTTP_PORT

7821

Порт HTTP транспорта

HTTP_HOST

127.0.0.1

Интерфейс привязки; для внешних запросов требуется MCP_HTTP_TOKEN

MCP_HTTP_TOKEN

Bearer-токен для HTTP-авторизации. Обязателен, если HTTP_HOST не 127.0.0.1

DESIGNS_DIR

./designs

Где сохраняются результаты

VIEWPORT_WIDTH

390

Ширина рендера в CSS-пикселях

VIEWPORT_HEIGHT

844

Высота рендера в CSS-пикселях

DEVICE_SCALE

2

Коэффициент Retina (итоговый PNG будет шириной WIDTH × DEVICE_SCALE)

PLAYWRIGHT_NO_SANDBOX

auto

auto = песочница включена вне контейнеров; true для принудительного отключения, false для принудительного включения. Отключение снижает изоляцию от вредоносного HTML модели — делайте это только внутри контейнера.

Стоимость

За одну генерацию: ~3 тыс. входных токенов (системный промпт) + ~6–12 тыс. выходных токенов в зависимости от сложности экрана. Выходные токены составляют основную часть стоимости на Opus.

Бэкенд

Первый вызов

Итерация с кэшем

cli

учитывается в квоте подписки Claude Code

то же самое — кэш дает скидку только на системный промпт

api

~$0.50–0.95 (Opus 4.7)

~$0.45–0.90 (кэш дает скидку только на входной системный промпт; стоимость вывода не меняется)

Кэширование системного промпта включено по умолчанию (TTL 5 минут). Это экономит несколько центов за вызов, но не является скидкой на порядок — выходные токены все равно оплачиваются по полной ставке. Для реального снижения затрат переключитесь на модель поменьше (claude-sonnet-4-6 или claude-haiku-4-5).

Архитектура

┌─────────────────┐
│   MCP Client    │  (Claude Code, Cursor, Windsurf, …)
└────────┬────────┘
         │ tool call: generate_screen({ prompt, ... })
         ▼
┌─────────────────────────────────────────────────────┐
│  mockit-mcp                                          │
│                                                      │
│  ┌──────────────┐    ┌────────────────────────┐    │
│  │  Backend     │    │  Renderer              │    │
│  │              │    │                        │    │
│  │ ► cli   ─────┼──► │  Playwright (headless  │    │
│  │ ► api   ─────┘    │  Chromium @ iPhone     │    │
│  │  → HTML+Tailwind  │  viewport)             │    │
│  └──────────────┘    │  → PNG screenshot      │    │
│                      └────────────────────────┘    │
│                                                      │
│  ┌────────────────────────────────────────────┐    │
│  │ Storage (disk): HTML + PNG + JSON metadata │    │
│  └────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────┘

Структура хранения

designs/
└── {project-slug}/
    ├── {name-slug}-{id8}.html   # id8 = first 8 chars of the screen UUID
    ├── {name-slug}-{id8}.png
    └── {name-slug}-{id8}.json   # full UUID, prompt, parent ID, tokens, model, cost

Настройка стиля дизайна

Вручную настроенный системный промпт находится в src/system-prompt.ts. Именно там закодированы соблюдение iOS HIG, правило отсутствия стоковых фото, цепочка фоллбэков SF Pro и предпочтения в типографике. Хотите Material You или стиль десктопного дашборда? Отредактируйте его.

Разработка

npm run dev    # tsx watch mode, stdio transport
npm run http   # tsx watch mode, http transport on :7821
npm run build  # compile to dist/

Дорожная карта

  • [ ] Пресеты вьюпортов для Watch / iPad / Android

  • [ ] Генерация потоков из нескольких экранов (последовательности онбординга)

  • [ ] Инструмент переноса HTML → SwiftUI / Jetpack Compose

  • [ ] Импорт дизайн-системы (конфиг Tailwind, дизайн-токены)

  • [ ] Ссылки на изображения (используйте --image для визуального вдохновения)

  • [ ] Генерация вариантов (3-5 альтернатив на промпт)

Участие в разработке

Проблемы и PR приветствуются — см. CONTRIBUTING.md.

Лицензия

MIT

Благодарности

Построено на базе:

Товарные знаки

iPhone, iPad, Apple Watch и iOS являются товарными знаками Apple Inc. Claude является товарным знаком Anthropic, PBC. mockit-mcp — это независимый open-source проект, который не связан, не одобрен и не спонсируется Apple Inc. или Anthropic, PBC. Все остальные названия продуктов, логотипы и бренды являются собственностью их соответствующих владельцев.

Install Server
A
license - permissive license
A
quality
C
maintenance

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/karyaboyraz/mockit-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server