v1.2.4 27

MCP Server

Give your AI assistant the real design system — components, tokens, page patterns and a linter — over the Model Context Protocol. It runs on your machine, it is MIT-licensed, and there is nothing to host.

Install

One command in Claude Code, or one entry in any MCP client's config.

claude mcp add veritheme -- npx -y @veritheme/mcp-server
{
  "mcpServers": {
    "veritheme": {
      "command": "npx",
      "args": ["-y", "@veritheme/mcp-server"]
    }
  }
}

A client loads its servers when a session starts: after adding Veritheme, start a new session or restart the client.

View on npm

Use your own system

Out of the box the server answers with the default theme. Give it your system and every answer uses your tokens.

Create your system in the builder and download its package. Keep veritheme.system.json and tokens.json in the project root. get_project_system, get_tokens and get_theme then read them instead of the defaults.

The server looks in the folder the client starts it in. If that is not your project, point it there:

{
  "mcpServers": {
    "veritheme": {
      "command": "npx",
      "args": ["-y", "@veritheme/mcp-server"],
      "env": { "VERITHEME_PROJECT_DIR": "/path/to/your/project" }
    }
  }
}

Check every file

The rules ask the AI to run validate_markup. A hook makes sure it does, on every file it writes.

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit|MultiEdit",
        "hooks": [
          { "type": "command", "command": "npx -y @veritheme/mcp-server hook" }
        ]
      }
    ]
  }
}

Put this in your project's .claude/settings.json. After every write, the hook lints the file. An error goes straight back to the AI, which fixes it before it moves on. A warning reaches it as a note. HTML, Astro, Vue, Svelte, JSX and TSX are checked; files without a vt- class, and anything in node_modules or a build folder, are skipped.

npx -y @veritheme/mcp-server validate src

Pass files or folders. The command exits with 1 when a file has an error, so it can fail a CI job; warnings never do. Add --format json for machine-readable findings.

Figma to code

Turn a Figma frame drawn with the Veritheme library into a page built from the same components.

Connect Figma's own MCP server next to this one. Then run the figma-to-page prompt with a link to the frame (Claude Code lists it among its slash commands), or just ask:

Build this frame with Veritheme: https://www.figma.com/design/…?node-id=12-345
  1. get_figma_reader returns a read-only script, and the agent runs it through the Figma MCP.
  2. figma_to_markup turns what it read into HTML. Each instance becomes its component and variant, each auto-layout frame becomes layout, and anything it cannot translate is listed rather than guessed.
  3. validate_markup checks the page against your system before you look at it.

Draw with instances of the library's components and keep values bound to its variables. A detached layer or a raw value has no component behind it, so it cannot be translated.

Get the Figma plugin

Tools

21 tools, grouped by what the AI uses them for.

ToolWhat it does
search Finds components, classes, tokens and snippets by name or purpose.
list_components Lists every component by category.
get_component Classes, variants, sizes, anatomy, states, contract and a snippet for one component.
get_snippet Ready HTML for a component, or one of its named examples.
list_patterns Lists the page patterns: dashboard, settings, sign-in, chat, mail and more.
get_pattern The skeleton of a proven screen, to start a page from.
get_starter A page shell with the CSS and JS links, dark mode and theme set up.
get_guidelines The rules the AI builds by: components first, the spacing scale, color roles.
get_figma_reader A read-only script that reads a Figma frame through the Figma MCP.
figma_to_markup Turns that frame into Veritheme HTML and lists what it could not translate.
validate_markup Lints HTML against the system: unknown or off-scale classes, unlabeled icon buttons, hard-coded colors and more.
audit_contrast Checks every color pair the components use against WCAG AA, light and dark.
get_project_system Reads your system package from the project, so the AI works from your tokens.
get_tokens Design tokens: colors, spacing, radius, type, shadows.
get_theme The active theme: yours when the project has one, else the default.
explain_token What a token is for, what it resolves to and which components read it.
derive_theme A whole theme from one brand color, with the builder’s own engine.
get_theme_css The CSS custom properties for a theme, ready to paste.
list_project_components Custom blocks already built for this project.
get_project_component The exact markup of one, to reuse as is.
register_project_component Saves a new custom block so every page and session reuses it.

In your AI pipeline

Built to be one step in the agents your team already runs.

The server is a local process that talks over stdio. It makes no network requests, needs no account, and writes only to veritheme.project.json in your project, when the AI saves a custom component.

Add it once, and every agent builds with the same components, tokens and checks. Pin a version in the config to update on your own schedule.