With Generative UI, the LLM writes the UI code at runtime. Instead of calling a pre-built tool with a fixed shape, the model writes Prefab Python tailored to the current data and request. The user watches the UI stream in as the model generates it.Documentation Index
Fetch the complete documentation index at: https://gofastmcp.com/llms.txt
Use this file to discover all available pages before exploring further.
generate_prefab_ui— a tool that accepts Python code, executes it in a Pyodide sandbox, and renders the result as a Prefab appsearch_prefab_components— a tool the LLM uses to discover what components are available- The streaming renderer — a
ui://resource with browser-side Pyodide that progressively renders partial code as the LLM generates it
How it works
When the LLM callsgenerate_prefab_ui, it writes Prefab Python code into the code argument. The MCP Apps protocol creates the renderer iframe in parallel with the tool call, so the app is already running by the time partial arguments start flowing.
As the LLM generates each token:
- The host forwards partial arguments to the app via
ontoolinputpartial - The renderer extracts the growing
codestring - Browser-side Pyodide executes whatever compiles successfully
- The user sees components appear as they’re written
What the LLM writes
The tool description includes examples that teach the model the Prefab patterns. A typical generation looks like:The component search tool
Before writing code, the LLM can callsearch_prefab_components to discover what’s available:
detail=True returns full field descriptions and docstrings. The search tool introspects Prefab classes at runtime, so it’s always up to date with the installed version.
Passing data
Thegenerate_prefab_ui tool accepts a data parameter. Values become global variables in the sandbox:
Configuration
GenerativeUI takes options for customizing tool names:
Requirements
Generative UI needsfastmcp[apps], which pulls in prefab-ui. The server-side Pyodide sandbox (for final validation) requires Deno — it installs automatically on first use.
The streaming renderer loads Pyodide from CDN in the browser. The CSP is configured automatically by the provider — no manual setup.
Sandbox limitations
The Pyodide sandbox includes the Python standard library and Prefab. External packages (NumPy, pandas, requests, etc.) are not available — the LLM’s code must work with only built-in Python and Prefab. If the LLM imports something unavailable, the sandbox raisesImportError.
Next steps
- Interactive Tools — the component building blocks the LLM will use
- Prefab component reference — full component library
- Development — preview generative tools locally with
fastmcp dev apps

