Skip to main content
Glama
coin-seeker

claude.design-mcp

by coin-seeker

claude.design-mcp

MCP-сервер, который управляет настоящим веб-приложением Claude Design из вашего редактора/агента — войдите один раз, затем создавайте, итерируйте и забирайте дизайны, которые генерирует claude.ai/design в вашем собственном аккаунте (а не локальная имитация).

Как это работает

  • Он управляет вашим собственным вошедшим в систему Chrome (выделенный профиль) через CDP с помощью playwright-core и общается с реальным API claude.ai/design "Omelette" как вы, через вашу браузерную сессию.

  • Генерация запускается так же, как это делает веб-сайт — ваш промпт вводится в композер дизайна и отправляется; затем инструмент ждёт завершения хода (сигнал ReleaseTurn в сети + стабильность файлового дерева) и сообщает файлы, которые записал Claude Design. Файлы по запросу забираются локально.

  • Метаданные проекта, файлы, удаления и прямые правки файлов используют документированные JSON RPC (CreateProject / ListFiles / GetFile / EditFile / DeleteProject), выполняемые на странице, чтобы они разделяли вашу сессию и очистку Cloudflare.

  • Это не имитация claude -p. Каждый дизайн создаётся самим claude.ai/design.

Related MCP server: Browser Agent MCP

Официальный Design MCP и вердикт по протоколу (2026-08-12)

Этот проект — независимый MCP-сервер на основе CDP-автоматизации браузера. Он не вызывает официальную конечную точку api.anthropic.com/v1/design/mcp. Как описано в разделе Как это работает, он использует playwright-core и CDP для управления реальной сессией Chrome, которая уже вошла в фактическое веб-приложение claude.ai/design.

Экспортное сообщение Create prompt for Claude Code в интерфейсе claude.ai/design передаёт URL проекта в форме https://claude.ai/design/p/<projectId>. Для этого сервера соответствующий поток — извлечь <projectId> из этого URL и вызвать design_pull. Официальный Design MCP не требуется для получения сгенерированных файлов.

Ревизия протокола MCP, обсуждавшаяся около 2026-07-28, включая изменение протокола без сохранения состояния, принятое некоторыми экосистемами MCP, не оказывает практического влияния на текущую интеграцию stdio-клиента OpenCode или контракт инструментов. Этот сервер отвечает на инициализацию фиксированным рукопожатием protocolVersion: "2024-11-05".

Пересмотрите этот вердикт, если произойдёт любое из следующих условий:

  1. MCP-клиент OpenCode перестанет поддерживать старую версию рукопожатия, которую возвращает этот сервер.

  2. Проект решит заменить свой подход с CDP-автоматизацией браузера на официальную конечную точку api.anthropic.com/v1/design/mcp.

  3. claude.ai изменит свою модель аутентификации или сессий так, что это повлияет на поток входа через CDP.

Инструменты

Инструмент

Что делает

design_login

Одноразово: открыть Chrome для входа в claude.ai/design (сессия сохраняется)

design_list

Список ваших проектов claude.ai/design

design_create

Создать проект и сгенерировать дизайн по промпту — prompt, designSystem XOR withoutDesignSystem: true (+ withoutDesignSystemReason?), name?, wait?, model?, fresh?

design_variants

Сгенерировать несколько вариантов дизайна одного промпта параллельно — prompt, designSystem XOR withoutDesignSystem: true (+ withoutDesignSystemReason?), count?, axis?, name?, preview?, model?

design_iterate

Отправить последующий промпт для изменения дизайна — projectId, prompt, wait?, model?, designSystem?

design_pull

Скачать файлы проекта локально — projectId или name, dir?, zip?

design_preview

Отрендерить самодостаточный HTML проекта в полноразмерный PNG для просмотра — projectId или name, path?, dir?, width?

design_get

Прочитать один файл из проекта — projectId, path

design_status

Сообщить состояние чата/хода проекта — projectId

design_check

Опрашивать и восстанавливать асинхронную генерацию — projectId; возвращает generating, awaiting_input, done, no_output, interrupted, stalled или resume_exhausted

design_edit

Применить прямую правку файла — projectId, path, edits

design_delete

Удалить проект — projectId, confirm (должно быть true; без него вызов отклоняется)

design_system_sync

Загрузить материализованную папку пакета дизайн-системы в claude.ai как дизайн-систему, запустив в ней Claude Code /design-syncdir

design_system_list

Список дизайн-систем в вашем аккаунте (имя + id) на всех страницах списка проектов

Каждый инструмент также принимает необязательный объект caller{ directory, sessionID, agent, project? } — который MCP-клиент может внедрить, чтобы указать, кто вызывает. Он никогда не является аргументом генерации: диспетчер удаляет его перед запуском обработчика и только записывает его в историю вызовов.

История вызовов

Каждая диспетчеризация tools/call добавляет ровно одну JSON-строку в ~/.local/share/opencode-dashboard/claude-design-history/events.ndjsonl (каталог 0700, файл 0600; переопределите папку с помощью CLAUDE_DESIGN_HISTORY_DIR), так что история промптов переживает перезапуски MCP. Строка содержит v, eventId, seq, ts, tool, durationMs, ok, error, projectId, projects, projectName, prompt (дословно, никогда не усекается), model, designSystem, withoutDesignSystem, withoutDesignSystemReason, wait, attemptId, caller, pullKind, revision и разрешённую сводку result (только счётчики и id — никогда содержимое файлов, base64 или значения окружения). Запись — это наблюдаемость с максимальными усилиями: неудачная запись только предупреждает в stderr и никогда не превращает рабочий вызов инструмента в ошибку. Путь CLI не записывается.

Снимки ревизий

Успешный обычный design_pull (pullKind: "default" — без dir, без zip) также делает снимок извлечённого манифеста в <CLAUDE_DESIGN_DIR>/.revisions/<projectId>/<revisionId>/, вне извлечённого дерева, так что историю правок дизайна можно позже сравнить. revisionId — это <YYYYMMDDTHHmmssSSS>-<uuid8> в UTC, так что порядок имён — это порядок времени. В каждой папке есть .meta.json со списком SHA-256 для каждого файла, общий hash и incomplete: true, когда при извлечении сообщалось о частичных ошибках файлов. Снимок размещается в .staging-<revisionId>/ и атомарно переименовывается, так что листеры видят только завершённые ревизии (пропускайте любое имя, начинающееся с .). Извлечение, чей хэш содержимого и полнота совпадают с предыдущей ревизией, пропускается и сообщает revision: null, что означает "без изменений — предыдущая ревизия всё ещё актуальна". Сбои снимков не фатальны так же: revision: null плюс предупреждение в stderr, результат инструмента не изменяется.

Установка

npm install                  # installs playwright-core (NO browser download — uses your Chrome)
node src/server.mjs login    # opens Chrome once; log into claude.ai (session is then reused, invisibly)

Зарегистрируйте как локальный MCP (пример для opencode):

{ "mcp": { "claude-design": { "type": "local", "command": ["node", "/abs/path/claude.design-mcp/src/server.mjs"], "enabled": true } } }

CLI

node src/server.mjs login
node src/server.mjs list
node src/server.mjs list-systems
node src/server.mjs create "simple pricing card" pricing --design-system "Frontend Design System"
node src/server.mjs create "minimal landing page for a coffee shop" coffee --model opus --without-design-system
node src/server.mjs iterate <projectId> "add a dark mode toggle to the header" --model sonnet
node src/server.mjs check <projectId>
node src/server.mjs pull <projectId|name>
node src/server.mjs preview <projectId|name> [outDir] [width]
node src/server.mjs delete <projectId>
node src/server.mjs sync <packageDir> [--timeout-ms 900000]

После одноразового login команды list/create/iterate/pull работают без видимого окна (фоновый Chrome) и повторно используют сохранённую сессию.

Параметры генерации

  • design_create, design_iterate и design_variants принимают необязательный параметр model. Используйте семейство (opus, sonnet, haiku или fable), чтобы выбрать самую новую версию этого семейства из живого меню claude.ai/design. Зафиксируйте версию с помощью форм вида opus-4.8, opus-5, opus 5.0, claude-opus-4-8 или anthropic/claude-opus-5. Новые версии семейств становятся доступны автоматически, когда они появляются в меню сайта. Если запрошенная версия недоступна, в ошибке перечисляются актуальные пункты меню. Для CLI create и iterate передайте то же значение в --model.

  • design_create, design_iterate и design_variants принимают designSystem (CLI --design-system) — имя одной из дизайн-систем аккаунта, о которых сообщает design_system_list. Имя сопоставляется без учёта регистра, однозначное частичное имя работает, а неизвестное имя вызывает ошибку со списком, который предлагает компоновщик. Выбранная система заменяет системную по умолчанию для организации, а не добавляется к ней, и в результате отражается разрешённое имя. claude.ai предлагает выбор только пока проект ещё не создал ни одного дизайна, поэтому designSystem относится к design_create; в design_iterate он работает только для такого проекта, а в противном случае вызывает ошибку вместо молчаливого игнорирования запроса. design_variants основывает каждый вариант на той же системе.

  • Обязательное связывание в design_create и design_variants. Каждый вызов должен содержать ровно одно из: непустой designSystem или withoutDesignSystem: true (булево true, а не "true" или 1) — никогда оба, никогда ни одного. Нарушение отклоняется одним фиксированным сообщением, которое называет list_claude_synced_systems / design_system_list как способ узнать доступные имена, и отказ происходит до создания сессии браузера, страницы операции или проекта, поэтому отклонённый вызов не затрагивает аккаунт. В design_variants проверка выполняется до разветвления, поэтому отклонённый вызов создаёт ноль проектов вместо возврата ошибок по каждому варианту. Отказ может содержать свободный текст withoutDesignSystemReason, который допустим только вместе с withoutDesignSystem: true; оба значения отражаются в результате и записываются в историю вызовов. Эквивалент в CLI — create --without-design-system; iterate отклоняет этот флаг как неизвестный. design_iterate намеренно не ограничен: проект, который уже содержит дизайн, больше не предлагает выбор, поэтому там нечего выбирать.

  • design_variants принудительно задаёт fresh: true для каждого создаваемого проекта. Каждый вариант называется <base>-v<N>, и без fresh повторный запуск переиспользовал бы одноимённый проект из более раннего разветвления — проект, который уже содержит дизайн и к которому дизайн-система больше не может быть привязана.

  • design_create и design_iterate принимают wait (по умолчанию true). Установите wait: false, чтобы вернуться после проверенного POST Chat и ограниченного ожидания формы вопроса с { submitted: true, pending: true }; эквивалент в CLI — --no-wait. Клик или нажатие Enter, которое не приводит к запросу Chat, вызывает ошибку вместо сообщения об успехе.

  • design_create с явным name работает по принципу найти-или-создать: существующий проект с точно таким именем переиспользуется (при коллизиях побеждает самый новый), и результат содержит reused: true, поэтому повторные вызовы развивают один проект вместо накопления дубликатов. Передайте fresh: true, чтобы принудительно создать новый проект. Без name (имя, производное от промпта) каждый вызов создаёт новый проект, как и раньше.

  • Опрашивайте отправленную работу через design_check({ projectId }) или node src/server.mjs check <projectId>. Его statusgenerating, awaiting_input, done, no_output, interrupted, stalled или resume_exhausted. Каждая проверка переиспользует удерживаемую страницу владельца, пока активен ход (без её перезагрузки), отвечает на форму вопроса, когда это возможно, и автоматически нажимает кнопку Resume на баннере прерывания. interrupted означает, что баннер присутствовал, но возобновить не удалось; stalled означает, что дерево файлов было стабильным, без сгенерированных файлов, и последним сообщением всё ещё был промпт пользователя. resume_exhausted — терминальное состояние после трёх последовательных попыток Resume и включает resumeAttempts, maxResumeAttempts и problem: "resume_attempts_exhausted". Материал дизайн-системы _ds/** не считается сгенерированным выводом.

Асинхронный рабочий процесс

# 1. Submit without waiting
node src/server.mjs create "카드 UI" my-card --no-wait --model opus
# → { projectId: "...", submitted: true, pending: true }

# 2. Continue with other work...

# 3. Poll for completion (every 2-5 minutes is recommended)
node src/server.mjs check <projectId>
# → { status: "done", files: [...] }

# 4. Pull and preview the finished design
node src/server.mjs pull <projectId>
node src/server.mjs preview <projectId>

Требования

  • Node.js 22+ (использует встроенные fetch/WebSocket; playwright-core — единственная npm-зависимость)

  • Google Chrome (инструменты управляют выделенным профилем Chrome)

  • Аккаунт claude.ai с доступом к Design (вход выполняется один раз через design_login)

Переменные окружения

  • CLAUDE_DESIGN_PROFILE — каталог выделенного профиля Chrome (по умолчанию ~/.cache/claude-design-mcp/chrome-profile)

  • CLAUDE_DESIGN_CHROME — путь к Google Chrome (по умолчанию: macOS Google Chrome)

  • CLAUDE_DESIGN_CDP_PORT — порт удалённой отладки (по умолчанию 9377)

  • CLAUDE_DESIGN_DIR — куда design_pull / design_preview записывают результат, каждый в свою папку <project>/ (по умолчанию: рабочая папка); явный аргумент dir используется как есть

  • CLAUDE_DESIGN_HISTORY_DIR — куда дописывается история tools/call (по умолчанию ~/.local/share/opencode-dashboard/claude-design-history, файл events.ndjsonl)

  • CLAUDE_DESIGN_HEADLESS — установите 1, чтобы управлять headless Chrome вместо заэкранного

  • CLAUDE_DESIGN_TURN_TIMEOUT_MS — жёсткий предел на один ход генерации (по умолчанию create ~360s, iterate ~240s)

  • CLAUDE_DESIGN_QUIET_MS — как долго сеть хода должна оставаться тихой, прежде чем генерация будет считаться завершённой (по умолчанию 20000)

  • CLAUDE_DESIGN_PAGE_LEASE_MS — независимый жёсткий предел для асинхронной страницы владельца, если её монитор завершения завис (по умолчанию 2700000, 45 минут)

  • CLAUDE_DESIGN_CLAUDE_BIN — бинарник Claude Code, используемый design_system_sync (по умолчанию claude)

  • CLAUDE_DESIGN_SYNC_TIMEOUT_MS — жёсткий предел для одного запуска /design-sync (по умолчанию 900000, 15 минут)

Синхронизация дизайн-системы

design_system_sync (CLI: sync <dir>) запускает claude -p "/design-sync <pre-approval>" --dangerously-skip-permissions --output-format stream-json --verbose с папкой пакета в качестве рабочего каталога и сообщает, что загрузила синхронизация. После успешной синхронизации только токенов он использует вошедшую сессию Chrome/CDP, чтобы заменить загруженный shim импорта styles.css на сгенерированный CSS пользовательских свойств из ds-bundle/_ds_bundle.css.

  • Папка уже должна быть пакетом (package.json + CSS-вход, например styles.css, плюс tokens/*.json, guidelines/*.md, README.md). Компоненты необязательны — пакет только с токенами принимается. Инструмент отказывается до запуска, если package.json отсутствует.

  • Код выхода не является сигналом успеха. Отклонённая синхронизация всё равно завершается с кодом 0 и subtype: "success", поэтому результат ok: true только когда ответ содержит реальную ссылку на проект; в противном случае вы получаете { ok: false, error, raw } с полным выводом для диагностики.

  • Первый запуск создаёт проект и записывает .design-sync/config.json, который закрепляет последующие запуски за тем же проектом (повторный запуск без изменений тогда является no-op вместо дубликата). Если ваш конвейер перегенерирует папку, сделайте снимок .design-sync/ перед её заменой и восстановите его после — этот инструмент никогда не записывает сам пакет.

  • Промпт несёт предварительное одобрение (SYNC_ARGS в src/sync.mjs), и оно критично при первом запуске. /design-sync запрашивает два подтверждения AskUserQuestion, когда у папки нет закрепления — примите время/стоимость, затем подтвердите имя нового проекта перед create_project — а у claude -p нет инструмента AskUserQuestion, поэтому ход завершился бы вопросом и ничего не загрузил (код 0, subtype: "success", без ссылки на проект). Запасной выход самого навыка («если их запрос уже учитывал время/стоимость… продолжайте без повторного вопроса») — это то, что вызывает предварительное одобрение, и оно явно называет создание нового проекта. Закреплённая повторная синхронизация никогда не проходит ни через один из этих барьеров, поэтому это проявлялось только при первой синхронизации. Claude Code добавляет текст после слэш-команды к телу навыка как огороженный блок ## Hint, поэтому он должен оставаться одной позиционной строкой без тройных обратных кавычек.

  • Первая синхронизация занимает ~10 минут; повторные запуски без изменений — ~2. CLI завершается с кодом 1 при неудачной синхронизации.

  • Результат добавляет flattened: true|false. Сбой браузера/записи после синхронизации сообщается как flattenError, при этом завершённая загрузка остаётся ok: true.

design_system_list (CLI: list-systems) — это читающая сторона той же функции. У claude.ai нет отдельной конечной точки для дизайн-систем — дизайн-системы возвращаются обычным RPC списка проектов с тегом PROJECT_TYPE_DESIGN_SYSTEM, который разбит на страницы по 20, поэтому инструмент проходит все страницы и возвращает [{ name, id, publishedAt?, viewedAt? }] (publishedAt появляется только после публикации системы). Используйте его, чтобы подтвердить, что design_system_sync действительно разместил на аккаунте. scripts/probe-design-systems.mjs заново фиксирует эту живую форму, если API изменится.

Когда генерация «завершена»?

claude.ai/design управляет генерацией как ходами: ваш промпт передаётся через RPC Chat, поддерживается keepalive-сообщениями RenewTurn (~каждые 10s) и завершается ReleaseTurn. design_create / design_iterate возвращаются, когда файлы устаканились И сеть хода затихла на CLAUDE_DESIGN_QUIET_MS — с комфортным запасом больше интервала keepalive, поэтому генерация никогда не обрывается на середине записи (вы всегда получаете полный, связный дизайн, а не наполовину отрисованный).

Если генерация достигает жёсткого дедлайна до завершения проверок тишины/стабильности, результат включает timedOut: true. Обычные завершения опускают это поле полностью; считайте его наличие сигналом того, что возвращённые файлы — лучший доступный снимок на момент тайм-аута, а не полностью тихий ход.

Обратите внимание, что claude.ai часто выполняет автоматический проход уточнения, который начинается ~30s после того, как первый дизайн устаканился, поэтому дизайн продолжает улучшаться на сервере после того, как инструмент вернул свою первую полную версию. Чтобы получить максимально уточнённый вывод, design_pull / design_preview всегда получают последнее состояние, или поднимите CLAUDE_DESIGN_QUIET_MS (например, 60000), чтобы create дожидался последующих проходов уточнения (ценой более долгого ожидания).

Available Tools

10 tools
design_createC

Create a Claude Design project and submit the initial prompt through the composer.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
promptYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must disclose behavior. It mentions creating a project and submitting a prompt but does not clarify side effects, permissions, rate limits, whether the operation is synchronous, or what the response contains. This is inadequate for a creation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but lacks necessary detail. It front-loads the purpose but fails to provide adequate information for the agent to use the tool correctly. Ideally, it should include more context without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 parameters, no output schema, and no annotations, the description is incomplete. It does not explain return values, error conditions, or the nature of the 'composer' reference. An agent would likely need to infer or guess many details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description only implicitly covers the 'prompt' parameter. The 'name' parameter is not explained at all. The description adds no meaningful semantics beyond the parameter names in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Create a Claude Design project' and distinguishes from siblings like design_edit, design_delete. It specifies submitting the initial prompt, making the purpose specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like design_edit or design_iterate. There is no mention of prerequisites or context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_deleteC

Delete one Claude Design project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The word 'Delete' implies a destructive action, but the description does not disclose any behavioral traits such as irreversibility, permissions needed, side effects, or confirmation steps. With no annotations provided, the description fails to add transparency beyond the action itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, making it concise. However, it is under-specified given the lack of details in other dimensions; brevity here comes at the cost of completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple deletion tool with one parameter and no output schema or annotations, the description is incomplete. It does not explain the effect on the project, any prerequisites, or what happens after deletion. Critical context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the 'projectId' parameter beyond its name and type. There is no indication of what values are valid or how to obtain the ID. The description adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Delete' and resource 'Claude Design project', which is specific and distinguishes from sibling tools that perform other actions like create, edit, get, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives. Among 9 siblings, there is no context on prerequisites, when deletion is appropriate, or when other tools like design_edit or design_status might be relevant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_editC

Apply direct string edits to one Claude Design project file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
editsYes
projectIdYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states that edits are applied, but fails to mention whether edits are atomic, what happens on failure, permissions required, or any side effects (e.g., overwriting existing content). The description is insufficient for understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no superfluous information. It is front-loaded with the core action. However, it is overly terse at the expense of necessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, output schema, and parameter descriptions, the description is inadequate for a mutation tool. It does not provide enough context to use the tool correctly, especially regarding the format of edits and expected behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 3 parameters (path, edits, projectId) with 0% description coverage. The description does not explain what each parameter represents or the expected format (e.g., what constitutes a valid 'edits' array). The phrase 'direct string edits' gives a vague hint but is insufficient for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('apply direct string edits') and the target resource ('one Claude Design project file'). It distinguishes from sibling tools by specifying a direct edit operation, which contrasts with create, delete, get, list, and other operations. However, the term 'string edits' is somewhat ambiguous and could be more specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like design_create (for creating files) or design_get (for reading). There are no criteria for when edits are appropriate or any mention of prerequisites or constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_getC

Read one file from a Claude Design project.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
projectIdYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure, but it only states the basic operation. It does not mention error behavior, access requirements, or other side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. However, it is too concise for a tool with no other documentation, sacrificing necessary detail for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Considering the large sibling set, no output schema, and lack of parameter documentation, the description is insufficient. It leaves ambiguity about file types, project structure, and return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description does not add any parameter-level detail. While 'path' and 'projectId' are somewhat self-explanatory, the description fails to provide format, constraints, or relationship context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (read), the resource (one file), and the context (from a Claude Design project). It effectively distinguishes the tool from siblings like design_list or design_create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor any context on prerequisites or when not to use it. The description is purely functional.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_iterateC

Submit a follow-up prompt to an existing Claude Design project.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes
projectIdYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behaviors. It only says 'submit a follow-up prompt' but does not mention whether the tool modifies project state, requires authentication, or what the response contains (e.g., model reply).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but severely under-specified. It lacks critical details about parameters, preconditions, and effects, making it too minimal to be effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 2 required parameters, no output schema, and no annotations, the description should provide comprehensive context. It fails to explain expected input format, project lifecycle, or outcome of the submission, leaving significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds no meaning to parameters. Neither 'projectId' nor 'prompt' are explained beyond their types, leaving the agent without guidance on valid values or formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'submit' and the resource 'follow-up prompt to an existing Claude Design project'. It distinguishes from sibling tools like design_create (create new) and design_edit (modify project settings) by emphasizing the iterative 'follow-up' nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as design_edit or design_create. It does not clarify prerequisites like the need for an existing project or that the project must have an active conversation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_listA

List Claude Design projects from the logged-in web account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Mentions 'logged-in web account' implying authentication, but no details on read-only nature, pagination, or output format. Adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, clear and front-loaded. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema and no annotations, description is minimal. Lacks details on what 'projects' includes (e.g., names, IDs) and no mention of read-only nature. Acceptable but could be improved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist and schema coverage is 100%, so baseline is 3. Description adds no parameter info, but none needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'List Claude Design projects from the logged-in web account.' Clear verb 'list' and resource 'Claude Design projects', distinguishing from siblings like design_get (single project) and design_create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like design_get or search. Does not mention when to avoid or prerequisites, though simple tool makes it obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_loginA

Open Chrome for claude.ai/design login and report the active account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that it opens a browser (Chrome) and reports an account, which is a significant behavioral trait not captured in any structured fields. However, it omits details like whether this requires a desktop environment, side effects on existing sessions, or what happens if Chrome is not installed. With no annotations, the description partially fills the transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the primary action ('Open Chrome...') and completes with the secondary action ('report...'). Every word is necessary and there is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no output schema, the description communicates the core function but lacks details on the format of the reported account (e.g., string, JSON), potential user interaction required, or failure modes. It is minimally complete but could be more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the input schema is trivially covered (100%). The description does not need to add parameter details. Per guidelines, 0 parameters baseline is 4, and the description meets that without superfluous information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool opens Chrome for a specific login page (claude.ai/design) and reports the active account. It uses strong verbs 'Open' and 'report', and the resource is explicitly a login operation, which distinctly separates it from sibling tools focused on design CRUD.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like design_get or design_list. There is no mention of prerequisites, ordering (e.g., must be called before design operations), or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_previewC

Render a project's self-contained HTML to a full-page PNG screenshot for visual review.

ParametersJSON Schema
NameRequiredDescriptionDefault
dirNo
nameNo
pathNo
widthNo
heightNo
projectIdNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It indicates a read-only operation but does not mention that it is non-destructive, any authentication requirements, or whether it modifies state. The term 'self-contained HTML' is not explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no verbosity. However, it could be slightly more structured with additional context without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 6 optional parameters, no output schema, and no behavioral details, the description is severely incomplete. It does not explain how parameters like width, height, or projectId affect the output, nor what a 'full-page PNG screenshot' entails.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 6 parameters with 0% coverage (no descriptions). The description does not mention any parameters or their purpose, failing to add value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: rendering HTML to a PNG screenshot for visual review. It uses a specific verb ('Render') and resource ('project's self-contained HTML'), distinguishing it from sibling tools that perform CRUD operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as design_get or design_list. There is no mention of prerequisites, context, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_pullC

Pull one Claude Design project by projectId or exact name into a local directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
dirNo
zipNo
nameNo
projectIdNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the action but not behavioral traits such as whether the operation is destructive, if it overwrites local files, authentication requirements, or error handling. Without this, an agent cannot predict side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff, clearly stating the core functionality. It could be slightly more structured, but it is efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters (none required), no output schema, and no annotations, the description is insufficient. It should include details on default behavior, output format, error conditions, and parameter interactions to enable proper invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains projectId and name as identifiers, but does not describe the 'dir' parameter (output directory) or 'zip' parameter (whether to create a zip file). This leaves agent uncertain about required or optional parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Pull') and the resource ('Claude Design project'), and specifies two methods for identifying the project (projectId or exact name). However, it does not differentiate from sibling tools like design_get, which might also retrieve project data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., design_get, design_list). The description does not mention prerequisites, context, or cases where other tools would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_statusC

Summarize project data, chat count, and last message role.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. Only states 'summarize' without disclosing read-only nature, authentication needs, or output format. Does not indicate whether the tool has side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is highly concise with no extraneous words. However, it may be overly brief; a bit more structure could improve clarity without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of summarizing project data, chat counts, and last message roles, and the lack of output schema or additional annotations, the description leaves significant gaps in understanding what is returned and how to interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single parameter projectId. The description mentions 'project data' but does not explain what projectId represents or how it should be used. Fails to add meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Summarize' and identifies distinct resource aspects: 'project data, chat count, and last message role'. It clearly distinguishes from sibling tools like design_get (which likely returns full design details) or design_list (which lists multiple designs).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as design_get or design_list. Lacks context for appropriate usage scenarios, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.3/5.0
Disambiguation5/5

Each tool has a unique action (create, delete, edit, get, iterate, list, login, preview, pull, status) targeting distinct operations on projects or files, with no overlap in purpose.

Naming Consistency5/5

All tools follow a uniform 'design_<verb>' pattern, using snake_case throughout, making naming predictable and easy to understand.

Tool Count5/5

10 tools is well-scoped for a design-related server, covering essential operations from login to CRUD to preview and status without being excessive or insufficient.

Completeness4/5

The tool set covers core workflows (login, list, create, read, update, delete, preview, pull), but lacks explicit support for file deletion or project metadata updates, which are minor gaps.

Maintenance

ActivityActive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/coin-seeker/claude.design-mcp'

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