Search DevTools

Jump to any tool or page

Raven

Unexplored

Design intelligence for coding agents: audits, design systems, and a taste profile agents consult.

rhinocap5 stars0 forksDesign & UX
View source

Install

Terminal

$npx -y raven-mcp

mcp_config.json

{
  "mcpServers": {
    "ai-ravenmcp-raven-mcp": {
      "args": [
        "-y",
        "raven-mcp"
      ],
      "command": "npx"
    }
  }
}

Documentation

Raven MCP

Odin's ravens brought back knowledge of the world — Raven brings back design intelligence.

Raven is an MCP server for coding agents. Click any element in the app you have running locally and say what should change — Raven sends the agent the selector, the computed styles, and your design tokens — then audits the result for contrast, tap targets, and typography.

Raven MCP is a personal open-source project by Andrew Cunliffe. It is not endorsed by, affiliated with, or supported by Intuit Inc. or any other company referenced in its source data. See NOTICE for full attribution of upstream sources and their licenses.

What it does

Raven gives Claude access to a comprehensive design knowledge base:

  • Principles — Nielsen's 10 Heuristics, all 21 Laws of UX, Gestalt principles, WCAG accessibility, typography rules, color theory, mobile UX, D4D framework, UX writing, service design, brand, color-systems (palette-size discipline), and spacing-systems (base-unit grid + scale limits)
  • Patterns — Proven UI patterns for signup flows, pricing pages, navigation, dropdown/select menus, forms, landing pages, dashboards, modals, empty/error/loading states, CTAs, social proof, mobile conversion — plus content patterns (error messages, empty-state copy, notifications, form validation) and service patterns (service blueprinting, human handoff, signup-as-service, omnichannel continuity, moments of truth)
  • Content systems — Voice & tone guides: Conversational Product Voice, GOV.UK, Shopify Polaris, and Atlassian
  • Research — Qualitative, quantitative, and usability methods with do/don't protocols and checklists. Metrics frameworks: HEART, AARRR/Pirate, North Star Metric, conversion funnel, RICE, OKRs.
  • Service design — Service blueprinting (with HTML blueprint generation — current vs. ideal state), human-handoff patterns, signup-as-service, omnichannel continuity, moments of truth / recovery, and the GOV.UK Service Standard
  • Brand & visual — Logo usage (clear space, min sizes, variants, placement, restraint), gradient usage (hierarchy, palette, contrast, trend vs signature), imagery (consistency, representation, purpose), visual hierarchy, brand-as-system, and current (2026) visual-design trends
  • Business — Monetization models, retention strategies, onboarding optimization, growth mechanics, and product metrics frameworks
  • Tokens — Design system tokens for Stripe, Linear, and more
  • Creative studio — Local-first brand profiles, asset references, character reference profiles, provider-agnostic image/video/3D/audio generation jobs, campaign plans, and transparent creative scoring. Raven does not ship media-provider credentials; set RAVEN_CREATIVE_RUNNER to route jobs to your own renderer.

Install

Local stdio (npx / from source) is the full product: 111 tools, including Grab, the pattern library, and the file-backed Taste Engine. Hosted endpoints are smaller subsets — pick one path and stick to it.

PathHowToolsTasteGrab
Local stdionpx -y raven-mcp (Claude Code, Cursor mcp.json, Codex, Desktop mcpb)111YesYes
Public remotehttps://mcp.ravenmcp.ai/api/mcp~45NoNo
Auth remotehttps://mcp.ravenmcp.ai/api/mcp-user (OAuth)Taste + audits (no Grab)YesNo

Claude Code — one command

claude mcp add raven -- npx -y raven-mcp

Prefer one Raven entry. If both a local raven and a claude.ai / remote Raven are connected, the agent sees two overlapping toolsets — disable or rename one (e.g. raven-local vs raven-cloud) so it is obvious which product you are talking to.

Manual config (Claude Desktop or team .mcp.json)

{
  "mcpServers": {
    "raven": {
      "command": "npx",
      "args": ["-y", "raven-mcp"]
    }
  }
}

Cursor

Same mcp.json snippet as above (~/.cursor/mcp.json or project .cursor/mcp.json) runs the full local server (Grab + Taste). Hosted options:

  • Public: "url": "https://mcp.ravenmcp.ai/api/mcp" — ~45 stateless tools; no Grab, no Taste.
  • Authenticated Taste: "url": "https://mcp.ravenmcp.ai/api/mcp-user" — OAuth; Taste yes, Grab still local-only.

Codex

Add under mcp_servers in config.toml:

[mcp_servers.raven]
command = "npx"
args = ["-y", "raven-mcp"]

Codex may prompt to approve many Raven tools on first use — that is client approval policy, not a smaller Raven.

Claude Desktop — one-click extension

Prefer not to edit JSON? Download raven.mcpb and double-click it. Claude Desktop installs Raven automatically — no Node, no terminal. Package version tracks npm.

From source

git clone https://github.com/rhinocap/raven-mcp.git
cd raven-mcp && npm install && npm run build

Tools

ToolDescription
get_principlesGet design principles relevant to a UI context
get_patternGet proven patterns for a specific UI type
get_business_strategyGet business/monetization strategies
evaluate_designEvaluate a design description against principles. Pass base64 PNG screenshots (before_screenshot/after_screenshot) for a structured before/after pixel diff with fix_confirmed, changed_ratio, and changed region. Pass compact: true to return only scores and violations (drops full principle/pattern bodies) when the full payload is too large.
search_knowledgeSearch across all principles, patterns, and strategies
get_checklistGet a pre-publish checklist for a UI type
get_d4d_frameworkGet Design for Delight framework templates
list_design_systemsBrowse available design systems
get_design_systemGet tokens for a specific design system
compose_systemMix tokens from different systems
get_brand_systemGet a full system styled like a well-known brand
audit_pageAudit HTML/CSS against Raven's quality standards — pass html for static audit, or url to render headless with optional scroll_settle (step through reveal gates, then return to top) and viewport parameters; containerMaxWidth makes container checks token-aware. Also flags inline SVG icons that hardcode a color instead of using currentColor/a token. Pass compact: true to return only scores, violations, and fix_priority (drops embedded base64 screenshots) when the full payload is too large.
score_pageReturn a per-category (0–10) design score for a page — typography, accessibility, spacing, color, responsive layout, design tokens, structure — derived from the same checks as audit_page, plus the overall score/grade, the weakest category, and categories Raven does not mechanically assess (brand, conversion, motion). URL mode also counts determinate contrast failures while keeping indeterminate rows out of numeric scoring. Pass html and/or url (url capture is local/stdio only; remote rejects url)
audit_layoutEvaluate visual rhythm, alignment, and optical balance; detects orphan-stretch (a lonely last-row grid/flex card stretching far wider than siblings)
audit_responsive_visibilityRender a URL at multiple breakpoints and flag content elements that are visible on desktop but hidden on mobile (display:none/opacity:0/zero-size) — categorises each as likely-oversight (content vanishing on mobile) vs intentional (decorative)
audit_contrastCompute WCAG contrast for rendered text with tri-state status (pass, fail, indeterminate), effective backdrops, ratio ranges, and delta-to-pass only where the backdrop is determinate
suggest_contrast_fixGiven failing WCAG color pairs, return the minimal fg/bg change that clears the AA/AAA target — concrete passing values to fix audit_contrast failures
audit_urlRender a live URL at each viewport×theme, scroll-settle, fire interactions, capture real pixels + DOM, then run the page/contrast/responsive/blank-media checks plus sliced-image edge-symmetry and hover-state white-wash detection over the captures — every finding tagged confirmed/likely-artifact/inconclusive, ranked by severity. Pass compact: true to return only findings and summary (drops per-capture base64 screenshots) when the full payload is too large.
audit_contentPer-item content verdicts (pass/warn/fail) for headings, prose, CTAs, labels, captions, metrics & outcomes against UX-writing principles + deterministic heuristics (metric needs number+unit; CTA action-led ≤4 words; prose flags passive/jargon/hedging; caption-vs-heading duplication) — with a before→after rewrite suggestion per item. Pure offline
audit_typographyTypographic-scale report over rendered DOM text nodes (or a supplied snapshot) — detects the dominant modular-scale ratio and flags off-scale sizes, checks line-height consistency vs the body rhythm, and flags weight ladders >4 weights or non-standard values. Goes beyond audit_page's pass/fail typography checks
audit_tap_targetsWCAG 2.5.5 / Apple 44pt web tap-target audit — enumerates every interactive element (rendered URL or snapshot) and emits a per-element fix table: selector, role, text, measured w/h, per-axis pixel deficit, and a concrete CSS fix, sorted worst-first
audit_device_frameFlag cropped content in device-mockup frames — frames (container box + intrinsic media + object-fit, or a DevTools snippet) detects object-fit:cover crop loss when frame AR ≠ media AR; clips (first/last frame PNGs) detects baked-in pan/zoom (Ken Burns); edge_frames (PNGs) flags content truncated at a frame edge
audit_video_playbackRender a page and observe whether each <video> actually advances — samples currentTime, readyState, error codes, and autoplay-block state, then classifies each clip into playing
audit_consistencyCorpus/multi-page audit — compares ≥2 pages and flags cross-page divergence in content-container width and hero heading tier, inferring the canonical (modal) value from the corpus when no token is supplied — catching relational defects that single-page audits miss
audit_swiftuiAudit SwiftUI source against Apple HIG — Dynamic Type, semantic colors, 44pt targets, 4/8pt spacing, AccentColor
audit_ios_screenScore a rendered iOS screen from an accessibility/view-hierarchy snapshot — 44pt targets + contrast + rhythm, in points
audit_ios_privacyAudit Info.plist (or Expo app.json) /PRIVACY.md/entitlements/source — usage-string honesty, ATS, Android permissions, bundled secrets, undisclosed default data-egress
audit_rnAudit React Native / Expo source — touchable a11y labels, 44/48pt+hitSlop targets, font scaling, SafeAreaView, dark mode, against iOS HIG + Android Material
generate_design_systemGenerate a custom design system from a brand color
list_content_systemsBrowse brand voice & tone systems (Conversational Product Voice, GOV.UK, Shopify Polaris, Atlassian)
get_content_systemGet a brand's voice attributes, tone shifts, vocabulary, grammar, and content patterns
get_content_principlesGet UX-writing principles — clarity, active voice, error anatomy, inclusive language
get_content_patternGet copy recipes for error messages, empty-state copy, notifications, form validation
get_research_methodGet qualitative, quantitative, or usability research methods with protocols and checklists
get_metrics_frameworkGet a product-metrics framework — HEART, AARRR, North Star, conversion funnel, RICE, OKRs
get_service_patternGet a service design pattern — blueprinting, human handoff, signup-as-service, omnichannel, moments of truth
get_service_standardGet the GOV.UK Service Standard — 14 points for evaluating service quality
generate_service_blueprintRender a service blueprint as HTML — current state, or current vs. ideal side-by-side
get_brand_principlesGet brand/visual principles — logo, gradient, imagery, hierarchy, brand-as-system
get_brand_trendsGet current (2026) brand and visual-design trends with usage guidance
list_creative_modelsBrowse provider-agnostic creative model slots for image, video, 3D, audio, character consistency, and analysis
list_creative_presetsBrowse creative presets: product photoshoot, marketplace cards, UGC ads, TV spots, social packs, storyboards, infographics
create_brand_profileCreate or update a local brand profile for brand-aware creative jobs
get_brand_profileRead a local creative brand profile
list_brand_profilesList local creative brand profiles
register_creative_assetRegister a local path or URL as a creative asset reference — no file bytes are uploaded by Raven
create_character_profileCreate a local character/identity reference profile from registered assets
create_generation_jobCreate a provider-agnostic image, video, audio, 3D, campaign, or analysis job payload; optionally execute via RAVEN_CREATIVE_RUNNER
get_generation_jobRead a creative generation job and its provider payload/output state
list_generation_jobsList local creative generation jobs
plan_creative_campaignPlan a multi-asset campaign and optionally create draft generation jobs
score_creativeScore a prompt/script/concept for hook, benefit clarity, product signal, CTA, channel fit, audience fit, and brand fit
create_taste_profileCreate a named taste profile — a portable design-judgment ruleset (rule_id, clause, category, severity, negative prompt, owner) + precedent corpus, from explicit rules and/or a DESIGN.md-style markdown doc — persisted locally under ~/.raven/taste/ (RAVEN_TASTE_HOME override)
get_taste_profileLoad a stored taste profile's full rule catalog, precedent corpus, and surface bindings
list_taste_profilesList locally stored taste profiles with rule/corpus counts
label_findingAppend a human accept/revise/reject precedent to a profile's corpus — the growth loop; append-only, and accept-verdicts suppress that pattern in future audits
get_taste_interviewCalibration interview, two modes. kickoff (default, for a NEW project): a deterministic interview built from the profile's voice rules and eleven design dimensions (typography, spacing, color, layout, motion, imagery, entrance/hero animation, loading states, navigation pattern, aesthetic family, specialty libraries — with Next.js suggested as the default build target for sites) — most questions carry plain-language multiple-choice options, the voice question renders the same message in three registers so you pick by ear, a references question invites example URLs/screenshots to be interviewed about, and an open-ended closer captures signature touches (suggesting the ones you chose on other surfaces once it knows them). Every question is skippable (only identity is required). refine (for an ALREADY-bound project you're unhappy with): re-interviews against the stored binding — what fell short, keep/tighten/replace each stored note, voice, optional reject precedent. Answers persist via bind_taste_surface
bind_taste_surfacePersist a project's surface calibration — surface string, URL hosts, per-rule severity overrides (incl. off), voice note, references — auto-applied by audit_taste via project or a bound url host. Upserts by project; on a re-bind, omitted fields carry forward from the stored binding (reported as carried_forward), while explicit empty values clear them
record_taste_decisionThe learning loop — record a taste/direction/design decision the moment it's made during real work (what was chosen, what was rejected, why, and whether the user directed, approved, or corrected it). Recorded decisions evolve future kickoff interviews: recurring choices return as suggested defaults on their dimension's question, and decision categories no standard question covers become new interview questions
list_taste_decisionsThe decision ledger, filterable by project or dimension
audit_tasteJudge HTML, copy text, or a live URL against a taste profile — deterministic detectors for gradients, glow/neon, second accent hue, and banned words; pass source_text to verify a content port's visible text verbatim with a deterministic word diff; owner: raven rules route through Raven's existing page/contrast/tap-target engines; every finding cites a rule_id + concrete evidence (undetectable clauses are reported as not_assessed, never guessed); scope-tagged rules activate per surface (skipped elsewhere, warn-only when surface is omitted); pass project to apply a saved surface binding automatically; document_kind:'portrait' skips note-fidelity for documents about a surface (rules still run); data-taste-quote regions are exempt from detectors so a page is never convicted for quoting the law; verdict BLOCK / WARN / PASS
generate_taste_portraitRender a bound taste surface as a self-contained designed HTML page (its rules, notes, voice, decisions, and wrong→right corpus) that obeys the surface it describes — art direction routes by the surface's own color permissions; sparse surfaces degrade gracefully. Omit project to render every binding plus a gallery. Every portrait passes audit_taste (document_kind:'portrait') against its own surface
raven_reflectSummarize your local Raven usage log to find patterns + gaps

Decision Graph

The local Decision Graph keeps three node kinds: decisions, evidence, and sources. Five edge types connect them: supersedes, scoped_alongside, supports, contradicts, and derived_from. Decision status is candidate, active, superseded, or contested; nodes are not hard-deleted.

  • decision_add — add an active decision with its scope, component, rationale, and rejected alternatives.
  • decision_evidence — attach quantitative or qualitative evidence to a decision.
  • decision_get — return one node, its connected neighbors, and attached evidence.
  • decision_list — list active, superseded, contested, or candidate decisions. Candidates are excluded unless include_candidates:true or status:"candidate" is passed.
  • decision_draft — capture a decision before its rationale is confirmed.
  • decision_commit — confirm a rationale and surface similar active decisions for review.
  • decision_supersede — replace a decision while keeping both nodes and their lineage.
  • decision_scope — narrow two active decisions so they can coexist.
  • decision_history — return a supersession lineage from oldest to newest.
  • ingest_transcript — store a Source node and return the extraction prompt for the calling model.
  • decision_import — read local git history and matching decision documents, then return source-bound extraction prompts.
  • ingest_transcript_results — turn extracted JSON into candidate decisions linked with derived_from edges.
  • gap_scan — rank uncovered components, missing or thin rationales, contested decisions, and derived staleness; digest_only:true is quiet when no action is needed.

For a cold start: call decision_import → run the returned extraction prompts with a model → pass each result to ingest_transcript_results → review the candidates → call decision_commit for each decision to keep. Candidates remain available through decision_get, but default decision_list and gap_scan ignore them until commit changes their status to active.

Figma comment archives (Markdown files under figma-comments-archive/ whose first line is # Figma comments archive: <label>, with `##

Sourced from the repository README.

More in Design & UX