Rotate your phone

This presentation is best viewed in landscape mode

MCP Connect Lisbon

From Claude Monet to Claude the Model

Designing Generative UI

MCP Connect LisbonPedro RodriguesAI Tooling Engineer, Supabase
- Hello everyone — I'm the person between you and the coffee break - I'm Pedro, AI Tooling Engineer at Supabase - Two Claudes in the title: one painted light, the other paints interfaces - Today: how we got here, what generative UI is, why MCP apps are the perfect vehicle — then we build some together

One Claude painted light.

The other paints interfaces.

Same first name. Both turning intent into something you can see.

- Claude Monet captured an impression of a moment — light, perception - Claude the model renders an impression of your intent — as UI - That's the thread for today
November 2022

How we got here

ChatGPT · Nov 2022
write me a profile card component. reply in a code block.
Sure! Here's a profile card:
```html
<div class="card">…
Copy
Paste
Fix
Repeat
index.html
1<div class="card">
2 <img src="…"/>
3 <h2>Jane Doe</h2>
4 <p>Designer</p>
5</div>
6<style>
7 .card { /* fix me */
8 padding: 1rem; }
- Back in 2022 this was the loop: ask ChatGPT for a component in a code block - Copy it, paste it, fix what's broken, repeat - The model on the left, your editor on the right, you shuttling between them
“Poor man's vibe coding”

It worked… sort of.

Primitive, but exciting.

It'll never write better code than me… right?

The phase — and the phrase — come from Ruben Casas (Postman), “Beyond Components: Designing Generative UI for MCP Apps.” Go watch it → youtu.be/hCMrEfPG2Yg

- Ruben Casas from Postman calls this "the poor man's vibe coding" - It worked, sort of. Primitive, but exciting. - And the assumption: it'll never write better code than me… right? - Credit where it's due — his talk maps this whole landscape, link is on screen
A blog post rebuilt from a single prompt
Then it improved — fast

One prompt. A whole interface.

Today, a single prompt rebuilds a page — with a search box, a blur animation, and accessibility I never asked for.

Impressionists were mocked too — “unfinished,” “a sketch.” Then it became a movement.

- Then it got good, fast - A single prompt rebuilt my blog — unprompted search box, blur animation, accessibility out of the box - The "it'll never beat me" assumption aged badly - Like the impressionists: first dismissed as unfinished sketches, then a movement. Generative UI is in its impressionist phase
What is generative UI?

A spectrum, not a switch

Static

Pre-built components. The agent just passes props.

Today's default

Declarative

The agent emits a JSON/YAML spec that maps to your components.

Best balance today

Generative

The model writes the UI itself, on demand, at runtime.

Where it's going

Ruben maps the full landscape (static · declarative · generative) — I'll point you there. Here's the gist.

- Generative UI isn't one thing — it's a spectrum - Static: developers build components, the agent passes props. Most agents today - Declarative: the agent emits a JSON/YAML spec mapped to your design system. Best balance right now - Generative: the model writes the UI itself, at runtime. That's the frontier - Ruben goes deep on all three — go watch; here's the gist
Generative, for real

Same data. Brand-new UI, every time.

No component, no translation layer — the model paints the interface on demand. One weather agent, three completely different renders.

Press Re-generate and watch it repaint. What could possibly go wrong?

weather-agent · generation #1generated at runtime

Lisbon

19°

⛅

“Bring a light jacket — the Tejo breeze means business.”

- Here's generative for real — a weather agent - Same data every time, but the UI is generated fresh on each call - Click re-generate: three totally different interfaces from one agent - It's magic… and that "what could go wrong" is the whole next section
The catch

You can't hand users raw, model-written UI

If we don't trust third-party code, we shouldn't blindly trust code an LLM wrote a second ago. Generative UI needs a frame.

A boundary
Containment
A sandbox
- The catch: you can't just take model-written HTML/JS and render it to a user - If we sandbox third-party code, LLM-generated code deserves the same - Generative UI needs a frame: a boundary, containment, a sandbox - A loose impressionist painting still needs a frame to hang safely
Why MCP apps

MCP apps are the frame and the gallery

Sandboxed by default
Authentication
Tool calling
Message passing

A double-iframe sandbox, auth, and a message channel — out of the box. Even Anthropic ships its first-partyUI this way. So why can't we?

- This is why MCP apps are the perfect vehicle for generative UI - They give you the frame and the gallery: sandboxed double-iframe, auth, tool calling, message passing — for free - Anthropic uses MCP apps even for its own first-party UI - If it's good enough for them, it's good enough for us. Let's use it
Demo · your turn

Let's paint a wall — together

Scan the code. Prompt a tile. Our MCP server generates it, Supabase Realtime drops it onto the shared azulejo wall — Lisbon's walls, made of your components.

1. Scan, or open the link below

2. Describe a tile in one line

3. Watch it appear on screen

azulejo-playground.vercel.app
- Now your turn — this is the whole point - Scan the QR, you'll get a prompt box - Type what you want as a tile — "a neon weather card", "a green button", anything - Our MCP server generates it inside the sandbox, Supabase Realtime puts it on the shared wall - Azulejos: Lisbon's tiled walls — but every tile is a component you generated
LIVE

The azulejo wall

MCP · generated HTMLSupabase Realtime
Wall not configured.
- Here's the wall, live - As prompts come in, tiles render and pop in — each one a generated component - Constrained catalog keeps it safe and fast; no raw HTML reaching the screen - Keep them coming — let's fill it

Monet gave us a new way to see.

These models, a new way to build.

Here's a brush. 🖌️

Pedro Rodrigues

AI Tooling Engineer, Supabase

- Monet gave us a new way to see; these models give us a new way to build - Generative UI is still in its impressionist phase — and you just painted with it - Go watch Ruben's talk for the deep dive - That's me — questions? Thank you, Lisbon!
Supabase1/12
← → navigate · P notes