build-mcp-app

Build MCP apps serving interactive UI widget resources alongside tool results.

12|2|Updated Oct 2, 2025
One-click install
npx skills add https://github.com/hasanraiyan/resume --skill build-mcp-app-hasanraiyan
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: build-mcp-app
Source: https://github.com/hasanraiyan/resume/tree/main/.agent/skills/build-mcp-app
Command: npx skills add https://github.com/hasanraiyan/resume --skill build-mcp-app-hasanraiyan

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This skill helps you extend an MCP server with interactive chat-surface UI widgets so users can pick, confirm, and visualize results without relying on fragile plain-text workflows.

Core Features & Use Cases

  • Interactive UI widgets for tools: Render forms, pickers, confirmation dialogs, progress/status, and display components inline in the host chat experience.
  • Host-compatible widget runtime: Uses the apps surface App connection model with correct iframe sandbox/CSP constraints and safe messaging patterns.
  • Correct architecture for UI + wire protocol: Adds UI resources alongside tools via _meta.ui.resourceUri, keeping tool handlers returning data while the resource serves the HTML.

Quick Start

Use build-mcp-app after build-mcp-server when you already know you want interactive UI widgets (forms, pickers, confirmation dialogs, or dashboards) served by an MCP app.

Frequently Asked Questions about build-mcp-app

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add interactive UI widgets to an MCP server?

To add interactive UI widgets to an MCP server, you register tools with _meta.ui.resourceUri and serve HTML resources that run iframe widget code using the @modelcontextprotocol/ext-apps App. This renders forms, pickers, and dialogs inline in the host chat.

What is the best way to render confirmation dialogs and pickers in a chat host?

The best way to render confirmation dialogs and pickers in a chat host is serving interactive UI widget resources alongside tool results. This replaces fragile plain-text workflows with explicit selection and structured input components using safe messaging patterns.

Does the MCP apps surface App connection model work with iframe sandbox and CSP constraints?

Yes, the apps surface App connection model works with iframe sandbox and CSP constraints. It enforces safe messaging patterns and prevents external imports that violate CSP, ensuring the widget runtime remains host-compatible.

How do I serve widget HTML resources alongside tool results without breaking the wire protocol?

To serve widget HTML resources alongside tool results without breaking the wire protocol, you add UI resources via _meta.ui.resourceUri. This keeps tool handlers returning data while the resource serves the HTML for the interactive forms.

Can I use build-mcp-app to display progressive outputs and dashboards in a conversation?

Yes, you can use build-mcp-app to display progressive outputs and dashboards in a conversation. It applies to scenarios requiring visual display components and status updates served directly within the chat experience via the ext-apps framework.

Why do my interactive forms not working with plain-text MCP workflows need a UI resource?

Interactive forms need a UI resource because plain-text MCP workflows are fragile and cannot handle inline structured input. Registering _meta.ui.resourceUri serves the HTML widget necessary for the host to render the interactive form correctly.