Render Data

Loading "Render Data Pa64m"
πŸ‘¨β€πŸ’Ό We've got a new requirement coming up. We're going to be adding authorization to the MCP server, but our UI has no way to identify the user securely.
The problem is that we need a way to pass protected data directly from the MCP server to the iframe component, eliminating the need for additional API calls while maintaining security boundaries.
Instead, we can use MCP UI's render data to pass initial data directly to iframe components. This allows the server to provide all necessary context when creating UI resources.
// Server provides initial data with the UI resource
return {
	content: [
		{
			type: 'resource',
			resource: {
				uri: iframeUrl.toString(),
				mimeType: 'text/html',
				uiMetadata: {
					'initial-render-data': { bookmarks },
				},
			},
		},
	],
}

// Client receives data as soon as it emits the `ui-lifecycle-iframe-ready` event
window.addEventListener('message', function handleMessage(event: MessageEvent) {
	if (event.data?.type !== 'ui-lifecycle-iframe-render-data') return
	if (event.data.error) {
		// event.data.error... handle it
	} else {
		const { bookmarks } = event.data.payload
		// do stuff with this
	}
})
You need to implement render data for the entry viewer. The server should pass the entry data via uiMetadata, and the client should use waitForRenderData to receive it.
Your implementation of waitForRenderData should be a little more complete. If you need help, your AI assistant can help you with that! Just ask it!

Please set the playground first

Loading "Render Data"
Loading "Render Data"
Login to get access to the exclusive discord channel.
  • πŸ’»MCP UI
    MCP use case for average AI user
    hasan ⚑:
    Hey @Kent C. Dodds β—† πŸš€πŸ†πŸŒŒβš‘ while working with MCPs one concern keeps comint to me. Do you feel ave...
    • βœ…1
    3 Β· 8 hours ago
  • ⚑General
    Epic MCP Server
    Fede:
    Given the amount of questions around deployment and getting started, it would be cool to have an Epi...
    • βœ…1
    2 Β· a day ago
  • ⚑General
    Cloudflare deployment
    Aaron Schwartz:
    Do you have any resources on deploying to a live cloudflare instance? I haven't dug through the work...
    • πŸ‘1
    • βœ…1
    4 Β· a day ago
  • πŸ’»MCP UI
    MCP-UI UIResourceRenderer
    js.nz ⚑:
    Any comments on using UIResourceRenderer from @mcp-ui/client when building a client UI?
    • βœ…1
    1 Β· a day ago
  • πŸ’»MCP UI
    Render data use cases
    Aaron Schwartz:
    I'm still wrapping my head around the Auth section, but I was confused during the UI render data sec...
    • βœ…1
    1 Β· a day ago
  • πŸ’ͺAdv. MCP Features
    ⚑General
    Understanding Session and State Management for Remote MCP Server
    Kusten ⚑:
    I just completed the Advanced Features workshop, and the notifications/tools/list_changed section le...
    • βœ…1
    1 Β· a day ago
  • πŸ’»MCP UI
    nanobot questions
    Jangla ⚑:
    Anyone know how to change the db location? I've followed the idea of adding nanobot config to an ign...
    • βœ…1
    4 Β· 4 days ago
  • πŸ’»MCP UI
    nanobot fails to connect to mcp server in exercise MCP UI 3.1
    Dan:
    Had nanobot connecting successfully in previous exercises but I get the following error since moving...
    • βœ…1
    14 Β· 3 days ago
  • ⚑General
    Epic MCP server not initializing
    steve ⚑:
    I am attempting to configure the Epic MCP Server per Kent's instructions here: https://www.epicai.pr...
    • βœ…2
    3 Β· 4 days ago
  • πŸ’»MCP UI
    Issue: Goose not detecting MCP extension in UI Workshop exercise
    Nhalillo ⚑:
    Hi everyone! πŸ‘‹ Has anyone managed to properly configure Goose for the first exercise (Simple Raw H...
    • βœ…1
    5 Β· 5 days ago
  • πŸ’»MCP UI
    Issue: Goose not displaying HTML (remote DOM exercise)
    okram ⚑:
    Hi πŸ‘‹ Goose is not displaying the HTML. I have no diff between problem and solution and I enabled t...
    • βœ…1
    1 Β· 5 days ago
  • ⚑General
    What will tomorrows MCP hosts look like?
    Paul πŸš€:
    Hi Kent,

Thanks for putting together the course, I’m really enjoying it. Im interested if you have...
    • βœ…1
    2 Β· 5 days ago
  • πŸ’»MCP UI
    MCP UI repository - Unexpected option passed to `new Miniflare()` constructor?
    mark:
    So when I run the MCP UI repository and try start the first exercise I receive an error: "Unexpecte...
    • βœ…1
    11 Β· 5 days ago
  • ⚑General
    VS Code Copilot and Epic Workshop MCP Server
    Alexandre πŸš€:
    I might have missed something, but how do we install the Epic Workshop MCP Server so we can ask Copi...
    • βœ…1
    3 Β· 6 days ago
  • 🐣MCP Fundamentals
    πŸ’ͺAdv. MCP Features
    πŸ”MCP Auth
    πŸ’»MCP UI
    What about the usage of MCP Servers for some kind of chat interacting with a local LLM?
    frankfullstack ⚑:
    I would like to raise a general question about the usage of MCP Servers and how we could interact fr...
    • βœ…1
    5 Β· 12 days ago
  • 🐣MCP Fundamentals
    ⚑General
    It'd be really cool to have a basic deployment guide.
    BeyondLimits99 ⚑:
    The course has been amazing so far! I'd love to have a basic deployment guide just so I can practice...
    • βœ…2
    3 Β· 9 days ago
  • ⚑General
    non-related question: how do you rollout updates?
    mark:
    I'm very curious to hear: How do you roll-out new updates? do you use some kind of libary?
    • βœ…1
    5 Β· 13 days ago
  • 🐣MCP Fundamentals
    ⚑General
    How do you teach the LLMs to use ResourceTemplates and ResourceTemplatesList?
    frontendwizard:
    I'm playing around with building an mcp with claude and he has a tendency to go for json for everyth...
    • βœ…1
    8 Β· 11 days ago