← Back to archive

Repo of the Day

MCP-UI-Org/mcp-ui

Published: Sep 4, 2025

Open repository ↗

SDK for UI over MCP. Create next-gen UI experiences!

Summary

mcp-ui is an SDK that implements the MCP Apps standard for delivering interactive user interfaces over the Model Context Protocol (MCP). It provides server libraries that produce HTML UI resources and client libraries that render them, with implementations in TypeScript, Python, and Ruby.

What it is useful for

The SDK is useful when an MCP server needs to return more than text, attaching a rendered HTML panel (a widget, form, dashboard, or interactive component) to a tool's response. Hosts fetch the resource, render it inside a sandboxed iframe, and let the UI send events back to the agent for further tool calls, prompts, or notifications. Engineers building MCP tools for chat clients like Claude, Goose, LibreChat, or Postman can use it to give their tools a real frontend surface. The client also ships as a Web Component, so non-React hosts can embed the renderer. Platform adapters, such as the Apps SDK adapter for ChatGPT, translate the postMessage protocol to host-specific APIs.

How engineers can use it

Install the TypeScript packages with npm install @mcp-ui/server @mcp-ui/client (or pnpm/yarn), the Python SDK with pip install mcp-ui-server, or the Ruby gem with gem install mcp_ui_server. On the server, call createUIResource to build a resource from inline HTML, an external URL, or a Remote-DOM script, register it with registerAppResource, and link it to a tool by setting _meta.ui.resourceUri on the registerAppTool call. On the client, render the UI with AppRenderer (for MCP Apps hosts) or UIResourceRenderer (for legacy hosts that embed resources in tool responses), wiring up onOpenLink and onMessage handlers. The README points to full walkthroughs at mcpui.dev for TypeScript, Python, and Ruby, plus example servers under examples/.

Documented limitations: the supported-hosts table shows partial or no support for UI actions on several legacy hosts (Postman, Goose, LibreChat, Smithery, fast-agent), ChatGPT requires a separate adapter, and the roadmap leaves component libraries, additional frontend frameworks, a declarative UI content type, and generative UI unchecked.