A dashboard panel set into a plain wooden surface, the way an interactive interface drops into an otherwise text-only conversation

MCP Apps: Interactive UIs Inside Your AI Chat

MCP Apps lets an MCP server hand back a real interface instead of a wall of text. A chart you can hover, a form you can fill, a multi-step flow you can click through, rendered inline in the chat rather than described in prose. It shipped on January 26, 2026 as the first official extension to the Model Context Protocol, and it is the rare piece of AI infrastructure that Anthropic and OpenAI built together.

If you’re new to the protocol underneath, What Is MCP? is the one-paragraph version and MCP Servers is the running list of apps that have one. This page covers the extension: who wrote it, how the rendering actually works, what it deliberately left out, and the thing a nice interface still doesn’t fix.

Two rivals and a community project

The extension is formally SEP-1865. It was proposed on November 21, 2025 and authored jointly by maintainers from Anthropic, OpenAI, and the MCP-UI project, whose creators Ido Salomon and Liad Yosef had already solved much of the problem in the open. OpenAI’s Apps SDK covered the same ground on its own side.

Rather than let three near-identical approaches harden into three incompatible ones, they merged. MCP-UI’s community work and the Apps SDK’s production experience became one specification that shipped as an official extension on January 26, 2026, then folded into the broader extensions framework locked down in the July 28, 2026 spec revision.

Claude on web and desktop supported it at launch, alongside VS Code Insiders and Goose, with ChatGPT following the same week. Day-one server support came from Amplitude, Asana, Box, Canva, Clay, Figma, Hex, monday.com, Salesforce, and Slack.

How a server ships an interface

Four moving parts, none of them novel on their own:

UI resources live behind a ui:// scheme. A server registers its interface templates as resources with a ui:// URI prefix, for example ui://charts/bar-chart. Because they’re declared as resources rather than smuggled inside a tool response, a host can prefetch and inspect them before anything executes. That’s a performance win and a security win at the same time.

Tools point at them through metadata. A tool links itself to a template with a metadata field: "ui/resourceUri": "ui://charts/bar-chart". The tool computes; the resource presents. Neither has to know much about the other.

Communication reuses MCP’s own protocol. The rendered UI talks to the host using the existing MCP JSON-RPC base protocol over postMessage. No bespoke message format was invented for this, which means existing SDKs work and every exchange is auditable.

Everything renders in a sandboxed iframe with restricted permissions. Universal browser support, and a security model developers have understood for fifteen years.

What it doesn’t do yet

The initial specification supports only text/html content. External URLs, remote DOM, and native widgets were explicitly deferred to future iterations rather than left ambiguous.

That’s a narrower surface than “apps” implies, and deliberately so. Every deferred item is one where a host would have to trust content it can’t inspect ahead of time, and the ui:// prefetch model exists precisely so hosts don’t have to.

An interface is not an agent

Here is the part worth being precise about, because the name invites the wrong conclusion.

MCP Apps changes how a server’s output is presented. It does not change when a server runs. Every point from the core protocol’s limits survives the extension intact:

MCP has no trigger mechanism and no scheduler. Its own Triggers and Events working group opens by conceding that clients learn about server-side changes by polling, and that work is still listed as on the horizon rather than shipped.

So an MCP App can render a beautiful live dashboard of your pipeline, inside a chat window you opened, in response to a question you typed. Close the tab and nothing is watching your pipeline. There’s still no “when a deal moves to closed-won, do these four things.” A form you can fill in is not a workflow that fills itself in.

The same holds across every client. Claude connectors, ChatGPT’s apps, and Grok’s all now render richer output than they did a year ago, and all of them still wait to be asked.

Where the trigger comes from instead

That gap is what Carly is built around. Carly connects natively to roughly 260 apps, and to anything else with a public API through your own key on the integrations dashboard. The difference isn’t the interface, it’s what starts the work:

  • When a new deal is marked won in your CRM, create the onboarding doc, post it to the right Slack channel, and schedule the kickoff call, the moment it happens.
  • Every Monday at 8am, pull last week’s numbers from Analytics and Stripe into a Sheet and email the summary.
  • When a support ticket sits unanswered for four hours, escalate it, notify the owner, and log the breach.

None of those need anyone to have a chat window open. Carly is free for Zapier-style workflows, with AI agents from $35/month.

MCP Apps is a genuine improvement to what an AI client can show you. Carly is what runs while you’re not looking at it.

FAQ

Is MCP Apps the same thing as MCP-UI? Not anymore. MCP-UI was the community project that pioneered the approach, and its maintainers co-authored the official extension. MCP Apps is the standardized successor, so new work should target the extension rather than the original library.

Do I need MCP Apps to build an MCP server? No. It’s an optional extension. A server that returns text and structured data works exactly as it always did, and most servers on the MCP server list don’t implement UI at all.

Which clients render MCP Apps? Claude on web and desktop shipped support at launch, with VS Code Insiders and Goose the same day and ChatGPT within the week. Support has continued to spread across MCP-compatible clients since, so check the client you actually use rather than assuming.

Can an MCP App take an action, or only display things? It can do both, because the UI is attached to tools that already have whatever read and write scopes you granted. What it can’t do is start on its own. Every invocation traces back to a request inside a live conversation.

Is this how I get a chart or dashboard into Claude? If the server you’re connecting implements the extension, yes, and it renders inline. If it doesn’t, you get text and you’d need to build a server that does. How to Install an MCP Server covers the connection side either way.

Ready to automate your busywork?

Carly schedules, researches, and briefs you—so you can focus on what matters.

See what people say

"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.

Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.

On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."

Gus Ibrahim, Founder & Director, IHR