Skip to main content
Glama

design-md-mcp

Give your AI agent your design system.

An MCP server that reads any DESIGN.md and answers your agent in a few lines: the exact token, the component class to reuse, the rule not to break.

design-md-mcp: Tide, the Tidepool copilot, with the install command

Why

When an agent builds UI, it either guesses your colours or reads your whole design system on every prompt. design-md-mcp sits in between: the agent asks a small question and gets a short answer, a couple of lines for a colour or about a page of text to set up a whole screen, with the light and dark values, the CSS variable to use and the component class that already exists.

  • On-system output. Exact tokens, not "close enough" hex codes.

  • Reuse over rebuild. It points the agent at your existing component classes, with a markup example.

  • Catches drift. check_value flags made-up colours and pixel sizes and suggests the nearest token.

  • Works with any DESIGN.md. Bring your own, or try the bundled Tidepool demo.

Related MCP server: Designesy

Quick start

Needs Node 18+. Works with any MCP client: Claude Code, Cursor, Windsurf, Claude Desktop, VS Code.

Try the Tidepool style

# 1. Copy the demo design system into ./tidepool
npx -y github:tingowiggle/design-md-mcp init tidepool

# 2. Connect it (Claude Code)
claude mcp add tidepool -- npx -y github:tingowiggle/design-md-mcp --file ./tidepool/DESIGN.md

Then ask your agent: "Build a proposal voting screen in the Tidepool style, light and dark. Start with get_screen_kit."

Just exploring? Skip the copy step: --example tidepool uses the bundled files directly.

Use your own DESIGN.md

claude mcp add my-design -- npx -y github:tingowiggle/design-md-mcp --file ./DESIGN.md
{
  "mcpServers": {
    "my-design": {
      "command": "npx",
      "args": ["-y", "github:tingowiggle/design-md-mcp",
               "--file", "./DESIGN.md",
               "--css", "./src/styles/tokens.css"]
    }
  }
}

Add it to your client's MCP config (e.g. .cursor/mcp.json) and restart the client.

Options

Flag

What it does

--file <path>

Your DESIGN.md (required, unless --example)

--css <path>

Stylesheet(s) with your CSS variables and component classes. tokens.css next to DESIGN.md is picked up automatically

--examples <path>

HTML that uses your components, for markup examples. showcase.html next to DESIGN.md is picked up automatically

--docs <path>

Extra markdown files with rules

--scope <selector>

Where your tokens live if not :root (e.g. .app). Detected automatically

--example tidepool

Use the bundled demo

init tidepool [dir]

Copy the demo into your project

Tools

Tool

Ask it

Answer size

get_screen_kit

"approve payment sheet". Start here: setup, every reusable class, the most relevant components with markup, and the must-follow rules

about a page (~650 tokens)

get_component

"bottom-sheet" → use .sheet, plus markup, spec and rules

a short paragraph (~170 tokens)

get_token

"primary" → var(--primary), light and dark values, where to use it

2–3 lines (~80 tokens)

find_token

"rejected status" → the right tokens or components

2–3 lines (~90 tokens)

check_value

"#0F7B6D" → not a token, use var(--primary)

2–3 lines (~55 tokens)

get_rules

"colour rules" → that section of your DESIGN.md

a short paragraph (~120 tokens)

ds_overview

every token and component name, no values

half a page (~420 tokens)

Loading the tools adds ~800 tokens to your agent's context. For comparison, reading Tidepool's full DESIGN.md and stylesheet is ~6,300 tokens.

What goes in a DESIGN.md

YAML tokens between --- fences, then markdown sections with your rules:

---
name: My Product
colors:
  primary: "#0F7B6C"
  ink: "#10221F"
rounded:
  md: 10px
components:
  button-primary:
    backgroundColor: "{colors.primary}"
    rounded: "{rounded.md}"
---

## Colors
| Token | Light | Dark | Use |
|---|---|---|---|
| `--primary` | `#0F7B6C` | `#3FBFA8` | The confirm action |

## Components
### Primary button
`.btn .btn-primary`. One per view.

## Do's and Don'ts
| Do | Don't |
|---|---|
| One primary button per view | Two primary buttons side by side |

The server links YAML names to CSS variables that share a value, maps component names to your stylesheet's classes (button-primary → .btn-primary, bottom-sheet → .sheet), and indexes every section so get_rules can answer by topic. A ## Setup section travels with get_screen_kit.

Tidepool, the demo design system

A fictional community wallet with an AI copilot, Tide, bundled as a complete example in examples/tidepool. Teal means a person confirmed it; violet means the copilot suggested it.

Tidepool screens: a home screen where the copilot flags a large invoice, and an approve-payment sheet

File

What it is

DESIGN.md

Tokens, components and rules

tokens.css

CSS variables (light + dark) and component classes

icons.js

14-icon line set as an inline sprite

tide.js

Tide in 3D (three.js): mountTide(canvas)

Open index.html for the full showcase page.

Develop

npm install
node src/smoke.js                          # calls every tool against Tidepool
node src/cli.js get_token '{"name":"primary"}' -- --example tidepool

License

Apache-2.0 · made by Web3 Story Lab. Tidepool and all its names and data are fictional.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Design contract layer for AI agents. Scans Figma, code, Storybook, and token files, reconciles conflicts, and serves a single machine-readable source of truth so every agent gets the same authoritative design rules before it builds. Local-first.
    6
    70 npm
    19
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to score live URLs against a 40-check design contract, validate DTCG tokens and Lottie animations, audit accessibility, and retrieve design-system contracts, catalogs, and review rubrics.
    253 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables coding agents to query a workspace's design system before writing UI and validate generated code against the same system afterward, using configurable token and component sources.
    17 npm
    MIT