ui-mcp
Gives MCP clients access to a registry of elite UI patterns, components, and motion configs with real, copy-pasteable React/TSX implementations.
README
ui-mcp
A local MCP server that gives Claude Code (and any MCP client) access to a curated registry of elite UI patterns, components, and motion configs — so it pulls real, copy-pasteable implementations mid-build instead of defaulting to generic layouts.
Magnetic cursors, scroll-jacked sections, reactive particle grids, clip-path page transitions, text-scramble reveals, glassmorphic navs, spring modals, bento grids, and more — every entry ships real working React/TSX, valid Tailwind classes, and Framer Motion / GSAP / CSS motion values.
- 30 UI patterns (clean · elevated · insane)
- 20 components keyed by type (hero, nav, card, modal, scroll-section, cursor, overlay, loader, text-reveal, background)
- 15 ready-to-paste motion configs (Framer Motion, GSAP, CSS)
- Fuzzy natural-language search via Fuse.js
Install & setup
git clone https://github.com/maahigoel/ui-elite-patterns.git
cd ui-elite-patterns
npm install
npm run build
This compiles src/ → dist/. The server entry is dist/server.js.
Add to Claude Code
A ready-to-use .mcp.json is included:
{
"mcpServers": {
"ui-mcp": {
"command": "node",
"args": ["dist/server.js"]
}
}
}
- Project scope: copy
.mcp.jsoninto your project root and run Claude Code from there. (Ifargsis a relative path, run Claude Code from theui-mcpdirectory, or change it to the absolute path ofdist/server.js.) - CLI:
claude mcp add ui-mcp -- node /absolute/path/to/ui-mcp/dist/server.js
Restart Claude Code, then ask it to use the ui-mcp tools. Verify the server boots:
npm run smoke # builds, boots the server in-memory, and exercises every tool
Live demo site
A local showcase website that renders every pattern and component live lives in demo/. It uses a codegen script that pulls each component straight from this registry, so it always reflects exactly what the MCP server hands to Claude Code.
cd demo
npm install
npm run dev # generates components from the registry, then starts Vite at http://localhost:5173
- Browse all 50 patterns + components in a filterable gallery (search, complexity, kind).
- Click any card to view it full-screen, running live, with a slide-in source panel + copy button.
npm run generatere-syncs the demo with the registry after you add patterns. (npm run dev/buildrun it automatically.)
Built with Vite + React + Tailwind + Framer Motion. Local only — no hosting required.
Tools
1. get_ui_pattern
Fuzzy-search the registry by natural language.
Input
| field | type | required | description |
|---|---|---|---|
query |
string | ✅ | What you want, e.g. "magnetic cursor" |
framework |
"react" | "vue" | "html" |
– | Filter by framework support |
complexity |
"clean" | "elevated" | "insane" |
– | Filter by complexity |
Example
// input
{ "query": "scroll reveal headline", "complexity": "insane" }
// output (truncated)
Found 3 matching patterns for "scroll reveal headline". Showing the top 3:
## Text Scramble Reveal on Scroll
**Complexity:** insane • **Frameworks:** react • **Interaction:** scroll
**Tags:** text, scramble, decode, scroll, reveal, monospace, raf
...
### Code
```tsx
import { useEffect, useRef, useState } from "react";
...
### 2. `get_component`
Get component(s) of a given type.
**Input**
| field | type | required | description |
| --- | --- | --- | --- |
| `type` | `hero \| nav \| card \| modal \| scroll-section \| cursor \| overlay \| loader \| text-reveal \| background` | ✅ | Component kind |
| `interaction` | `scroll \| hover \| entrance \| ambient` | – | Preferred interaction |
| `complexity` | `clean \| elevated \| insane` | – | Preferred complexity (nearest returned if exact missing) |
**Example**
```jsonc
// input
{ "type": "modal", "complexity": "elevated" }
Returns the Spring Modal with Blur Backdrop with full TSX and its Framer Motion config. Omit complexity to get every variant of that type (clean → insane).
3. get_motion_config
Get a paste-ready motion configuration.
Input
| field | type | required | description |
|---|---|---|---|
type |
page-transition | entrance | scroll-reveal | hover | stagger | magnetic |
✅ | Motion kind |
library |
framer-motion | gsap | css |
– | Filter by library |
Example
// input
{ "type": "stagger", "library": "framer-motion" }
// output (truncated)
## Framer Motion Stagger Children (0.08s)
**Type:** stagger • **Library:** framer-motion
### Config
```json
{ "config": { "staggerChildren": 0.08, "delayChildren": 0.1 }, "variants": { ... } }
Code
const container = { hidden: {}, visible: { transition: { staggerChildren: 0.08, delayChildren: 0.1 } } };
...
Usage: Put container on the parent and item on each child; the parent drives timing.
---
## Example prompts inside Claude Code
- *"Use ui-mcp to find a magnetic cursor pattern and add it to my landing page."*
- *"Get me an `insane` complexity background component from ui-mcp for the hero."*
- *"Build a pricing section — grab the pricing card pattern from ui-mcp first."*
- *"I need a page transition. Pull the Framer Motion `page-transition` config from ui-mcp."*
- *"Find a scroll-jacked horizontal section in ui-mcp and wire it up with my project's content."*
- *"Get the `text-reveal` component (elevated) from ui-mcp and use it for the section heading."*
---
## Contributing — add a pattern
The registry lives in `src/registry/`:
- `patterns.ts` — patterns surfaced by `get_ui_pattern`
- `components.ts` — components surfaced by `get_component` (must set `componentType`)
- `motion.ts` — configs surfaced by `get_motion_config`
Add a new entry to the relevant array following the `RegistryEntry` shape (`src/types.ts`):
```ts
{
id: "my-pattern", // unique kebab-case id
name: "My Pattern",
tags: ["..."], // drives fuzzy search — be generous
complexity: "elevated", // "clean" | "elevated" | "insane"
framework: ["react"],
componentType: "card", // components only — enables get_component
interaction: "hover", // optional
description: "One sentence on what it is.",
implementation_notes: "How it works / gotchas.",
code: `/* full, standalone, copy-pasteable TSX */`,
tailwind: "the key classes used",
motion: { // optional, if animated
library: "framer-motion",
config: { /* ... */ },
variants: { /* ... */ },
},
sources: ["aceternity", "godly"],
}
Guidelines:
- Code must actually run. Full component with imports and a
default export, valid Tailwind, correct Framer Motion / GSAP APIs. No// add animation hereplaceholders. - Tag generously — tags are weighted heavily in search.
- Run
npm run smoke(it builds + type-checks + exercises the tools) before opening a PR. - Keep snippets self-contained (inline SVGs over icon deps; scoped
<style>for keyframes).
Credits
Patterns are original implementations inspired by the craft of the design-engineering community:
Built on the Model Context Protocol TypeScript SDK.
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.