MCP Apps lets servers ship UI for their own tools
MCP Apps is notable not because ChatGPT can render widgets, but because an MCP server can ship ui:// interface resources alongside its tools, turning bookings, approvals and dashboards into clickable components instead of plain text.
The interesting thing about MCP Apps isn't that ChatGPT can render a widget. It's that the MCP server can now ship the interface for its own tools. Before: model → MCP tool → JSON/text → model explains result Now a server can expose: tool → business action ui:// resource → interface for that action So imagine a booking system. The model calls list_available. Instead of receiving 20 rows and turning them into prose, the host can render interactive cards directly inside the conversation. You select one. The widget calls book_item. The booking is written to the backend. That interaction can then update the model's context. AWS's AgentCore example uses essentially this split: ChatGPT / Claude ↓ MCP server ↙︎ ↘︎ tools UI resources ↓ ↓ Lambda HTML widget ↓ DynamoDB The useful part is the separation. The model handles language and intent. The tool handles the action. The widget handles interaction. The existing backend remains the system of record. That makes things like dashboards, forms, approval flows, maps, document review and Kanban boards much more natural than forcing everything through chat text. And because MCP Apps is additive, clients that don't support the UI extension can still receive the normal tool result.