You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
“Text is perfect for many flows, but sometimes users just need a button.”
Me, after building five MCP tools that had to invent their own UI layer every time.
1 · Motivation
The current MCP spec focuses on text‑in / text‑out.
That’s ideal for chat, but limiting for:
Developers optionally add Tailwind classes or swap override files.
5 · Example Generated React (truncated)
// AUTO‑GENERATED by MCP‑UI v1.0.0 – DO NOT EDITimport{useQuery,useMutation}from'@tanstack/react-query';exportdefaultfunctionUserList(){const{ data, error, isLoading }=useQuery(['User'],fetchUsers);if(isLoading)return<div>Loading…</div>;if(error)return<div>Error!</div>;return(<ul>{data.map(u=><UserListItemkey={u.id}user={u}/>)}</ul>);}
6 · Security Model
HTML or JSON UI MAY render in <iframe sandbox> with:
sandbox="allow-same-origin allow-scripts" (no top‑nav, no forms).
RSC variant (vnd.mcp.ui+rsc) keeps code on the server; still isolated via a “realm” or RSC boundary.
Native mode (React/Vue/RN) can be used when the MCP client is trusted, bypassing iframe for seamless UX.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Pre-submission Checklist
Your Idea
Idea: MCP‑UI — Declarative Reactive Rich UI Components Extension for MCP
Related issue: https://github.com/orgs/modelcontextprotocol/discussions/287 this one is for complex, reactive, rich UIs.
Just like https://github.com/21st-dev/magic-mcp
1 · Motivation
The current MCP spec focuses on text‑in / text‑out.
That’s ideal for chat, but limiting for:
Right now every tool invents its own contract. I’d like to standardise that once, so any MCP client can:
2 · Design Goals
3 · Proposed Wire Format
3.1 Mime type
application/vnd.mcp.ui+json
— JSON payloadapplication/vnd.mcp.ui+rsc
— streamed React Server Components3.2 Top‑level shape
4 · Example Build Pipeline
Mitosis looks like a good default to have here.
npx mcp-ui pull
) downloadsapplication/vnd.mcp.ui+json
.mitosis compile --target react
(or vue/svelte/web/native).// AUTO‑GENERATED by MCP‑UI v1.0.0 – DO NOT EDIT
5 · Example Generated React (truncated)
6 · Security Model
sandbox="allow-same-origin allow-scripts" (no top‑nav, no forms).
Scope
Beta Was this translation helpful? Give feedback.
All reactions