Dev & Engineering ✓ Anthropic · Official mcp-appsinteractive-widgetsiframe-sandboxstreamable-httptypescriptelicitationapps-sdk

MCP Interactive App Builder

Add chat-embedded forms, pickers, dashboards, and confirmation widgets to MCP servers.

FollowSkills review · FSRS-2.0
Not recommended
59/ 100 5-point scale 3.0 / 5
Trust18 / 25 · 3.6/5

The document explicitly covers iframe sandboxing, CSP restrictions, host-mediated external links, and rate limiting, proxy trust, caching, and authless exposure. Confirmation dialogs and destructive-tool annotations are also addressed. Points are deducted because examples rely on unspecified databases and upstream APIs, while sensitive-data handling, least privilege, confirmation boundaries, rollback, and end-to-end data-flow auditing are not systematically specified; dependencies are unpinned.

Reliability8 / 20 · 2.0/5

The tool/resource registration model, widget messaging, CSP pitfalls, payload limits, and debugging paths are mostly consistent, with some abnormal-case guidance. Points are deducted because there is no committed test suite or verifiable execution result, examples contain an undefined db and unspecified data source, and JSON parsing, network failure, missing host capabilities, and other key errors lack unified handling; static calibration caps this below 10.

Adaptability11 / 15 · 3.7/5

Triggers, use cases, boundaries against plain text and elicitation, remote versus MCPB deployment, and fallback behavior for hosts without the apps surface are clearly described. Points are deducted because Chinese-language UX and mainland-China network reachability are not assessed, and some functionality depends on host-specific Claude/ChatGPT app-surface support.

Convention11 / 15 · 3.7/5

The skill has a version, clear information architecture, progressive reference documents, installation guidance, templates, limitations, FAQ-like troubleshooting tables, and Anthropic attribution; repository context supplies Apache-2.0 licensing. Points are deducted because the skill lacks a changelog, compatibility matrix, pinned dependency versions, and an explicit maintenance/update path, and some guidance depends on external links and another skill.

Effectiveness7 / 15 · 2.3/5

It supplies architecture guidance, server and iframe examples, reusable templates, testing loops, and abuse protections, making the core implementation approachable and explaining when widgets add value over text or elicitation. Points are deducted because database, deployment, authentication, and host configuration remain to be supplied, and key code paths are not execution-verified; static calibration caps this at 7.

Verifiability4 / 10 · 2.0/5

The material includes substantial code, protocol fields, symptom-to-fix tables, test commands, and named references, giving the claims reasonable source-level auditability. Points are deducted because no committed CI, test suite, or third-party execution evidence is provided, and claims described as observed cannot be independently reproduced from static files alone; static calibration caps this below 5.

Evidence confidence:Low Reviewed Jul 20, 2026 Reviewed revision b0b9f02b0581
Before you use it
  • Do not use the examples directly in production; add authentication or tightly define the authless data scope, isolate upstream secrets, minimize sensitive data, and implement confirmation and rollback for writes.
  • Pin and audit versions of @modelcontextprotocol/sdk, @modelcontextprotocol/ext-apps, express, zod, mcp-remote, and related dependencies, then verify the target hosts and network environment.
  • Add explicit error feedback and tests for oversized payloads, invalid JSON, network timeouts, unsupported host capabilities, and stale widget instances.
See the full review method →

What it does & when to use it

This Agent Skill guides developers in extending a standard MCP server with UI resources rendered inline in a chat surface. It covers remote Streamable HTTP deployments and MCPB-packaged local applications, including the relationship between tools, resources, and iframe widgets. It also documents the `App` runtime, host messaging, theming, CSP constraints, and testing workflows. It is a good fit when an MCP tool genuinely needs interaction; ordinary text or JSON output is usually simpler.

It explains how to register an MCP tool with _meta.ui.resourceUri, register a separate HTML UI resource, and serve it with RESOURCE_MIME_TYPE. Inside the iframe, the examples use the App class to receive tool results, send messages, update model context, call server tools, open links, download files, and request display modes. The skill provides TypeScript/Express scaffolding, dependency commands, remote and local deployment patterns, widget templates, and testing procedures for Claude, Claude Desktop, JSON-RPC, browser previews, and hosts without the apps surface.

  1. An MCP developer needs a searchable picker for files, contacts, or records that Claude cannot reliably rank or select.
  2. A tool performs a destructive or billable action and needs explicit inline confirmation.
  3. A server returns charts, maps, diffs, previews, or other spatial or visual output.
  4. A tool needs structured input and a widget is more suitable than model-inferred arguments or elicitation.
  5. A user needs to watch a long-running operation through progress or live-status UI.

Pros & cons

Pros
  • Covers the full path from tool and resource registration to iframe messaging, CSP, theming, and display modes.
  • Addresses both remote MCP apps and MCPB-packaged local apps.
  • Includes copyable TypeScript, HTML, npm, and testing examples.
  • Defines graceful degradation for hosts that do not support the apps surface.
Limitations
  • It focuses on interactive MCP UI and does not replace the base `build-mcp-server` or MCPB packaging skills.
  • Iframe sandboxing imposes CSP, networking, image, navigation, and host-access restrictions.
  • The current Claude Desktop workflow still requires `command`/`args` with `mcp-remote`, and aggressive UI-resource caching can slow iteration.
  • The source provides testing procedures but no automated test suite.

How to install

The skill is located at plugins/mcp-server-dev/skills/build-mcp-app/SKILL.md and is installed through the anthropics/claude-plugins-official marketplace collection. In Claude Code, run /plugin install mcp-server-dev@claude-plugins-official, or browse it through /plugin > Discover. The example project dependencies can be installed with npm install @modelcontextprotocol/sdk @modelcontextprotocol/ext-apps zod express.

How to use

After the MCP server deployment model is settled, use a prompt such as: Add an interactive contact picker to my MCP server that renders in chat, and show the remote Streamable HTTP registration and iframe messaging implementation. If the requirement is only yes/no confirmation, a short enum, or a flat form, check whether MCP elicitation is sufficient before building a widget.

Compared to similar skills

Compared with plain text or JSON tool output, this skill is intended for selection, confirmation, visualization, and live-status scenarios. If MCP elicitation covers the interaction, the source recommends using elicitation instead of a widget.

FAQ

Is this skill appropriate for every MCP tool?
No. The source recommends widgets for structured input, large searchable lists, visual previews, charts, maps, confirmations, or live progress. Other tools can remain text- or JSON-based.
Can a widget access the host page or arbitrary external networks?
No. It runs in an iframe sandbox and cannot access the host DOM, cookies, or storage. Network access is CSP-restricted and should generally be routed through `callServerTool`; outbound navigation must use `app.openLink`.
When should I use a remote app versus an MCPB app?
Use a hosted Streamable HTTP server for the common remote shape. Use an MCPB local package when the widget must drive a local application or access local files, referring to the `build-mcpb` skill for packaging mechanics.
Does the source specify any cost?
No software or infrastructure pricing is stated. It does identify npm dependencies, a remote server for the remote shape, and an optional Cloudflare tunnel for local Claude testing.

More skills from this repository

All from anthropics/claude-plugins-official

Productivity & Collaboration ✓ Anthropic · Official

Project Status Artifact

Turn complex, multi-stream work into a living project status page.

Design & Frontend ✓ Anthropic · Official

Distinctive Frontend Design

Build an intentional visual identity for interfaces that should not feel templated.

Dev & Engineering ✓ Anthropic · Official

Claude Skill Template Example

A reference for understanding and creating Claude Code plugin skill templates.

Dev & Engineering ✓ Anthropic · Official

MCPB Local Server Packager

Bundle a local MCP server with its runtime into one installable file.

Dev & Engineering ✓ Anthropic · Official

Claude Code Receipts

Turn local Claude Code sessions and Git history into a shareable impact report.

Design & Frontend ✓ Anthropic · Official

Playground Builder

Turn complex visual or structural choices into a live, self-contained HTML explorer.

Dev & Engineering ✓ Anthropic · Official

MCP Server Builder

Helps developers choose the right MCP deployment, tool pattern, framework, and authentication before writing code.

Dev & Engineering ✓ Anthropic · Official

Claude Code Agent Development Guide

Design, write, and validate autonomous agents for Claude Code plugins.

Automation & Ops ✓ Anthropic · Official

Discord Channel Access

Manage Discord pairings, allowlists, and DM or group policies through a local JSON configuration.

Dev & Engineering ✓ Anthropic · Official

CLAUDE.md Improver

Audit and precisely improve CLAUDE.md files across a repository.

Dev & Engineering ✓ Anthropic · Official

Claude Code Hook Development

Design, configure, validate, and debug event-driven hooks for Claude Code plugins.

Dev & Engineering ✓ Anthropic · Official

Skill Creator

Create, evaluate, and iteratively improve Agent Skills.

Dev & Engineering ✓ Anthropic · Official

MCP Integration for Claude Plugins

Configure MCP servers in Claude Code plugins to connect external services and expose their tools.

Dev & Engineering ✓ Anthropic · Official

Claude Code Plugin Skill Development

A practical guide to designing, writing, organizing, validating, and testing skills for Claude Code plugins.

Dev & Engineering ✓ Anthropic · Official

Claude Automation Advisor

Analyze a codebase and identify the most useful Claude Code automations for the project.

Dev & Engineering ✓ Anthropic · Official

Math Olympiad Adversarial Solver

Solve and stress-test IMO, Putnam, USAMO, and AIME problems with adversarial proof verification.

Dev & Engineering ✓ Anthropic · Official

Claude Code Plugin Blueprint

A practical guide to structuring plugins, configuring manifests, and organizing Claude Code components.

Dev & Engineering ✓ Anthropic · Official

Project Plugin Settings Pattern

Store and read configurable Claude Code plugin settings in project-local Markdown files.

Automation & Ops ✓ Anthropic · Official

M5Stack Onboarding

Detect, flash, and provision M5Stack ESP32 boards with UIFlow firmware and MicroPython apps.

Automation & Ops ✓ Anthropic · Official

Discord Channel Configurator

Save a Discord bot token and lock down channel access.

Related skills