What problem does it solve? Plain MCP tools return only text or JSON, which falls short when a user must pick from a large list, confirm a destructive action, or view spatial data like charts and maps. This Skill guides you through adding interactive UI widgets to an MCP server so tools can render forms, pickers, dashboards, and confirmation dialogs directly inside the conversation in Claude and other compatible hosts. ## Core Features & Use Cases - Widget-enabled tools: Register tools with _meta.ui.resourceUri and serve HTML resources via registerAppResource using the @modelcontextprotocol/ext-apps package. - Bidirectional widget runtime: Use the App class inside the sandboxed iframe to receive tool results, send messages, call server tools, open links, and adapt to host theme and display mode. - Production guidance: Reference docs cover iframe CSP sandbox constraints, payload size budgeting, abuse protection with rate limiting, and the connector-directory submission checklist. - Use Case: Build a contact picker tool where Claude calls pick_contact, the host renders an interactive searchable list in an iframe, and the user's selection is injected back into the conversation as a message. ## Quick Start Ask the AI to use the build-mcp-app skill to add an interactive picker widget to your MCP server tool.