Dynamic MCP UI Generator
Implements advanced styling with glassmorphism effects for the UI components generated by the MCP server
Uses Express.js as the web framework for handling API endpoints and serving dynamic UI components
Integrates Inter font from Google Fonts for modern, readable typography in the generated UI components
Embeds JavaScript in dynamically generated HTML components for interactive functionality
Runs the MCP server on Node.js runtime to power the backend services for UI generation
Supports automatic server restart on file changes during development
Implements the frontend client using React 18 with hooks and functional components
Uses Vite as the build tool and development server for the frontend client
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Dynamic MCP UI Generatorcreate a dashboard with sales metrics and a pie chart for regional revenue"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP UI studio
Live demo: mcp-ui-poc.vercel.app
Chat-first studio: a message (optional API URL) becomes a versioned Widget.
A System 1 DecisionAdapter (Laya open-weight, or Jev BYOK) decides; code and a ThemeAdapter construct.
An LLM fills copy slots on catalog layouts (needs_llm) or generates HTML when the catalog cannot express the ask — prefer OpenAI-compatible open models via OPENAI_BASE_URL.
Publish a public iframe at /e/:publicId. Owners sign in with GitHub to edit.
chat turn ─▶ bind fixture or fetch URL ─▶ Laya/Jev fan-out (live; fingerprint replay off) ─▶ applyPolicy + ThemeAdapter pack ─▶ LLM copy slots or HTML generate ─▶ embed URLGlossary: CONTEXT.md. ADRs: docs/adr/. Visual system: design-system/MCP-UI/MASTER.md.
Features
Follow-up turns — “add a tooltip”, “hide the table”, “make it a bar chart” upgrade the current session widget. New chat starts a fresh session. Then Publish to embed
/e/:id.Turns — each successful send is kept on the chat. Restore from Recents (
/?c=:id), then follow up or Publish. Published widgets keep server-side versions;/e/:idis live,/e/:id?v=is pinned.Connect your look — Settings sheet: starter packs, paste CSS variables, or upload tokens.json. The pack restyles the catalog and is stored on the widget so the embed stays branded.
Prompt-first — describe a UI, paste a JSON URL in the message, or both. No separate API URL field. Text-only prompts bind a demo/sketch so the planner still has records to lay out. Starters: Login, Dashboard, Landing, Checkout.
Chat history — Recents in an overlay (scrim, not a layout column). Remove / Clear hide chats from the list (soft delete) and archive prompts + policies for later model training; HTML and API payloads are not kept.
Studio chrome — canvas-first: describe → see → talk → share. Human stages: Fetching data → Designing layout → Rendering. The chat rail shows live thinking on every turn. Optional
?debug=1shows planner traces.DecisionAdapter (Laya or Jev) — one System 1 fan-out per generate. Prefer open Laya (
LAYA_BASE_URLsidecar or ONNX); TypeSafe Jev remains optional BYOK. Redis fingerprint replay is off; every Studio send plans live (fresh: true). Login, landing, checkout, pricing, and map/editor workspaces are catalog primitives. Out-of-catalog asks go to LLM HTML generate. Seedocs/adr/002-jev-routing.md,docs/adr/007-oss-decision-llm.md, anddocs/adr/006-design-packs.md.Never full payloads to the LLM —
inferShape+ instruction excerpt only. Copy slots when a catalog layout setsneeds_llm, or sanitized HTML whencatalogCannotExpress. Default open path:OPENAI_BASE_URL(Ollama / Groq / OpenRouter).Redis + Mongo — sessions and optional cache in Upstash/Redis; widgets/turns/users on Atlas M0. Fingerprint replay is not used on the Studio hot path. No long-term raw API dumps.
Embeds —
GET /e/:publicId(pin?v=). Owner UI/w/:publicIdafter GitHub OAuth.Pluggable ThemeAdapter — default Studio pack (MASTER teal). Developers may
registerDesignSystemwith a customrender. Studio users connect packs, not JavaScript.Safety — SSRF guard, HTML size cap, rate limits on generate and chat turns.
Related MCP server: Document Automation MCP Server
Project structure
mcp-ui-poc/
├── client/ # React + Vite studio
├── server/ # Express: chat SSE, OAuth, widgets, embed
├── packages/core/ # ui-compose-kit: planner, DecisionAdapter, design systems
├── packages/autonomous-company/ # Studio Company OS (`npm run company`)
├── mac-agent/ # Local-first Mac control app + `/autonomous` Director
├── design-system/ # MASTER.md for host chrome
└── api/ # Vercel serverless entryAutonomous loops
Entry | Scope | Command |
| Studio product Company OS |
|
| Mac Agent engineering org (in |
|
Getting started
git clone <repository-url> && cd mcp-ui-poc
npm install && npm run install-all
cp .env.example .env.local # optional: LAYA_BASE_URL, OPENAI_BASE_URL, or TYPESAFE/ANTHROPIC BYOK
npm run skills:install # once: Matt Pocock + UI UX Pro Max (then /setup-matt-pocock-skills in chat)
npm run dev # backend :3001
npm run client # frontend :3000 (proxies /api and /e)Open http://localhost:3000. Local keys stay in .env.local. Production should omit TYPESAFE_API_KEY / ANTHROPIC_API_KEY so visitors BYOK in Settings. A referrer-restricted GOOGLE_MAPS_API_KEY may stay on the server so published map embeds can load the Maps SDK.
Local Redis + Mongo (optional, for sessions, ratings, and durable publish):
# macOS
brew services start redis
brew services start mongodb-community@8.0
# or: docker compose up -dThen in .env.local:
REDIS_URL=redis://127.0.0.1:6379
MONGODB_URI=mongodb://127.0.0.1:27017/mcp_ui
MONGODB_DB=mcp_uiHealth should read store: redis-local · mongo: local. Production uses Upstash REST (UPSTASH_REDIS_*) and Atlas (mongodb+srv). GitHub OAuth remains optional (GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, SESSION_SECRET, PUBLIC_ORIGIN=http://localhost:3000).
Vercel (Hobby) + GitHub
Git integration:
main→ production, PRs → preview.CI:
.github/workflows/ci.ymlrunsnpm test,npm run company:test, client lint, andnpm run build.Production env (free infra):
UPSTASH_REDIS_REST_URL,UPSTASH_REDIS_REST_TOKEN,MONGODB_URI,GITHUB_CLIENT_ID,GITHUB_CLIENT_SECRET,SESSION_SECRET,PUBLIC_ORIGIN.Do not put TypeSafe or Anthropic keys on Vercel if the site should stay BYOK. Do not put those keys in GitHub Actions secrets.
Callback URL for the GitHub OAuth App: https://<host>/api/auth/github/callback.
API
Endpoint | Description |
| Planner, Jev, Redis, Mongo, OAuth, Maps; |
|
|
|
|
|
|
| Starter packs |
| `{ starter? |
| Legacy URL generate (same planner) |
| Publish session widget (GitHub session). Pass |
| Metadata / owner customize. PATCH |
| Cacheable embed HTML ( |
| OAuth login |
|
|
| BYOK checks |
Scripts
Command | Purpose |
| Servers and production client |
|
|
| Autonomous company CLI / its tests ( |
| Agent skills |
| Anonymized training JSON from Mongo |
Training export: docs/training-export.md. Future LocalAdapter stub: packages/core/src/decisions/local.js.
Security
Fetched payloads are not stored long-term. Turns keep shape, Jev answers, policy, planner, latency, ratings.
SSRF guard on outbound fetches. Rate limits on chat/generate.
Embed HTML is public via unguessable
publicId; edits require GitHub owner session.
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
AI development agent using Kendo UI to rapidly create and style quality web UIs or Pages.
No-code databases, forms, portals and AI sites. Manage records and automation via natural language.
No-code databases, forms, portals and AI sites. Manage records and automation via natural language.
Related MCP Servers
- AlicenseCqualityDmaintenanceA Model Context Protocol server that enables AI agents to generate, fetch, and manage UI components through natural language interactions.323 npm7ISC
- AlicenseNot gradedqualityDmaintenanceA sophisticated server that enables AI assistants to automatically analyze codebases and generate comprehensive, professional documentation.2MIT
- FlicenseNot gradedqualityDmaintenanceAdvanced server for simulating financial models and stochastic processes, offering tools for generating simulations, calculating financial metrics, and visualizing results with interactive components.-
- AlicenseNot gradedqualityFmaintenanceAn automated MCP server for Google Stitch that enables AI-driven UI design generation, accessibility audits, and design system management. It streamlines workflows for creating responsive screens, extracting design tokens, and maintaining visual consistency across professional web projects.54 npm31Apache 2.0