Design tokens, component source and WCAG checks for rendering any UI in a past design era.
MCPpedia last refreshed this data
io.github.sylvesterworks/nostalgiaui is an MCP server that design tokens, component source and WCAG checks for rendering any UI in a past design era. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 58/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"nostalgiaui": {
"args": [
"-y",
"@nostalgiaui/mcp"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Design tokens, component source and WCAG checks for rendering any UI in a past design era.
This server supports HTTP transport. Be the first to test it - help the community know if it works.
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked @nostalgiaui/mcp against OSV.dev.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in design
Design tokens from any live site: colours, type, spacing, components, drift against a baseline.
Draw and visually collaborate with your agents on tldraw's canvas.
MeiGen-AI-Design-MCP — Turn Claude Code / OpenClaw into your local Lovart. Local ComfyUI, 1,400+ prompt library, multi-direction parallel generation.
Inspect and edit Three.js scenes, materials, shaders, lights in real time from any AI agent
MCP Security Weekly
Get CVE alerts and security updates for io.github.sylvesterworks/nostalgiaui and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
An open source design system that renders any interface in the style of a past design era, using color palettes drawn from popular VS Code themes. Built on Base UI and shipped with an MCP server so AI coding agents can use it directly.
Status: milestone 4 complete. Six eras, five palettes, five components, a VS Code theme importer, an MCP server, a docs site at nostalgiaui.sylvester.works, and all four packages published to npm.
Every rendered component is the product of two independent choices.
Era controls shape and feel: border radius, border style, bevels, shadows, gradients, textures, typography, spacing density, and motion.
Palette controls color, and nothing else. Palettes come from VS Code themes.
Because the axes are independent, any palette works in any era. Dracula in Classic Windows. Solarized Light in Frutiger Aero. The same settings page can be dragged across twenty years of design history without rewriting a single component.
Era (shape) x Palette (color) = rendered component
Keeping the axes apart is the central constraint of the project. Era effects that need extra colors, such as a 90s bevel highlight or a Web 2.0 gradient stop, are derived from the semantic tokens with OKLCH color math rather than hand picked per palette. Otherwise every new palette would mean touching every era.
| Layer | What it holds |
|---|---|
| Palette primitives | Raw colors from a VS Code theme, including syntax colors |
| Semantic tokens | surface, text, accent, success, danger, border, and friends |
| Era tokens | Radius, border, shadow, gradient, font, and motion recipes |
Eras read only from semantic tokens. No component ever uses a raw color value.
Eight so far, in chronological order: Terminal / CRT, Early Mac, Classic Windows, Web 1.0, Frutiger Aero, Flat / Metro, Neumorphism, and Neubrutalism. Web 2.0, Skeuomorphism, Material, and Glassmorphism are still to come.
Dracula, Nord, Solarized Light, Catppuccin Mocha, and One Dark Pro, each with its source theme and licence recorded in packages/tokens/palettes/<name>/SOURCE.md. One light palette has been included from day one so that light mode never becomes an afterthought. One Dark Pro was produced by running the importer on the theme's own file, which was its first real-world test.
packages/tokens era and palette definitions, built to CSS variables, Tailwind config, DTCG JSON
packages/react Base UI components styled via tokens, with stories beside each component
packages/importer VS Code theme JSON to NostalgiaUI palette
packages/mcp MCP server
apps/storybook Storybook, the local development surface, with era and palette toolbars
apps/docs docs site for nostalgiaui.sylvester.works (milestone 4)
docs/decisions architecture decision notes
import { Button, NostalgiaRoot } from '@nostalgiaui/react';
import '@nostalgiaui/tokens/tokens.css';
import '@nostalgiaui/react/styles.css';
<NostalgiaRoot era="frutiger-aero" palette="nord">
<Button variant="solid">Click me</Button>
</NostalgiaRoot>;
Changing either prop changes one attribute. Nothing re-renders differently and no markup changes: the whole visual difference is CSS resolving a different set of custom properties.
NostalgiaRoot is also what portalled parts render into. Base UI sends Dialog
to document.body by default, which would escape the token scope entirely.
Requires Node 22 or newer and pnpm 11.
pnpm install
pnpm check # lint, typecheck, test, build
pnpm dev # Storybook on http://localhost:6006, hot reloads component edits
Individual tasks: pnpm lint