Skip to main content
Glama
coin-seeker

claude.design-mcp

by coin-seeker

claude.design-mcp

Un MCP que controla la verdadera aplicación web Claude Design desde tu editor/agente: inicia sesión una vez y luego crea, itera y extrae diseños que claude.ai/design genera en tu propia cuenta (no una imitación local).

Cómo funciona

  • Controla tu propio Chrome con sesión iniciada (un perfil dedicado) a través de CDP con playwright-core, y habla con la API real claude.ai/design "Omelette" como , a través de tu sesión de navegador.

  • La generación se activa de la misma manera que lo hace el sitio web: tu prompt se escribe en el compositor de diseño y se envía; la herramienta espera a que el turno termine (la señal de red ReleaseTurn + estabilidad del árbol de archivos) y reporta los archivos que Claude Design escribió. Los archivos se extraen localmente cuando se solicita.

  • Los metadatos del proyecto, los archivos, las eliminaciones y las ediciones directas de archivos usan los JSON RPC documentados (CreateProject / ListFiles / GetFile / EditFile / DeleteProject), ejecutados en la página para que compartan tu sesión y la autorización de Cloudflare.

  • No es una imitación de claude -p. Cada diseño es producido por claude.ai/design en sí.

Related MCP server: Browser Agent MCP

Veredicto oficial sobre el MCP de Design y el protocolo (2026-08-12)

Este proyecto es un MCP independiente de automatización de navegador por CDP. No llama al endpoint oficial api.anthropic.com/v1/design/mcp. Como se describe en Cómo funciona, usa playwright-core y CDP para controlar una sesión real de Chrome que ya tiene sesión iniciada en la aplicación web real claude.ai/design.

El mensaje de exportación Create prompt for Claude Code de la interfaz de claude.ai/design entrega una URL de proyecto con la forma https://claude.ai/design/p/<projectId>. Para este servidor, el flujo correspondiente es extraer <projectId> de esa URL y llamar a design_pull. No se necesita el MCP oficial de Design para recibir los archivos generados.

La revisión del protocolo MCP discutida alrededor del 2026-07-28, incluido el cambio de protocolo de cable sin estado adoptado por algunos ecosistemas MCP, no tiene efecto práctico en la integración actual del cliente stdio de OpenCode ni en el contrato de herramientas. Este servidor responde a la inicialización con el handshake fijo protocolVersion: "2024-11-05".

Revisa este veredicto si ocurre alguna de estas condiciones:

  1. El cliente MCP de OpenCode deja de soportar la versión de handshake más antigua que devuelve este servidor.

  2. El proyecto decide reemplazar su enfoque de automatización de navegador por CDP con el endpoint oficial api.anthropic.com/v1/design/mcp.

  3. claude.ai cambia su modelo de autenticación o sesión de una manera que afecte el flujo de inicio de sesión impulsado por CDP.

Herramientas

Herramienta

Descripción

design_login

Una vez: abre Chrome para iniciar sesión en claude.ai/design (la sesión persiste)

design_list

Lista tus proyectos de claude.ai/design

design_create

Crea un proyecto y genera un diseño a partir de un prompt — prompt, designSystem XOR withoutDesignSystem: true (+ withoutDesignSystemReason?), name?, wait?, model?, fresh?

design_variants

Genera múltiples variantes de diseño de un mismo prompt en paralelo — prompt, designSystem XOR withoutDesignSystem: true (+ withoutDesignSystemReason?), count?, axis?, name?, preview?, model?

design_iterate

Envía un prompt de seguimiento para modificar un diseño — projectId, prompt, wait?, model?, designSystem?

design_pull

Descarga los archivos de un proyecto a local — projectId o name, dir?, zip?

design_preview

Renderiza el HTML autocontenido de un proyecto a un PNG de página completa para revisión — projectId o name, path?, dir?, width?

design_get

Lee un archivo de un proyecto — projectId, path

design_status

Reporta el estado de chat/turno de un proyecto — projectId

design_check

Consulta y recupera una generación asíncrona — projectId; devuelve generating, awaiting_input, done, no_output, interrupted, stalled o resume_exhausted

design_edit

Aplica una edición directa de archivo — projectId, path, edits

design_delete

Elimina un proyecto — projectId, confirm (debe ser true; la llamada se rechaza sin él)

design_system_sync

Sube una carpeta de paquete de sistema de diseño materializado a claude.ai como sistema de diseño, ejecutando Claude Code /design-sync en ella — dir

design_system_list

Lista los sistemas de diseño de tu cuenta (nombre + id), en todas las páginas de la lista de proyectos

Cada herramienta también acepta un objeto caller opcional — { directory, sessionID, agent, project? } — que el cliente MCP puede inyectar para indicar quién llama. Nunca es un argumento de generación: el despachador lo elimina antes de que se ejecute el manejador y solo lo registra en el historial de llamadas.

Historial de llamadas

Cada despacho de tools/call agrega exactamente una línea JSON a ~/.local/share/opencode-dashboard/claude-design-history/events.ndjsonl (directorio 0700, archivo 0600; puedes sobrescribir la carpeta con CLAUDE_DESIGN_HISTORY_DIR), de modo que el historial de prompts sobrevive a los reinicios del MCP. Una línea lleva v, eventId, seq, ts, tool, durationMs, ok, error, projectId, projects, projectName, prompt (verbatim, nunca truncado), model, designSystem, withoutDesignSystem, withoutDesignSystemReason, wait, attemptId, caller, pullKind, revision y un resumen result en lista blanca (solo conteos e ids — nunca contenidos de archivos, base64 o valores de entorno). El registro es observabilidad de mejor esfuerzo: una escritura fallida solo advierte en stderr y nunca convierte una llamada de herramienta exitosa en un error. La ruta CLI no se registra.

Instantáneas de revisión

Un design_pull simple exitoso (pullKind: "default" — sin dir, sin zip) también toma una instantánea del manifiesto extraído en <CLAUDE_DESIGN_DIR>/.revisions/<projectId>/<revisionId>/, fuera del árbol extraído, para que el historial de ediciones de un diseño pueda compararse más tarde. revisionId es <YYYYMMDDTHHmmssSSS>-<uuid8> en UTC, por lo que el orden de nombres es el orden temporal. Cada carpeta lleva un .meta.json con la lista SHA-256 por archivo, un hash total y incomplete: true cuando la extracción reportó errores parciales de archivos. La instantánea se prepara en .staging-<revisionId>/ y se renombra atómicamente, por lo que los listadores solo ven revisiones terminadas (omiten cualquier nombre que comience con .). Una extracción cuyo hash de contenido y completitud coinciden con la revisión anterior se omite y reporta revision: null, lo que significa "sin cambios: la revisión anterior sigue siendo la actual". Los fallos de instantánea no son fatales de la misma manera: revision: null más una advertencia en stderr, el resultado de la herramienta no se modifica.

Configuración

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)

Regístrate como MCP local (ejemplo de 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]

Después del login único, list/create/iterate/pull se ejecutan sin ventana visible (Chrome fuera de pantalla) y reutilizan la sesión persistida.

Opciones de generación

  • design_create, design_iterate y design_variants aceptan un model opcional. Usa una familia (opus, sonnet, haiku o fable) para seleccionar la versión más reciente de esa familia desde el menú en vivo de claude.ai/design. Fija una versión con formas como opus-4.8, opus-5, opus 5.0, claude-opus-4-8 o anthropic/claude-opus-5. Las nuevas versiones de familia están disponibles automáticamente cuando aparecen en el menú del sitio. Si una versión solicitada no está disponible, el error enumera las opciones del menú en vivo. Para create e iterate de CLI, pasa el mismo valor a --model.

  • design_create, design_iterate y design_variants aceptan un designSystem (CLI --design-system), el nombre de uno de los design systems de la cuenta que reporta design_system_list. La coincidencia no distingue mayúsculas de minúsculas, un nombre parcial sin ambigüedad funciona, y un nombre desconocido genera un error con la lista que ofrece el compositor. El sistema elegido reemplaza al predeterminado de la organización en lugar de añadirse a él, y el resultado refleja el nombre resuelto. claude.ai solo ofrece el selector mientras un proyecto aún no ha producido ningún diseño, por lo que designSystem pertenece a design_create; en design_iterate solo funciona para un proyecto así y, de lo contrario, genera un error en lugar de ignorar silenciosamente la solicitud. design_variants fundamenta cada variante en el mismo sistema.

  • La fundamentación es obligatoria en design_create y design_variants. Cada llamada debe incluir exactamente uno de: un designSystem no vacío o withoutDesignSystem: true (el booleano true, no "true" ni 1) — nunca ambos, nunca ninguno. Una infracción se rechaza con un único mensaje fijo que menciona list_claude_synced_systems / design_system_list como la forma de descubrir los nombres disponibles, y el rechazo ocurre antes de que exista una sesión de navegador, una página de operación o un proyecto, por lo que una llamada rechazada deja la cuenta intacta. En design_variants, la comprobación se ejecuta antes del fan-out, por lo que una llamada rechazada crea cero proyectos en lugar de devolver errores por variante. Una exclusión puede incluir un withoutDesignSystemReason de texto libre, que solo es válido junto con withoutDesignSystem: true; ambos se reflejan en el resultado y se registran en el historial de llamadas. El equivalente en CLI es create --without-design-system; iterate rechaza esa bandera como desconocida. design_iterate está deliberadamente no sujeto a esta comprobación: un proyecto que ya tiene un diseño ya no ofrece el selector, por lo que no hay nada que elegir allí.

  • design_variants fuerza fresh: true en cada proyecto que crea. Cada variante se nombra <base>-v<N>, y sin fresh una nueva ejecución reutilizaría el proyecto con el mismo nombre de un fan-out anterior — un proyecto que ya tiene un diseño, donde el design system ya no puede adjuntarse.

  • design_create y design_iterate aceptan wait (predeterminado true). Establece wait: false para regresar después de un Chat POST verificado y la vigilancia acotada del formulario de preguntas con { submitted: true, pending: true }; el equivalente en CLI es --no-wait. Un clic o una pulsación de Enter que no produce una solicitud Chat falla en lugar de informar éxito.

  • design_create con un name explícito es buscar-o-crear: un proyecto existente con ese nombre exacto se reutiliza (el más reciente gana en colisiones) y el resultado incluye reused: true, por lo que las llamadas repetidas iteran un proyecto en lugar de acumular duplicados. Pasa fresh: true para forzar un proyecto nuevo. Sin name (nombre derivado del prompt), cada llamada crea un proyecto nuevo como antes.

  • Sondea el trabajo enviado con design_check({ projectId }), o node src/server.mjs check <projectId>. Su status es generating, awaiting_input, done, no_output, interrupted, stalled o resume_exhausted. Cada comprobación reutiliza la página propietaria retenida mientras un turno está activo (sin recargarla), responde un formulario de preguntas cuando es posible y hace clic automáticamente en el botón Resume del banner de interrupción. interrupted significa que el banner estaba presente pero no se pudo reanudar; stalled significa que el árbol de archivos estaba estable sin archivos generados y el último mensaje seguía siendo el prompt del usuario. resume_exhausted es terminal después de tres intentos consecutivos de Resume e incluye resumeAttempts, maxResumeAttempts y problem: "resume_attempts_exhausted". El material del design system _ds/** no se cuenta como salida generada.

Flujo de trabajo asíncrono

# 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>

Requisitos

  • Node.js 22+ (usa fetch/WebSocket integrados; playwright-core es la única dependencia npm)

  • Google Chrome (las herramientas controlan un perfil de Chrome dedicado)

  • Una cuenta de claude.ai con acceso a Design (inicias sesión una vez mediante design_login)

Variables de entorno

  • CLAUDE_DESIGN_PROFILE — directorio del perfil de Chrome dedicado (predeterminado ~/.cache/claude-design-mcp/chrome-profile)

  • CLAUDE_DESIGN_CHROME — ruta a Google Chrome (predeterminado: Google Chrome de macOS)

  • CLAUDE_DESIGN_CDP_PORT — puerto de depuración remota (predeterminado 9377)

  • CLAUDE_DESIGN_DIR — donde design_pull / design_preview escriben, cada uno en su propia carpeta <project>/ (predeterminado: la carpeta de trabajo); un argumento dir explícito se usa tal cual

  • CLAUDE_DESIGN_HISTORY_DIR — donde se añade el historial de tools/call (predeterminado ~/.local/share/opencode-dashboard/claude-design-history, archivo events.ndjsonl)

  • CLAUDE_DESIGN_HEADLESS — establece 1 para controlar Chrome sin interfaz gráfica en lugar de fuera de pantalla

  • CLAUDE_DESIGN_TURN_TIMEOUT_MS — límite máximo por turno de generación (predeterminados: create ~360s, iterate ~240s)

  • CLAUDE_DESIGN_QUIET_MS — cuánto tiempo debe permanecer en silencio la red del turno antes de considerar completa una generación (predeterminado 20000)

  • CLAUDE_DESIGN_PAGE_LEASE_MS — límite máximo independiente para una página propietaria asíncrona si su monitor de finalización se cuelga (predeterminado 2700000, 45 minutos)

  • CLAUDE_DESIGN_CLAUDE_BIN — binario de Claude Code utilizado por design_system_sync (predeterminado claude)

  • CLAUDE_DESIGN_SYNC_TIMEOUT_MS — límite máximo para una ejecución de /design-sync (predeterminado 900000, 15 minutos)

Sincronización del design system

design_system_sync (CLI: sync <dir>) ejecuta claude -p "/design-sync <pre-approval>" --dangerously-skip-permissions --output-format stream-json --verbose con la carpeta del paquete como su directorio de trabajo e informa lo que la sincronización subió. Después de una sincronización exitosa solo de tokens, usa la sesión de Chrome/CDP con sesión iniciada para reemplazar el shim de importación de styles.css subido con el CSS de propiedades personalizadas generado desde ds-bundle/_ds_bundle.css.

  • La carpeta ya debe ser un paquete (package.json + una entrada CSS como styles.css, además de tokens/*.json, guidelines/*.md, README.md). Los componentes son opcionales: se acepta un paquete solo de tokens. La herramienta se niega antes de lanzar el proceso si falta package.json.

  • El código de salida no es la señal de éxito. Una sincronización rechazada aún sale con 0 y subtype: "success", por lo que el resultado solo es ok: true cuando la respuesta incluye un enlace de proyecto real; de lo contrario obtienes { ok: false, error, raw } con la salida completa para el diagnóstico.

  • Una primera ejecución crea el proyecto y escribe .design-sync/config.json, que fija las ejecuciones posteriores al mismo proyecto (una re-ejecución sin cambios es entonces un no-op en lugar de un duplicado). Si tu pipeline regenera la carpeta, haz una instantánea de .design-sync/ antes de reemplazarla y restáurala después — esta herramienta nunca escribe el paquete en sí.

  • El prompt incluye una pre-aprobación (SYNC_ARGS en src/sync.mjs), y es fundamental en una primera ejecución. /design-sync solicita dos confirmaciones AskUserQuestion cuando la carpeta no tiene fijación — acepta el tiempo/costo, luego confirma el nombre del nuevo proyecto antes de create_project — y claude -p no tiene una herramienta AskUserQuestion, por lo que el turno terminaría con la pregunta y no subiría nada (salida 0, subtype: "success", sin enlace de proyecto). La vía de escape de la propia habilidad ("si su solicitud ya reconoció el tiempo/costo… continúa sin volver a preguntar") es lo que invoca la pre-aprobación, y menciona explícitamente la creación del proyecto nuevo. Una re-sincronización fijada nunca llega a ninguna de las dos compuertas, por eso esto solo apareció en una sincronización por primera vez. Claude Code añade el texto después del comando de barra al cuerpo de la habilidad como un bloque ## Hint delimitado, por lo que debe seguir siendo una cadena posicional única sin triple comilla invertida en ella.

  • Una primera sincronización tarda ~10 minutos; las re-ejecuciones sin cambios tardan ~2. La CLI sale con 1 en una sincronización fallida.

  • El resultado añade flattened: true|false. Un fallo de navegador/escritura posterior a la sincronización se informa como flattenError mientras que la subida completada permanece ok: true.

design_system_list (CLI: list-systems) es el lado de lectura de la misma función. claude.ai no tiene un endpoint separado de design systems — los design systems se devuelven mediante el RPC ordinario de lista de proyectos etiquetado PROJECT_TYPE_DESIGN_SYSTEM, que pagina de 20 en 20, por lo que la herramienta sigue cada página y devuelve [{ name, id, publishedAt?, viewedAt? }] (publishedAt solo aparece una vez que un sistema ha sido publicado). Úsalo para confirmar lo que design_system_sync realmente dejó en la cuenta. scripts/probe-design-systems.mjs vuelve a capturar esa forma en vivo si la API cambia.

¿Cuándo está "terminada" una generación?

claude.ai/design impulsa la generación como turnos: tu prompt se transmite a través de un RPC Chat, mantenido vivo por keepalives RenewTurn (~cada 10s) y finalizado por un ReleaseTurn. design_create / design_iterate regresan una vez que los archivos se han estabilizado Y la red del turno ha quedado en silencio durante CLAUDE_DESIGN_QUIET_MS — cómodamente más largo que el intervalo de keepalive, por lo que una generación nunca se corta a mitad de escritura (siempre obtienes un diseño completo y coherente, no uno a medio renderizar).

Si una generación alcanza su plazo máximo antes de que se completen las comprobaciones de silencio/estabilidad, el resultado incluye timedOut: true. Las finalizaciones normales omiten el campo por completo; trata su presencia como una señal de que los archivos devueltos son la mejor instantánea disponible en el momento del tiempo de espera en lugar de un turno completamente silencioso.

Ten en cuenta que claude.ai a menudo ejecuta un pase de refinamiento automático que comienza ~30s después de que el primer diseño se estabiliza, por lo que el diseño sigue mejorando en el servidor después de que la herramienta haya devuelto su primera versión completa. Para obtener la salida más refinada, design_pull / design_preview siempre obtienen el estado más reciente, o aumenta CLAUDE_DESIGN_QUIET_MS (por ejemplo, 60000) para que create espere a través de pases de refinamiento posteriores (a costa de una espera más larga).

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