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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。