claude.design-mcp
claude.design-mcp
에디터/에이전트에서 실제 Claude Design 웹 앱을 구동하는 MCP입니다. 한 번 로그인하면 생성, 반복 작업, 가져오기를 통해 claude.ai/design이 사용자 계정에서 생성한 디자인을 가져올 수 있습니다(로컬 모방이 아님).
작동 방식
사용자가 로그인한 Chrome(전용 프로필)을 CDP를 통해
playwright-core로 구동하며, 실제claude.ai/design"Omelette" API와 사용자로서 브라우저 세션을 통해 통신합니다.생성은 웹사이트가 하는 방식 그대로 트리거됩니다 — 프롬프트가 디자인 컴포저에 입력되어 제출되고, 도구는 턴이 끝날 때까지(
ReleaseTurn네트워크 신호 + 파일 트리 안정성) 대기한 후 Claude Design이 작성한 파일을 보고합니다. 파일은 요청 시 로컬로 가져옵니다.프로젝트 메타데이터, 파일, 삭제, 직접 파일 편집은 문서화된 JSON RPC(
CreateProject/ListFiles/GetFile/EditFile/DeleteProject)를 사용하며, 페이지 내에서 실행되어 세션과 Cloudflare 클리어런스를 공유합니다.claude -p모방이 아닙니다. 모든 디자인은 claude.ai/design 자체에서 생성됩니다.
Related MCP server: Browser Agent MCP
공식 Design MCP 및 프로토콜 판정 (2026-08-12)
이 프로젝트는 독립적인 CDP 브라우저 자동화 MCP입니다. 공식 api.anthropic.com/v1/design/mcp 엔드포인트를 호출하지 않습니다. 작동 방식에 설명된 대로 playwright-core와 CDP를 사용하여 실제 claude.ai/design 웹 앱에 이미 로그인된 실제 Chrome 세션을 구동합니다.
claude.ai/design UI의 Create prompt for Claude Code 내보내기 메시지는 https://claude.ai/design/p/<projectId> 형식의 프로젝트 URL을 전달합니다. 이 서버의 경우 일치하는 흐름은 해당 URL에서 <projectId>를 추출하여 design_pull을 호출하는 것입니다. 생성된 파일을 받기 위해 공식 Design MCP는 필요하지 않습니다.
2026-07-28경 논의된 MCP 프로토콜 개정(일부 MCP 생태계에서 채택한 상태 비저장 와이어 프로토콜 변경 포함)은 현재 OpenCode stdio 클라이언트 통합 또는 도구 계약에 실질적인 영향을 미치지 않습니다. 이 서버는 고정된 protocolVersion: "2024-11-05" 핸드셰이크로 초기화에 응답합니다.
다음 조건 중 하나가 발생하면 이 판정을 재검토하십시오:
OpenCode MCP 클라이언트가 이 서버가 반환하는 이전 핸드셰이크 버전에 대한 지원을 중단하는 경우.
프로젝트가 CDP 브라우저 자동화 방식을 공식
api.anthropic.com/v1/design/mcp엔드포인트로 대체하기로 결정한 경우.claude.ai가 CDP 기반 로그인 흐름에 영향을 주는 방식으로 인증 또는 세션 모델을 변경하는 경우.
도구
도구 | 기능 |
| 일회성: claude.ai/design에 로그인하기 위해 Chrome을 엽니다(세션 유지) |
| claude.ai/design 프로젝트 목록을 표시합니다 |
| 프로젝트를 만들고 프롬프트에서 디자인을 생성합니다 — |
| 하나의 프롬프트에서 여러 디자인 변형을 병렬로 생성합니다 — |
| 디자인을 수정하기 위해 후속 프롬프트를 보냅니다 — |
| 프로젝트의 파일을 로컬로 다운로드합니다 — |
| 프로젝트의 자체 포함 HTML을 전체 페이지 PNG로 렌더링하여 검토합니다 — |
| 프로젝트에서 파일 하나를 읽습니다 — |
| 프로젝트의 채팅/턴 상태를 보고합니다 — |
| 비동기 생성을 폴링하고 복구합니다 — |
| 직접 파일 편집을 적용합니다 — |
| 프로젝트를 삭제합니다 — |
| 구체화된 디자인 시스템 패키지 폴더를 디자인 시스템으로 claude.ai에 업로드합니다. 해당 폴더에서 Claude Code |
| 계정의 디자인 시스템 목록(이름 + id)을 프로젝트 목록의 모든 페이지에 걸쳐 표시합니다 |
모든 도구는 선택적 caller 객체 — { directory, sessionID, agent, project? } — 도 허용하며, MCP 클라이언트가 호출자를 식별하기 위해 주입할 수 있습니다. 이는 생성 인수가 아닙니다. 디스패처는 핸들러가 실행되기 전에 이를 제거하고 호출 기록에만 기록합니다.
호출 기록
모든 tools/call 디스패치는 정확히 하나의 JSON 줄을
~/.local/share/opencode-dashboard/claude-design-history/events.ndjsonl (디렉토리 0700, 파일 0600; 폴더는 CLAUDE_DESIGN_HISTORY_DIR로 재정의 가능)에 추가하므로 프롬프트 기록이 MCP 재시작 후에도 유지됩니다. 한 줄에는 v, eventId, seq, ts, tool, durationMs, ok, error, projectId, projects,
projectName, prompt (원문 그대로, 절대 잘리지 않음), model, designSystem, withoutDesignSystem,
withoutDesignSystemReason, wait, attemptId, caller, pullKind, revision, 그리고 허용 목록에 있는 result 요약(개수와 id만 — 절대 파일
내용, base64, 환경 값은 포함하지 않음)이 포함됩니다. 기록은 최선의 관찰 가능성입니다. 실패한 쓰기는 stderr에 경고만 출력하며 작동 중인 도구 호출을 오류로 만들지 않습니다. CLI 경로는 기록되지 않습니다.
리비전 스냅샷
성공적인 일반 design_pull (pullKind: "default" — dir 없음, zip 없음)은 가져온 매니페스트를
가져온 트리 외부의 <CLAUDE_DESIGN_DIR>/.revisions/<projectId>/<revisionId>/에 스냅샷으로 저장하므로
디자인의 편집 기록을 나중에 diff할 수 있습니다. revisionId는 UTC 기준 <YYYYMMDDTHHmmssSSS>-<uuid8> 형식이므로
이름 순서가 시간 순서입니다. 각 폴더에는 파일별 SHA-256 목록, 총 hash, 그리고 가져오기에서 부분 파일 오류를 보고한 경우 incomplete: true가 포함된 .meta.json이 있습니다. 스냅샷은
.staging-<revisionId>/에 준비된 후 원자적으로 이름이 바뀌므로 목록 조회자는 완성된 리비전만 볼 수 있습니다(.로 시작하는 이름은 건너뜁니다). 콘텐츠 해시와 완전성이 모두 이전 리비전과 일치하는 가져오기는 건너뛰고
revision: null을 보고합니다. 즉 "변경 없음 — 이전 리비전이 여전히 최신"을 의미합니다. 스냅샷
실패는 동일한 방식으로 치명적이지 않습니다: revision: null과 stderr 경고, 도구 결과는 그대로입니다.
설정
npm install # installs playwright-core (NO browser download — uses your Chrome)
node src/server.mjs login # opens Chrome once; log into claude.ai (session is then reused, invisibly)로컬 MCP로 등록 (opencode 예시):
{ "mcp": { "claude-design": { "type": "local", "command": ["node", "/abs/path/claude.design-mcp/src/server.mjs"], "enabled": true } } }CLI
node src/server.mjs login
node src/server.mjs list
node src/server.mjs list-systems
node src/server.mjs create "simple pricing card" pricing --design-system "Frontend Design System"
node src/server.mjs create "minimal landing page for a coffee shop" coffee --model opus --without-design-system
node src/server.mjs iterate <projectId> "add a dark mode toggle to the header" --model sonnet
node src/server.mjs check <projectId>
node src/server.mjs pull <projectId|name>
node src/server.mjs preview <projectId|name> [outDir] [width]
node src/server.mjs delete <projectId>
node src/server.mjs sync <packageDir> [--timeout-ms 900000]일회성 login 후 list/create/iterate/pull은 보이는 창 없이(오프스크린 Chrome) 실행되며 지속된 세션을 재사용합니다.
생성 옵션
design_create,design_iterate,design_variants는 선택적model을 받습니다. 패밀리(opus,sonnet,haiku,fable)를 사용하면 라이브 claude.ai/design 메뉴에서 해당 패밀리의 최신 버전을 선택합니다.opus-4.8,opus-5,opus 5.0,claude-opus-4-8,anthropic/claude-opus-5와 같은 형태로 버전을 고정할 수 있습니다. 새 패밀리 버전은 사이트 메뉴에 나타나면 자동으로 사용 가능해집니다. 요청한 버전을 사용할 수 없으면 오류에 라이브 메뉴 옵션이 나열됩니다. CLIcreate및iterate의 경우 동일한 값을--model에 전달합니다.design_create,design_iterate,design_variants는designSystem(CLI--design-system)을 받습니다. 이는design_system_list가 보고하는 계정 디자인 시스템 중 하나의 이름입니다. 대소문자를 구분하지 않고 일치하며, 모호하지 않은 부분 이름도 작동하며, 알 수 없는 이름은 컴포저가 제공하는 목록과 함께 오류를 반환합니다. 선택한 시스템은 조직 기본값을 대체하며(추가하지 않음), 결과에는 해석된 이름이 반영됩니다. claude.ai는 프로젝트가 아직 디자인을 생성하지 않은 동안에만 선택기를 제공하므로designSystem은design_create에 속합니다.design_iterate에서는 그러한 프로젝트에 대해서만 작동하며, 그 외에는 요청을 조용히 무시하는 대신 오류를 반환합니다.design_variants는 모든 변형을 동일한 시스템에 기반합니다.design_create및design_variants에는 접지(grounding)가 필수입니다. 각 호출은 비어 있지 않은designSystem또는withoutDesignSystem: true(불리언true이지"true"나1이 아님) 중 정확히 하나를 반드시 포함해야 합니다 — 둘 다는 안 되고, 둘 다 없어도 안 됩니다. 위반 시 사용 가능한 이름을 확인하는 방법으로list_claude_synced_systems/design_system_list를 명시하는 하나의 고정 메시지로 거부되며, 거부는 브라우저 세션, 작업 페이지, 프로젝트가 존재하기 이전에 발생하므로 거부된 호출은 계정에 아무런 영향을 주지 않습니다.design_variants에서는 검사가 팬아웃보다 먼저 실행되므로 거부된 호출은 변형별 오류를 반환하는 대신 프로젝트를 0개 생성합니다. 옵트아웃에는 자유 형식의withoutDesignSystemReason이 포함될 수 있으며, 이는withoutDesignSystem: true와 함께일 때만 유효합니다. 둘 다 결과에 반영되고 호출 기록에 기록됩니다. CLI 등가물은create --without-design-system이며,iterate는 해당 플래그를 알 수 없는 것으로 거부합니다.design_iterate는 의도적으로 게이트가 없습니다: 이미 디자인을 보유한 프로젝트는 더 이상 선택기를 제공하지 않으므로 선택할 항목이 없습니다.design_variants는 생성하는 모든 프로젝트에fresh: true를 강제합니다. 각 변형은<base>-v<N>으로 이름이 지정되며,fresh없이 재실행하면 이전 팬아웃의 동일한 이름의 프로젝트를 재사용합니다 — 이미 디자인을 보유한 프로젝트에는 디자인 시스템을 더 이상 연결할 수 없습니다.design_create및design_iterate는wait(기본값true)를 받습니다.wait: false로 설정하면 검증된ChatPOST와 제한된 질문 양식 감시 후{ submitted: true, pending: true }와 함께 반환됩니다. CLI 등가물은--no-wait입니다.Chat요청을 생성하지 않는 클릭 또는 Enter 누름은 성공을 보고하는 대신 실패합니다.명시적
name이 있는design_create는 find-or-create입니다: 정확히 해당 이름의 기존 프로젝트가 재사용되고(충돌 시 최신 항목이 우선) 결과에reused: true가 포함되므로 반복 호출은 중복을 쌓는 대신 하나의 프로젝트를 반복합니다.fresh: true를 전달하면 새 프로젝트를 강제로 만듭니다.name이 없으면(프롬프트에서 파생된 이름) 이전과 같이 모든 호출이 새 프로젝트를 만듭니다.제출된 작업은
design_check({ projectId })또는node src/server.mjs check <projectId>로 폴링합니다.status는generating,awaiting_input,done,no_output,interrupted,stalled,resume_exhausted중 하나입니다. 각 검사는 턴이 활성화된 동안 보유한 소유자 페이지를 재사용하고(다시 로드하지 않음), 가능하면 질문 양식에 답변하며, 중단 배너의Resume버튼을 자동으로 클릭합니다.interrupted는 배너가 있었지만 재개할 수 없었음을 의미하고,stalled는 파일 트리가 생성된 파일 없이 안정적이고 마지막 메시지가 여전히 사용자 프롬프트였음을 의미합니다.resume_exhausted는 3회 연속 Resume 시도 후 종료 상태이며resumeAttempts,maxResumeAttempts,problem: "resume_attempts_exhausted"를 포함합니다._ds/**디자인 시스템 자료는 생성된 출력으로 계산되지 않습니다.
비동기 워크플로
# 1. Submit without waiting
node src/server.mjs create "카드 UI" my-card --no-wait --model opus
# → { projectId: "...", submitted: true, pending: true }
# 2. Continue with other work...
# 3. Poll for completion (every 2-5 minutes is recommended)
node src/server.mjs check <projectId>
# → { status: "done", files: [...] }
# 4. Pull and preview the finished design
node src/server.mjs pull <projectId>
node src/server.mjs preview <projectId>요구 사항
Node.js 22+ (내장
fetch/WebSocket사용,playwright-core가 유일한 npm 의존성)Google Chrome (도구는 전용 Chrome 프로필을 구동합니다)
Design 액세스 권한이 있는 claude.ai 계정 (
design_login으로 한 번 로그인)
환경 변수
CLAUDE_DESIGN_PROFILE— 전용 Chrome 프로필 디렉터리 (기본값~/.cache/claude-design-mcp/chrome-profile)CLAUDE_DESIGN_CHROME— Google Chrome 경로 (기본값: macOS Google Chrome)CLAUDE_DESIGN_CDP_PORT— 원격 디버깅 포트 (기본값9377)CLAUDE_DESIGN_DIR—design_pull/design_preview가 각각 자체<project>/폴더에 쓰는 위치 (기본값: 작업 폴더); 명시적dir인수는 그대로 사용됩니다CLAUDE_DESIGN_HISTORY_DIR—tools/call기록이 추가되는 위치 (기본값~/.local/share/opencode-dashboard/claude-design-history, 파일events.ndjsonl)CLAUDE_DESIGN_HEADLESS— 오프스크린 대신 헤드리스 Chrome을 구동하려면1로 설정CLAUDE_DESIGN_TURN_TIMEOUT_MS— 생성 턴당 하드 상한 (기본값 create ~360초, iterate ~240초)CLAUDE_DESIGN_QUIET_MS— 생성이 완료된 것으로 판단되기 전에 턴 네트워크가 조용히 유지되어야 하는 시간 (기본값20000)CLAUDE_DESIGN_PAGE_LEASE_MS— 완료 모니터가 중단된 경우 비동기 소유자 페이지에 대한 독립 하드 상한 (기본값2700000, 45분)CLAUDE_DESIGN_CLAUDE_BIN—design_system_sync가 사용하는 Claude Code 바이너리 (기본값claude)CLAUDE_DESIGN_SYNC_TIMEOUT_MS—/design-sync실행 1회에 대한 하드 상한 (기본값900000, 15분)
디자인 시스템 동기화
design_system_sync (CLI: sync <dir>)는 패키지 폴더를 작업 디렉터리로 하여
claude -p "/design-sync <pre-approval>" --dangerously-skip-permissions --output-format stream-json --verbose
를 실행하고 동기화가 업로드한 내용을 보고합니다. 토큰 전용 동기화가 성공한 후에는 로그인된
Chrome/CDP 세션을 사용하여 업로드된 styles.css 임포트 심(shim)을 ds-bundle/_ds_bundle.css의
생성된 커스텀 프로퍼티 CSS로 교체합니다.
폴더는 이미 패키지여야 합니다(
package.json+styles.css와 같은 CSS 엔트리, 그리고tokens/*.json,guidelines/*.md,README.md). 컴포넌트는 선택 사항입니다 — 토큰 전용 패키지도 허용됩니다.package.json이 없으면 도구는 스폰 전에 거부합니다.종료 상태는 성공 신호가 아닙니다. 거부된 동기화도
subtype: "success"와 함께0으로 종료되므로 결과는 응답에 실제 프로젝트 링크가 있을 때만ok: true입니다. 그 외에는 진단을 위한 전체 출력과 함께{ ok: false, error, raw }를 받습니다.첫 실행은 프로젝트를 생성하고
.design-sync/config.json을 작성하며, 이는 이후 실행을 동일한 프로젝트에 고정합니다(변경 없는 재실행은 중복 대신 no-op이 됩니다). 파이프라인이 폴더를 재생성하는 경우 교체 전에.design-sync/를 스냅샷하고 이후에 복원하세요 — 이 도구는 패키지 자체를 절대 쓰지 않습니다.프롬프트에는 사전 승인(
src/sync.mjs의SYNC_ARGS)이 포함되며, 첫 실행에서 중요한 역할을 합니다./design-sync는 폴더에 핀이 없을 때 두 개의AskUserQuestion확인을 요청합니다 — 시간/비용을 수락한 다음create_project전에 새 프로젝트 이름을 확인 — 그리고claude -p에는AskUserQuestion도구가 없으므로 턴이 질문과 함께 종료되고 아무것도 업로드하지 않습니다(종료0,subtype: "success", 프로젝트 링크 없음). 스킬 자체의 탈출구("요청이 이미 시간/비용을 인정했다면… 다시 묻지 않고 계속")가 사전 승인이 호출하는 것이며, 새 프로젝트 생성을 명시적으로 지명합니다. 고정된 재동기화는 두 게이트 중 어느 것도 만나지 않으므로 이 문제는 첫 동기화에서만 표면화되었습니다. Claude Code는 슬래시 명령 뒤의 텍스트를 펜스 처리된## Hint블록으로 스킬 본문에 추가하므로, 이 텍스트는 삼중 백틱이 없는 단일 위치 문자열로 유지되어야 합니다.첫 동기화는 ~10분이 걸리고, 변경 없는 재실행은 ~2분이 걸립니다. CLI는 동기화 실패 시
1로 종료됩니다.결과에
flattened: true|false가 추가됩니다. 동기화 후 브라우저/쓰기 실패는 완료된 업로드가ok: true로 유지되는 동안flattenError로 보고됩니다.
design_system_list (CLI: list-systems)는 동일한 기능의 읽기 측면입니다. claude.ai에는
별도의 디자인 시스템 엔드포인트가 없습니다 — 디자인 시스템은 한 번에 20개씩 페이지가 매겨지는
일반 프로젝트 목록 RPC에서 PROJECT_TYPE_DESIGN_SYSTEM 태그로 반환되므로 도구는 모든 페이지를
따라가며 [{ name, id, publishedAt?, viewedAt? }]를 반환합니다(publishedAt은 시스템이
게시된 후에만 나타납니다). 이를 사용하여 design_system_sync가 계정에 실제로 무엇을
올렸는지 확인할 수 있습니다. scripts/probe-design-systems.mjs는 API가 변경되면 해당 라이브
형태를 다시 캡처합니다.
생성은 언제 "완료"인가?
claude.ai/design은 생성 과정을 턴(turn) 으로 구동합니다: 프롬프트가 Chat RPC를 통해
스트리밍되고, RenewTurn 키프얼라이브(~10초마다)로 유지되며 ReleaseTurn으로 종료됩니다.
design_create / design_iterate는 파일이 안정화되고 턴 네트워크가
CLAUDE_DESIGN_QUIET_MS 동안 조용해진 후에 반환됩니다 — 키프얼라이브 간격보다 충분히
길므로 생성이 쓰기 도중에 잘리는 일은 절대 없습니다(항상 완전하고 일관된 디자인을 받게 되며
절반만 렌더링된 디자인을 받지 않습니다).
생성이 조용함/안정성 검사가 완료되기 전에 하드 데드라인에 도달하면 결과에 timedOut: true가
포함됩니다. 정상 완료는 필드를 완전히 생략합니다. 필드의 존재는 반환된 파일이 완전히 조용한
턴이 아니라 타임아웃 시점의 최상의 스냅샷임을 나타내는 신호로 취급하세요.
claude.ai는 종종 첫 디자인이 안정된 후 ~30초 후에 시작되는 자동 정제(refine) 패스를
실행하므로 도구가 첫 완전한 버전을 반환한 후에도 서버에서 디자인이 계속 개선됩니다. 가장 정제된
출력을 얻으려면 design_pull / design_preview가 항상 최신 상태를 가져오거나,
CLAUDE_DESIGN_QUIET_MS를 높여서(예: 60000) create가 이후의 정제 패스를 기다리게
하세요(더 긴 대기 시간의 대가).
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