Skip to main content
Glama
coin-seeker

claude.design-mcp

by coin-seeker

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-core und spricht mit der echten claude.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:

  1. Der OpenCode-MCP-Client stellt die Unterstützung für die ältere Handshake-Version ein, die dieser Server zurückgibt.

  2. Das Projekt beschließt, seinen CDP-Browser-Automatisierungsansatz durch den offiziellen api.anthropic.com/v1/design/mcp-Endpunkt zu ersetzen.

  3. claude.ai ändert sein Authentifizierungs- oder Sitzungsmodell auf eine Weise, die den CDP-gesteuerten Login-Ablauf beeinflusst.

Tools

Tool

Funktion

design_login

Einmalig: Chrome öffnen, um sich bei claude.ai/design anzumelden (Sitzung bleibt erhalten)

design_list

Deine claude.ai/design-Projekte auflisten

design_create

Ein Projekt erstellen und ein Design aus einem Prompt generieren – prompt, designSystem XOR withoutDesignSystem: true (+ withoutDesignSystemReason?), name?, wait?, model?, fresh?

design_variants

Mehrere Designvarianten eines Prompts parallel generieren – prompt, designSystem XOR withoutDesignSystem: true (+ withoutDesignSystemReason?), count?, axis?, name?, preview?, model?

design_iterate

Einen Folge-Prompt senden, um ein Design zu ändern – projectId, prompt, wait?, model?, designSystem?

design_pull

Die Dateien eines Projekts lokal herunterladen – projectId oder name, dir?, zip?

design_preview

Das eigenständige HTML eines Projekts als ganzseitiges PNG zur Überprüfung rendern – projectId oder name, path?, dir?, width?

design_get

Eine Datei aus einem Projekt lesen – projectId, path

design_status

Den Chat-/Turn-Zustand eines Projekts melden – projectId

design_check

Eine asynchrone Generierung abfragen und wiederherstellen – projectId; gibt generating, awaiting_input, done, no_output, interrupted, stalled oder resume_exhausted zurück

design_edit

Eine direkte Dateibearbeitung anwenden – projectId, path, edits

design_delete

Ein Projekt löschen – projectId, confirm (muss true sein; ohne wird der Aufruf abgelehnt)

design_system_sync

Einen materialisierten Design-System-Paketordner als Design-System zu claude.ai hochladen, indem Claude Code /design-sync darin ausgeführt wird – dir

design_system_list

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_iterate und design_variants akzeptieren ein optionales model. Verwende eine Familie (opus, sonnet, haiku oder fable), um die neueste Version dieser Familie aus dem Live-Menü von claude.ai/design auszuwählen. Pinne eine Version mit Formen wie opus-4.8, opus-5, opus 5.0, claude-opus-4-8 oder anthropic/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 CLI create und iterate übergib denselben Wert an --model.

  • design_create, design_iterate und design_variants akzeptieren ein designSystem (CLI --design-system), den Namen eines der Konten-Designsysteme, die von design_system_list gemeldet 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ört designSystem zu design_create; bei design_iterate funktioniert es nur für ein solches Projekt und erzeugt andernfalls einen Fehler, anstatt die Anfrage stillschweigend zu ignorieren. design_variants verankert jede Variante im selben System.

  • Grounding ist bei design_create und design_variants verpflichtend. Jeder Aufruf muss genau eines von einem nicht-leeren designSystem oder withoutDesignSystem: true (der boolesche Wert true, nicht "true" oder 1) enthalten – niemals beides, niemals keines. Ein Verstoß wird mit einer festen Meldung abgelehnt, die list_claude_synced_systems / design_system_list als 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. Bei design_variants lä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 Freitext withoutDesignSystemReason enthalten, der nur zusammen mit withoutDesignSystem: true gültig ist; beide werden im Ergebnis zurückgegeben und im Aufrufverlauf protokolliert. Das CLI-Äquivalent ist create --without-design-system; iterate lehnt dieses Flag als unbekannt ab. design_iterate ist 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_variants erzwingt fresh: true für jedes Projekt, das es erstellt. Jede Variante wird <base>-v<N> genannt, und ohne fresh wü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_create und design_iterate akzeptieren wait (Standard true). Setze wait: false, um nach einem verifizierten Chat-POST und der begrenzten Frageformular-Überwachung mit { submitted: true, pending: true } zurückzukehren; das CLI-Äquivalent ist --no-wait. Ein Klick oder Tastendruck, der keine Chat-Anfrage erzeugt, schlägt fehl, anstatt einen Erfolg zu melden.

  • design_create mit einem expliziten name ist Finde-oder-Erstelle: Ein vorhandenes Projekt mit diesem exakten Namen wird wiederverwendet (bei Kollisionen gewinnt das neueste) und das Ergebnis trägt reused: true, sodass wiederholte Aufrufe ein Projekt iterieren, anstatt Duplikate anzuhäufen. Übergib fresh: true, um ein neues Projekt zu erzwingen. Ohne name (aus der Eingabeaufforderung abgeleiteter Name) erstellt jeder Aufruf wie zuvor ein neues Projekt.

  • Frage eingereichte Arbeit mit design_check({ projectId }) ab, oder node src/server.mjs check <projectId>. Sein status ist generating, awaiting_input, done, no_output, interrupted, stalled oder resume_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 die Resume-Schaltfläche des Unterbrechungsbanners. interrupted bedeutet, dass das Banner vorhanden war, aber nicht fortgesetzt werden konnte; stalled bedeutet, dass der Dateibaum stabil war, ohne generierte Dateien, und die letzte Nachricht immer noch die Eingabeaufforderung des Benutzers war. resume_exhausted ist endgültig nach drei aufeinanderfolgenden Resume-Versuchen und enthält resumeAttempts, maxResumeAttempts und problem: "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-core ist 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_login an)

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 (Standard 9377)

  • CLAUDE_DESIGN_DIR – wohin design_pull / design_preview schreiben, jeweils in einen eigenen <project>/-Ordner (Standard: der Arbeitsordner); ein explizites dir-Argument wird unverändert verwendet

  • CLAUDE_DESIGN_HISTORY_DIR – wohin der tools/call-Verlauf angehängt wird (Standard ~/.local/share/opencode-dashboard/claude-design-history, Datei events.ndjsonl)

  • CLAUDE_DESIGN_HEADLESS – setze 1, um headless Chrome anstelle von Off-Screen zu steuern

  • CLAUDE_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 (Standard 20000)

  • CLAUDE_DESIGN_PAGE_LEASE_MS – unabhängige harte Obergrenze für eine asynchrone Besitzerseite, wenn ihr Abschlussmonitor hängt (Standard 2700000, 45 Minuten)

  • CLAUDE_DESIGN_CLAUDE_BIN – Claude-Code-Binärdatei, die von design_system_sync verwendet wird (Standard claude)

  • CLAUDE_DESIGN_SYNC_TIMEOUT_MS – harte Obergrenze für einen /design-sync-Lauf (Standard 900000, 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 wie styles.css, plus tokens/*.json, guidelines/*.md, README.md). Komponenten sind optional – ein Nur-Tokens- Paket wird akzeptiert. Das Tool lehnt ab, bevor es startet, wenn package.json fehlt.

  • Der Exit-Status ist nicht das Erfolgssignal. Eine abgelehnte Synchronisierung beendet sich trotzdem mit 0 und subtype: "success", daher ist das Ergebnis nur ok: 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_ARGS in src/sync.mjs), und sie ist bei einem ersten Lauf tragend. /design-sync fragt nach zwei AskUserQuestion-Bestätigungen, wenn der Ordner keinen Pin hat – akzeptiere die Zeit/Kosten, bestätige dann den Namen des neuen Projekts vor create_project – und claude -p hat kein AskUserQuestion-Tool, daher würde der Zug mit der Frage enden und nichts hochladen (Exit 0, 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|false hinzu. Ein Browser-/Schreibfehler nach der Synchronisierung wird als flattenError gemeldet, während der abgeschlossene Upload ok: true bleibt.

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