development

Build MCP apps with typed tools, React UIs, and clean server wiring.

A builder skill for scaffolding MCP apps that combine typed tool contracts, UI resources, and single-file React frontends for ChatGPT or Claude.

I made this walkthrough to close the gap between MCP docs and a working app. The video shows how tool schemas, UI resources, and React rendering fit together in one build.

OpenClaw
Claude Code logoClaude Code
Claude CoWork
Codex logoCodex
Cursor logoCursor
Scaffold appsAdd UI outputShip MCP toolsmcp

Walkthrough

Watch the skill in action

Watch on YouTube

I made this walkthrough to close the gap between MCP docs and a working app. The video shows how tool schemas, UI resources, and React rendering fit together in one build.


How it works

MCP App Builder


How to use it

1

Download the skill package

Hit the Download button in the sidebar (desktop) or the button pinned at the bottom (mobile). You'll get a ZIP.

2

Add it to your agent

Extract and drop the folder into your agent's plugins directory. For Claude Code / OpenClaw, that's .claude/plugins/ in your project root.

3

Start prompting

Your agent now knows the skill. Describe the task in plain English — it handles the rest.


Developer & Source DetailsRaw SKILL.md and repository files

Skill Definition (SKILL.md)

The raw instruction document consumed by your AI agent.

MCP App Builder

Overview

Create MCP Apps that expose tools with visual React UIs for ChatGPT or Claude. Follow the exact dependency versions and server/UI patterns in references/mcp-app-spec.md.

Workflow

  1. Clarify requirements: what data to visualize, UI pattern (card, table, chart, dashboard, form), data source, and how many tools (start with 1-2).
  2. Design tools and UI mapping: define tool names, zod input schemas, output shape, and UI resource URIs (ui://.../app.html). Map each tool to one React entrypoint and one HTML file.
  3. Scaffold the project: start from assets/mcp-app-template/ when possible, then customize tool names, schemas, and UI. Ensure package.json uses the exact versions, plus tsconfig.json, vite.config.ts, Tailwind + PostCSS, and per-tool build scripts.
  4. Implement the server: use registerAppTool/registerAppResource, zod schemas directly, createServer() factory per request, and createMcpExpressApp with app.all("/mcp", ...).
  5. Implement the UI: use useApp + useHostStyles, parse tool results, handle loading/error/empty states, and apply safe-area insets.
  6. Build and test: run npm run build, then npm run serve, then verify via a tunnel if needed.

Hard Requirements

  • Use the exact dependency versions listed in references/mcp-app-spec.md.
  • Use registerAppTool/registerAppResource and zod schemas directly (not JSON Schema objects).
  • Create a new McpServer instance per request via createServer().
  • Use createMcpExpressApp and app.all("/mcp", ...).
  • Bundle UI into single-file HTML via vite-plugin-singlefile.
  • Use host CSS variables for theme compatibility.

References

  • references/mcp-app-spec.md (authoritative spec, patterns, code templates, gotchas)

Assets

  • assets/mcp-app-template/ (ready-to-copy MCP App skeleton with one tool + UI)

Repository Files

Browse files included in the ZIP.