claude.design-mcp
claude.design-mcp
Ein MCP, das die echte Claude Design-Web-App von deinem Editor/Agenten aus steuert – einmal anmelden, dann erstellen, iterieren und abrufen von Designs, die claude.ai/design auf deinem eigenen Konto generiert (keine lokale Nachahmung).
So funktioniert es
Es steuert dein eigenes eingeloggtes Chrome (ein dediziertes Profil) über CDP mit
playwright-coreund spricht mit der echtenclaude.ai/design-„Omelette“-API als du, über deine Browser-Sitzung.Die Generierung wird so ausgelöst, wie es die Website tut – dein Prompt wird in den Design-Composer getippt und abgeschickt; das Tool wartet dann, bis der Turn abgeschlossen ist (das
ReleaseTurn-Netzwerksignal + Dateibaum-Stabilität) und meldet die Dateien, die Claude Design geschrieben hat. Dateien werden auf Wunsch lokal abgerufen.Projektmetadaten, Dateien, Löschungen und direkte Dateibearbeitungen verwenden die dokumentierten JSON-RPCs (
CreateProject/ListFiles/GetFile/EditFile/DeleteProject), die in der Seite ausgeführt werden, sodass sie deine Sitzung + Cloudflare-Freigabe teilen.Kein
claude -p-Nachahmer. Jedes Design wird von claude.ai/design selbst erzeugt.
Related MCP server: Browser Agent MCP
Offizielles Design-MCP und Protokoll-Urteil (2026-08-12)
Dieses Projekt ist ein unabhängiges CDP-Browser-Automatisierungs-MCP. Es ruft nicht den offiziellen
api.anthropic.com/v1/design/mcp-Endpunkt auf. Wie in So funktioniert es beschrieben, verwendet es
playwright-core und CDP, um eine echte Chrome-Sitzung zu steuern, die bereits in der tatsächlichen
claude.ai/design-Web-App angemeldet ist.
Die Create prompt for Claude Code-Exportnachricht der claude.ai/design-Oberfläche übergibt eine Projekt-URL
in der Form https://claude.ai/design/p/<projectId>. Für diesen Server besteht der passende Ablauf darin,
<projectId> aus dieser URL zu extrahieren und design_pull aufzurufen. Das offizielle Design-MCP ist nicht
erforderlich, um die generierten Dateien zu empfangen.
Die MCP-Protokollrevision, die um den 2026-07-28 diskutiert wurde, einschließlich der zustandslosen Wire-Protokoll-
Änderung, die von einigen MCP-Ökosystemen übernommen wurde, hat keine praktische Auswirkung auf die aktuelle OpenCode-
stdio-Client-Integration oder den Tool-Vertrag. Dieser Server antwortet auf die Initialisierung mit dem festen
protocolVersion: "2024-11-05"-Handshake.
Überprüfe dieses Urteil erneut, wenn eine dieser Bedingungen eintritt:
Der OpenCode-MCP-Client stellt die Unterstützung für die ältere Handshake-Version ein, die dieser Server zurückgibt.
Das Projekt beschließt, seinen CDP-Browser-Automatisierungsansatz durch den offiziellen
api.anthropic.com/v1/design/mcp-Endpunkt zu ersetzen.claude.ai ändert sein Authentifizierungs- oder Sitzungsmodell auf eine Weise, die den CDP-gesteuerten Login-Ablauf beeinflusst.
Tools
Tool | Funktion |
| Einmalig: Chrome öffnen, um sich bei claude.ai/design anzumelden (Sitzung bleibt erhalten) |
| Deine claude.ai/design-Projekte auflisten |
| Ein Projekt erstellen und ein Design aus einem Prompt generieren – |
| Mehrere Designvarianten eines Prompts parallel generieren – |
| Einen Folge-Prompt senden, um ein Design zu ändern – |
| Die Dateien eines Projekts lokal herunterladen – |
| Das eigenständige HTML eines Projekts als ganzseitiges PNG zur Überprüfung rendern – |
| Eine Datei aus einem Projekt lesen – |
| Den Chat-/Turn-Zustand eines Projekts melden – |
| Eine asynchrone Generierung abfragen und wiederherstellen – |
| Eine direkte Dateibearbeitung anwenden – |
| Ein Projekt löschen – |
| Einen materialisierten Design-System-Paketordner als Design-System zu claude.ai hochladen, indem Claude Code |
| Die Design-Systeme auf deinem Konto auflisten (Name + ID), über alle Seiten der Projektliste hinweg |
Jedes Tool akzeptiert außerdem ein optionales caller-Objekt – { directory, sessionID, agent, project? } – das
der MCP-Client injizieren kann, um anzugeben, wer aufruft. Es ist nie ein Generierungsargument: Der Dispatcher entfernt
es, bevor der Handler läuft, und zeichnet es nur in der Aufrufhistorie auf.
Aufrufhistorie
Jeder tools/call-Dispatch hängt genau eine JSON-Zeile an
~/.local/share/opencode-dashboard/claude-design-history/events.ndjsonl an (Verzeichnis 0700, Datei 0600;
überschreibe den Ordner mit CLAUDE_DESIGN_HISTORY_DIR), sodass eine Prompt-Historie über MCP-Neustarts hinweg erhalten bleibt.
Eine Zeile trägt v, eventId, seq, ts, tool, durationMs, ok, error, projectId, projects,
projectName, prompt (wörtlich, nie abgeschnitten), model, designSystem, withoutDesignSystem,
withoutDesignSystemReason, wait, attemptId, caller, pullKind, revision und eine Whitelist-result-Zusammenfassung (nur Zählungen und IDs – niemals Datei-
inhalte, Base64 oder Umgebungsvariablen). Die Aufzeichnung ist Best-Effort-Beobachtbarkeit: Ein fehlgeschlagenes Schreiben warnt nur
auf stderr und macht aus einem funktionierenden Tool-Aufruf nie einen Fehler. Der CLI-Pfad wird nicht aufgezeichnet.
Revisions-Snapshots
Ein erfolgreicher einfacher design_pull (pullKind: "default" – kein dir, kein zip) erstellt außerdem einen Snapshot
des abgerufenen Manifests in <CLAUDE_DESIGN_DIR>/.revisions/<projectId>/<revisionId>/, außerhalb des abgerufenen Baums, sodass
die Bearbeitungshistorie eines Designs später diffbar ist. revisionId ist <YYYYMMDDTHHmmssSSS>-<uuid8> in UTC, sodass die
Namensreihenfolge der Zeitreihenfolge entspricht. Jeder Ordner enthält eine .meta.json mit der SHA-256-Liste pro Datei, einem Gesamt-hash
und incomplete: true, wenn der Abruf partielle Dateifehler meldete. Der Snapshot wird in
.staging-<revisionId>/ bereitgestellt und atomar umbenannt, sodass Listener nur abgeschlossene Revisionen sehen (überspringe jeden Namen, der
mit . beginnt). Ein Abruf, dessen Inhalts-Hash und Vollständigkeit beide mit der vorherigen Revision übereinstimmen, wird übersprungen
und meldet revision: null, was „unverändert – die vorherige Revision ist weiterhin aktuell“ bedeutet. Snapshot-
Fehler sind auf dieselbe Weise nicht fatal: revision: null plus eine stderr-Warnung, Tool-Ergebnis unverändert.
Einrichtung
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)Als lokales MCP registrieren (opencode-Beispiel):
{ "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]Nach dem einmaligen login laufen list/create/iterate/pull ohne sichtbares Fenster
(Off-Screen-Chrome) und verwenden die gespeicherte Sitzung erneut.
Generierungsoptionen
design_create,design_iterateunddesign_variantsakzeptieren ein optionalesmodel. Verwende eine Familie (opus,sonnet,haikuoderfable), um die neueste Version dieser Familie aus dem Live-Menü von claude.ai/design auszuwählen. Pinne eine Version mit Formen wieopus-4.8,opus-5,opus 5.0,claude-opus-4-8oderanthropic/claude-opus-5. Neue Familienversionen werden automatisch verfügbar, sobald sie im Site-Menü erscheinen. Wenn eine angeforderte Version nicht verfügbar ist, listet der Fehler die Live-Menüoptionen auf. Für CLIcreateunditerateübergib denselben Wert an--model.design_create,design_iterateunddesign_variantsakzeptieren eindesignSystem(CLI--design-system), den Namen eines der Konten-Designsysteme, die vondesign_system_listgemeldet werden. Der Abgleich erfolgt ohne Beachtung der Groß-/Kleinschreibung, ein eindeutiger Teilname funktioniert, und ein unbekannter Name erzeugt einen Fehler mit der Liste, die der Composer anbietet. Das gewählte System ersetzt die Organisationsstandard-Einstellung, anstatt sie zu ergänzen, und das Ergebnis gibt den aufgelösten Namen zurück. claude.ai bietet den Auswähler nur solange ein Projekt noch kein Design erzeugt hat, daher gehörtdesignSystemzudesign_create; beidesign_iteratefunktioniert es nur für ein solches Projekt und erzeugt andernfalls einen Fehler, anstatt die Anfrage stillschweigend zu ignorieren.design_variantsverankert jede Variante im selben System.Grounding ist bei
design_createunddesign_variantsverpflichtend. Jeder Aufruf muss genau eines von einem nicht-leerendesignSystemoderwithoutDesignSystem: true(der boolesche Werttrue, nicht"true"oder1) enthalten – niemals beides, niemals keines. Ein Verstoß wird mit einer festen Meldung abgelehnt, dielist_claude_synced_systems/design_system_listals Weg zur Ermittlung der verfügbaren Namen nennt, und die Ablehnung erfolgt bevor eine Browsersitzung, eine Operationsseite oder ein Projekt existiert, sodass ein abgelehnter Aufruf das Konto unangetastet lässt. Beidesign_variantsläuft die Prüfung oberhalb des Fan-outs, sodass ein abgelehnter Aufruf null Projekte erstellt, anstatt pro Variante Fehler zurückzugeben. Ein Opt-out kann einen FreitextwithoutDesignSystemReasonenthalten, der nur zusammen mitwithoutDesignSystem: truegültig ist; beide werden im Ergebnis zurückgegeben und im Aufrufverlauf protokolliert. Das CLI-Äquivalent istcreate --without-design-system;iteratelehnt dieses Flag als unbekannt ab.design_iterateist bewusst nicht abgesichert: Ein Projekt, das bereits ein Design enthält, bietet den Auswähler nicht mehr an, daher gibt es dort nichts auszuwählen.design_variantserzwingtfresh: truefür jedes Projekt, das es erstellt. Jede Variante wird<base>-v<N>genannt, und ohnefreshwürde ein erneuter Lauf das gleichnamige Projekt aus einem früheren Fan-out wiederverwenden – ein Projekt, das bereits ein Design enthält, an dem das Designsystem nicht mehr angehängt werden kann.design_createunddesign_iterateakzeptierenwait(Standardtrue). Setzewait: false, um nach einem verifiziertenChat-POST und der begrenzten Frageformular-Überwachung mit{ submitted: true, pending: true }zurückzukehren; das CLI-Äquivalent ist--no-wait. Ein Klick oder Tastendruck, der keineChat-Anfrage erzeugt, schlägt fehl, anstatt einen Erfolg zu melden.design_createmit einem explizitennameist Finde-oder-Erstelle: Ein vorhandenes Projekt mit diesem exakten Namen wird wiederverwendet (bei Kollisionen gewinnt das neueste) und das Ergebnis trägtreused: true, sodass wiederholte Aufrufe ein Projekt iterieren, anstatt Duplikate anzuhäufen. Übergibfresh: true, um ein neues Projekt zu erzwingen. Ohnename(aus der Eingabeaufforderung abgeleiteter Name) erstellt jeder Aufruf wie zuvor ein neues Projekt.Frage eingereichte Arbeit mit
design_check({ projectId })ab, odernode src/server.mjs check <projectId>. Seinstatusistgenerating,awaiting_input,done,no_output,interrupted,stalledoderresume_exhausted. Jede Prüfung verwendet die gehaltene Besitzerseite erneut, solange ein Zug aktiv ist (ohne sie neu zu laden), beantwortet ein Frageformular, wenn möglich, und klickt automatisch dieResume-Schaltfläche des Unterbrechungsbanners.interruptedbedeutet, dass das Banner vorhanden war, aber nicht fortgesetzt werden konnte;stalledbedeutet, dass der Dateibaum stabil war, ohne generierte Dateien, und die letzte Nachricht immer noch die Eingabeaufforderung des Benutzers war.resume_exhaustedist endgültig nach drei aufeinanderfolgenden Resume-Versuchen und enthältresumeAttempts,maxResumeAttemptsundproblem: "resume_attempts_exhausted"._ds/**-Designsystem-Material wird nicht als generierte Ausgabe gezählt.
Asynchroner Workflow
# 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>Anforderungen
Node.js 22+ (verwendet eingebautes
fetch/WebSocket;playwright-coreist die einzige npm-Abhängigkeit)Google Chrome (die Tools steuern ein dediziertes Chrome-Profil)
Ein claude.ai-Konto mit Design-Zugriff (du meldest dich einmalig über
design_loginan)
Env
CLAUDE_DESIGN_PROFILE– dediziertes Chrome-Profilverzeichnis (Standard~/.cache/claude-design-mcp/chrome-profile)CLAUDE_DESIGN_CHROME– Pfad zu Google Chrome (Standard: macOS Google Chrome)CLAUDE_DESIGN_CDP_PORT– Remote-Debugging-Port (Standard9377)CLAUDE_DESIGN_DIR– wohindesign_pull/design_previewschreiben, jeweils in einen eigenen<project>/-Ordner (Standard: der Arbeitsordner); ein explizitesdir-Argument wird unverändert verwendetCLAUDE_DESIGN_HISTORY_DIR– wohin dertools/call-Verlauf angehängt wird (Standard~/.local/share/opencode-dashboard/claude-design-history, Dateievents.ndjsonl)CLAUDE_DESIGN_HEADLESS– setze1, um headless Chrome anstelle von Off-Screen zu steuernCLAUDE_DESIGN_TURN_TIMEOUT_MS– harte Obergrenze pro Generierungszug (Standard: create ~360s, iterate ~240s)CLAUDE_DESIGN_QUIET_MS– wie lange das Zug-Netzwerk still bleiben muss, bevor eine Generierung als abgeschlossen beurteilt wird (Standard20000)CLAUDE_DESIGN_PAGE_LEASE_MS– unabhängige harte Obergrenze für eine asynchrone Besitzerseite, wenn ihr Abschlussmonitor hängt (Standard2700000, 45 Minuten)CLAUDE_DESIGN_CLAUDE_BIN– Claude-Code-Binärdatei, die vondesign_system_syncverwendet wird (Standardclaude)CLAUDE_DESIGN_SYNC_TIMEOUT_MS– harte Obergrenze für einen/design-sync-Lauf (Standard900000, 15 Minuten)
Designsystem-Synchronisierung
design_system_sync (CLI: sync <dir>) führt
claude -p "/design-sync <pre-approval>" --dangerously-skip-permissions --output-format stream-json --verbose
mit dem Paketordner als Arbeitsverzeichnis aus und meldet, was die Synchronisierung hochgeladen hat. Nach einer
erfolgreichen Nur-Tokens-Synchronisierung verwendet es die angemeldete Chrome/CDP-Sitzung, um den hochgeladenen
styles.css-Import-Shim durch das generierte Custom-Property-CSS aus ds-bundle/_ds_bundle.css zu ersetzen.
Der Ordner muss bereits ein Paket sein (
package.json+ ein CSS-Einstiegspunkt wiestyles.css, plustokens/*.json,guidelines/*.md,README.md). Komponenten sind optional – ein Nur-Tokens- Paket wird akzeptiert. Das Tool lehnt ab, bevor es startet, wennpackage.jsonfehlt.Der Exit-Status ist nicht das Erfolgssignal. Eine abgelehnte Synchronisierung beendet sich trotzdem mit
0undsubtype: "success", daher ist das Ergebnis nurok: true, wenn die Antwort einen echten Projektlink enthält; andernfalls erhältst du{ ok: false, error, raw }mit der vollständigen Ausgabe zur Diagnose.Ein erster Lauf erstellt das Projekt und schreibt
.design-sync/config.json, das spätere Läufe pinnt auf dasselbe Projekt (ein unveränderter erneuter Lauf ist dann ein No-op anstelle eines Duplikats). Wenn deine Pipeline den Ordner neu generiert, sichere.design-sync/, bevor du ihn ersetzt, und stelle ihn danach wieder her – dieses Tool schreibt niemals das Paket selbst.Die Eingabeaufforderung trägt eine Vorabgenehmigung (
SYNC_ARGSinsrc/sync.mjs), und sie ist bei einem ersten Lauf tragend./design-syncfragt nach zweiAskUserQuestion-Bestätigungen, wenn der Ordner keinen Pin hat – akzeptiere die Zeit/Kosten, bestätige dann den Namen des neuen Projekts vorcreate_project– undclaude -phat keinAskUserQuestion-Tool, daher würde der Zug mit der Frage enden und nichts hochladen (Exit0,subtype: "success", kein Projektlink). Die eigene Notluke des Skills („wenn ihre Anfrage die Zeit/Kosten bereits anerkannt hat … ohne erneutes Nachfragen fortfahren") ist das, was die Vorabgenehmigung aufruft, und sie nennt die Erstellung des frischen Projekts explizit. Ein gepinnter erneuter Sync trifft niemals auf eines der beiden Tore, weshalb dies nur bei einer Erst-Synchronisierung auftrat. Claude Code hängt den Text nach dem Slash-Befehl an den Skill-Body als umrahmten## Hint-Block an, daher muss er eine positionale Zeichenfolge ohne darin enthaltene dreifache Backticks bleiben.Eine erste Synchronisierung dauert ~10 Minuten; unveränderte erneute Läufe dauern ~2. Das CLI beendet sich bei einer fehlgeschlagenen Synchronisierung mit
1.Das Ergebnis fügt
flattened: true|falsehinzu. Ein Browser-/Schreibfehler nach der Synchronisierung wird alsflattenErrorgemeldet, während der abgeschlossene Uploadok: truebleibt.
design_system_list (CLI: list-systems) ist die Leseseite derselben Funktion. claude.ai hat keinen
separaten Designsystem-Endpunkt – Designsysteme werden vom gewöhnlichen Projektlisten-RPC zurückgegeben,
das mit PROJECT_TYPE_DESIGN_SYSTEM gekennzeichnet ist und 20 auf einmal seitenweise liefert, daher folgt das Tool jeder Seite und
gibt [{ name, id, publishedAt?, viewedAt? }] zurück (publishedAt erscheint nur, sobald ein System
veröffentlicht wurde). Verwende es, um zu bestätigen, was design_system_sync tatsächlich auf dem Konto gelandet ist.
scripts/probe-design-systems.mjs erfasst diese Live-Form erneut, falls sich die API ändert.
Wann ist eine Generierung „fertig"?
claude.ai/design steuert die Generierung als Züge: Deine Eingabeaufforderung streamt über einen Chat-RPC,
der durch RenewTurn-Keepalives (~alle 10s) am Leben gehalten und durch ein ReleaseTurn beendet wird. design_create /
design_iterate kehren zurück, sobald die Dateien sich beruhigt haben UND das Zug-Netzwerk still geworden ist für
CLAUDE_DESIGN_QUIET_MS – deutlich länger als das Keepalive-Intervall, sodass eine Generierung niemals
mitten im Schreiben abgeschnitten wird (du erhältst immer ein vollständiges, kohärentes Design, kein halb gerendertes).
Wenn eine Generierung ihre harte Frist erreicht, bevor die Ruhe-/Stabilitätsprüfungen abgeschlossen sind, enthält das Ergebnis
timedOut: true. Normale Abschlüsse lassen das Feld vollständig weg; behandle sein Vorhandensein als Signal, dass die
zurückgegebenen Dateien die beste verfügbare Momentaufnahme zum Zeitpunkt des Timeouts sind, anstatt eines vollständig ruhigen Zugs.
Beachte, dass claude.ai oft einen automatischen Verfeinerungslauf ausführt, der ~30s nachdem das erste Design
sich beruhigt hat, beginnt, sodass sich das Design auf dem Server weiter verbessert, nachdem das Tool seine erste vollständige
Version zurückgegeben hat. Um die am stärksten verfeinerte Ausgabe zu erhalten, rufen design_pull / design_preview immer den neuesten Stand
ab, oder erhöhe CLAUDE_DESIGN_QUIET_MS (z. B. 60000), damit create auf spätere Verfeinerungsläufe
wartet (auf Kosten einer längeren Wartezeit).
Available Tools
10 toolsdesign_createC
Create a Claude Design project and submit the initial prompt through the composer.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| prompt | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| edits | Yes | ||
| projectId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| projectId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| projectId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | No | ||
| name | No | ||
| path | No | ||
| width | No | ||
| height | No | ||
| projectId | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | No | ||
| zip | No | ||
| name | No | ||
| projectId | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
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.
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.
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.
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.
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.
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
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.
All tools follow a uniform 'design_<verb>' pattern, using snake_case throughout, making naming predictable and easy to understand.
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.
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
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
Read, edit, publish, and preview your pepita websites from Claude.
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
Run UX research from Claude — create card sort studies, list studies, pull headline stats.
Build, clone & publish websites by chatting with Claude. Live in seconds, custom domains + SSL.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables automation of browser tasks using Playwright by interacting via Claude Desktop for executing user-defined prompts and operations.1212MIT
- AlicenseAqualityBmaintenanceA Model Context Protocol (MCP) integration that provides Claude Desktop with autonomous browser automation capabilities. This agent enables Claude to interact with web content, manipulate DOM elements, execute JavaScript, and perform API requests.13441TypeScriptMozilla Public 2.0
- FlicenseNot gradedqualityBmaintenanceEnables Claude Code to control a real browser using AI for web scraping, competitive intelligence, and UX auditing through the MCP protocol.
- AlicenseNot gradedqualityDmaintenanceEnables natural language browser automation through Claude, wrapping Playwright to execute commands like navigation, clicking, form filling, and screenshots.2030MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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