What problem does it solve?
It helps you turn a plain MCP server into an MCP app that can render interactive UI widgets (forms, pickers, dialogs, dashboards) inline during a chat, so users can complete complex actions without relying on fragile free-text input.
Core Features & Use Cases
- Interactive widget UI on top of existing MCP tools: Attach a
_meta.ui.resourceUri to a tool and serve the corresponding HTML resource so the host renders an iframe widget.
- Use the right widget when it matters: Prefer forms for structured inputs, pickers/tables for selecting from lists, confirm dialogs for destructive actions, and display widgets for spatial/visual outputs.
- Two deployment shapes supported: Remote MCP app (widgets served as resources) and MCPB-packaged local MCP app (for local-disk or desktop-app driving widgets).
- Widget runtime guidance for reliable rendering: Use the
App class from @modelcontextprotocol/ext-apps, set handlers before connect(), and keep widgets self-contained for CSP/sandbox constraints.
Quick Start
Use the build-mcp-app skill to add an interactive picker UI to a tool by defining the tool’s _meta.ui.resourceUri, registering the matching app resource HTML, and making the widget render the tool’s returned JSON via app.ontoolresult.