Users of a sales MCP server want results rendered as an interactive chart they can filter and drill into inside the conversation, without opening a separate web app. Which approach fits?
Select an answer to reveal the explanation.
Short Explanation
MCP Apps give you a mini-app that rides along with the tool, and the host keeps it fenced in a sandbox. The trap is thinking a host will run raw HTML from any tool result; that only happens through the extension's controlled path.
Full Explanation
MCP Apps is an official extension that lets servers deliver interactive HTML interfaces such as charts, forms and dashboards inside the conversation. A tool declares a reference to a ui:// resource in its metadata; the host fetches that resource and renders it in a sandboxed iframe that cannot reach the parent page, cookies or storage. The app talks to the host over postMessage using a JSON-RPC dialect, so it can request tool calls for fresh data while the user filters and drills down, subject to host policy and consent. Returning HTML as ordinary text content does not make hosts execute it; core content types carry data the host displays, and executing arbitrary markup would be unsafe. Prompts are user-selected message templates, not interactive visual components. URL-mode elicitation directs the user to an external page for sensitive interactions, and the client must open it securely outside the model's view, not embed it inline as part of the chat. Exam caveat: MCP Apps is opt-in and host support varies, so the server should still return meaningful text content for hosts that do not render apps. Operational check: confirm the host declares the io.modelcontextprotocol/ui extension, then verify the tool's ui:// resource loads and that the text result still reads well without it.