Full transcript
Introduction to MCP Apps
0:07[music]
0:14>> Okay, hi everyone.
0:17We built this talk well not really
0:18yesterday we built this talk this
0:19morning and it might already be out of
0:21date. I'm Eda Solomon. I'm the creator
0:25of MCPUI,
0:26co-creator of MCP apps and maintainer.
0:30Also creator of Agent Craft if you were
0:31on the previous session.
0:34I'm Liad. I work with Eda on MCPUI,
0:37co-created the MCP app spec with Eda and
0:40I'm also co-founder of Ergo Labs which
0:42is like human agentic interfaces a
0:44company.
0:46So MCP apps are all around us. You might
0:49not even realize it but the interactive
0:51applications you see today in ChatGPT,
0:53Claude and others are actually based on
0:55MCP and the MCP app spec.
Why we need MCP Apps: Moving beyond text-based chat
1:02But why do we need MCP apps and what's
1:04MCP apps? I mean you heard David this
1:05morning talk about it a little bit.
1:08We used to text, we used to
1:10MCP tools sending text to our chat
1:12agents.
1:13But that's not ideal, right? Because
1:15chat chat is really text is really bad
1:17and actually this was one of the main
1:19blockers of companies or
1:22tools not to send their data to ChatGPT
1:24because they didn't want to be reduced
1:26to like
1:27this thing, this wall of text where you
1:28don't have identity. You don't know if
1:30if this information came from Shopify,
1:32Booking, Expedia or any other company.
1:35But what if
1:37every tool or every company could just
1:38send its own UI to the chat? So instead
1:41of us looking at
1:42this thing we can just imagine that for
1:45the parts that are relevant
1:47we can have the relevant UI, the
1:48relevant UI for Shopify, from Hugging
1:51Face, from Monday and this can can be
1:54not only presentation as this can be
1:56interactive. So we want to be able to
1:58respond to a user click on this Hugging
2:01Face widget.
2:04So we don't have to imagine it anymore.
Evolution of the MCP UI standard and partnerships
2:06So back in May last year I released
2:08MCPUI. The concept was pretty simple.
2:11There were a bunch of stuff around it
2:13but the concept was pretty simple of how
2:16do we take UI and find some way to pass
2:19it over MCP. We need some general way to
2:22do that so we can both have MCP over
2:26sorry have UI over MCP and have the
2:29communication between the UI and the
2:31host. Obviously it also had community
2:33SDKs and the general motivation was
2:37we don't need to throw away everything
2:39we know about UI and UX just to get into
2:41this new world of agents.
2:44We can simply adapt and use that and
2:47preserve our branding and identity and
2:49still be practical.
2:51And
2:52just a few months back
2:54MCPUI we partnered with Anthropic and
2:57OpenAI to really put this into the MCP
3:00standard as the first official extension
3:03called MCP apps.
3:05And as you can see here it made kind of
3:08a big splash. We had support from a
3:09bunch of hosts. Now VS Code and Cursor
3:12and Claude and ChatGPT and like
3:15Microsoft Copilot and a bunch of others
3:17already adopted it and you have these
3:19really cool interfaces built in right to
3:22your your assistance.
Industry and community adoption
3:25And going back a little bit there were
3:27early adopters for MCPUI. So these are
3:29some of the companies
3:31shout out for Hugging Face Sean if
3:33you're here that adopted MCPUI. So even
3:36a year ago Shopify was already sending
3:38MCPUI chunks of all of millions stores
3:41of Shopify online stores send MCPUI
3:43chunks. Hugging Face all of Hugging Face
3:45spaces were MCPUI widgets.
3:49And now once it's standardized we have
3:51much bigger adoption.
3:53So we have a VS Code, we have a Cursor,
3:56we have Copilot,
3:58GitHub ChatGPT are supporting MCP apps.
4:01Not only that ChatGPT are recommending
4:03MCP apps as the way to build ChatGPT
4:06apps. So it's really standardized.
4:09Obviously shout out Postman and Goose
4:11and Claude
4:13the first one that released Claude apps
4:15that actually supported MCP apps. But
4:17it's not just support from the big
4:19companies or the big hosts. We also have
4:21huge community adoption.
4:23We have people that building plugins
4:26around MCP apps, building workshops
4:28around MCP apps
4:30building all all kind of support around
4:32MCP apps. Spy just announced support in
4:34MCP apps which is amazing. It's like a
4:36terminal, right? But we have UI in the
4:37terminal right now and we have all of
4:39these advocates that that are speaking
4:42about MCP apps. There are even companies
4:43that are built around MCP apps to help
4:46other businesses build those apps.
4:48We have an official MCP apps repo with
4:52with Anthropic and OpenAI. There's a an
4:54amazing community engagement. We
4:56recommend for you to check it out. We
4:57have a
4:58a work group public work group meetings
5:01and we're meeting tri-weekly once every
5:033 weeks just to push the standard
5:05forward because as we can see it's going
5:06to be the global standard for UI inside
5:09chat apps. And we're going to talk a
5:11little bit about the concepts behind
5:13MCPUI.
Core concepts: Passing UI over MCP
5:14Yeah, so let's talk about the core
5:15concept. So the first and obvious one is
5:18how do we even pass UI over MCP?
5:20Um
5:22so in the old world of a few months back
5:25when we wanted to do whatever let's say
5:27we wanted to create the best playlist
5:29ever we would type something into the
5:31chat and it would send out a tool call
5:34to our MCP server.
5:35So far so good. Um what we would get
5:38back in response
5:40would be text
5:42and as you know text is sub-optimal. But
5:45if we are using MCP apps what we can do
5:48is instead return a resource. So we can
5:51return this actual HTML back to the
5:54host. The host supports MCP apps so you
5:56can take that HTML and transform it into
5:59an interactive application.
6:01And when we say interactive we mean
6:03interactive. So this is not just
6:04presentational. MCP apps also
6:06standardize the way that this UI can
6:09talk to the user and to its back end
6:11because just imagine if the user wants
6:13to favorite this song then the
6:16sub-optimal thing that would happen is
6:18that for this UI to speak to Spotify's
6:20back end and and favorite this song and
6:23then later when the user asks Claude
6:25remind me which song I favorited Claude
6:27wouldn't know because the UI spoke
6:28directly to the back end. But MCP app
6:30standardizes this message passing so
6:33that every UI chunk sends message back
6:35to the host. The host gets this message
6:37message in this case like a tool call
6:39and the host decides what to do. In this
6:41case it decides to actually call the
6:42server tool but the control is in the
6:45hands of the host and everything stays
6:47in context.
6:48Okay, so seeing is believing. Let's see
Practical demonstration (PostHog and Claude)
6:51a quick example of what that looks like.
6:53So this is Claude like actual Claude.
6:56And let's say that I want to do
6:57something like analyze my funnel. So I
7:00type that in in the old world it would
7:03go out to let's say PostHog and I would
7:06get this textual response which is
7:08accurate
7:09but it doesn't really help me understand
7:10what's going on. I have to read this
7:11whole thing now and kind of try and see
7:14what's the deal.
7:15But with MCP apps instead of doing this
7:18I can just say show me.
7:20And now
7:23Okay, the clicker is not yet up to par
7:25but now what we'll have is this nice UI
7:29visualization actually created by
7:31PostHog. So they control the identity,
7:33the experience. It's actually their
7:35component that you would see in the
7:37website.
7:38And now I have like a really cool way to
7:41just see the funnel in one glance.
7:44That's not all. I mean the MCP app isn't
7:46just UI generated by the server.
7:49There are also really cool innovations
7:52from Anthropic and other companies
7:55to do generative UI on top of MCP apps
7:57or even first party UI in general.
8:00So for instance this Claude feature
8:02says
8:03let's say that I don't know what a
8:05funnel is which is
8:06reasonable.
8:07I can ask what a funnel is and instead
8:09again getting that long textual answer
8:12what would happen is that Claude would
8:14be able to generate this UI for me
8:17explain exactly what I need or create
8:19some UI that I need to do some action
8:22and present it to me in a way that is
8:24very digestible.
8:25This is obviously applicable to a bunch
8:27of other stuff and you'll see it in
8:28other hosts as well.
8:32So let's look at
8:33like another cool thing is here is that
8:35this is not just presentational. Like we
8:38said it's interactive so I can just
8:39click on it and it would give me a
8:42follow-up on the specific step of the
8:44funnel
8:45that I have a questions about. So you
8:46can imagine how this goes into into a
8:49bunch of other directions when you want
8:51to do interactive exploration.
Technical architecture: How it works
8:54So how does it work
8:56in general?
8:57So
8:59let's go over the stages.
9:01We went to the host and we prompted
9:04something. We asked for
9:06funnel data. What happened is that it
9:09sent out a tool call to our MCP server.
9:11And again instead of just returning text
9:14that tool was actually pointing to a
9:17resource.
9:18That resource was our UI.
9:21So if you look at the
9:24code for it then it's super simple like
9:26you just register a resource and you
9:28just have it. So return that resource
9:31back to the host.
9:32The host because it also supports MCP
9:35apps can take that
9:37transform it, put it if you see like
9:39look at just code wise if you want to
9:41build a host it just
9:42like
9:43react component that accepts that
9:45resource and also this callback which is
9:48the way that we handle messaging between
9:50the UI and the host.
9:52So you take that and you render it
9:53inside a sandbox so it's secure.
9:56Like we said it's not presentational, so
9:58we also click on it. And once you click,
10:01what happens is that there's a bunch of
10:03events going back from the UI, from this
10:05view,
10:07all the way back to the model.
10:09So, it can actually take out to do other
10:13tool calls or even follow up messages on
10:16your behalf or fetch additional
10:17resources,
10:19really completing this end-to-end
10:20bidirectional flow.
A new era of web interaction and user experience
10:23So, when we look at that, when we look
10:25at this flow, when we look at this
10:26architecture, it's not just technical
10:28change. It's not not just a technology
10:30that's changing. It's also how we
10:32perceive the web. Because this is
10:34ushering a new web, a web where
10:37we don't need websites. We don't need
10:40all of those tabs just to organize
10:43an anniversary. We don't need to
10:45familiarize familiarize ourselves with
10:48bunch of different UIs.
10:51We don't need to
10:52force ourselves to pass our intents to
10:55dashboards of companies where 90% of
10:57this UI is not relevant for an agent. If
11:00I have a personal assistant, I don't
11:01need most of it. I can just take this
11:04and I can just decompose it to atoms and
11:06let my agent build them for me, right?
11:10Because I I have my assistant I convey
11:11my intent to. So, for example, my agent,
11:14my proactive assistant can say, "Yeah, I
11:16see that you have an important
11:17anniversary coming." And instead of
11:18Google just sending the data, Google can
11:21actually send a chunk right of the
11:22Google calendar. And now, this is a
11:24win-win-win because for Google, it's
11:26amazing. It gets to keep its identity.
11:29For me, it's good because I know I know
11:30this interface. I I recognize that it's
11:32Google.
11:33But it's good for the host as well
11:35because the host doesn't need to render
11:36that.
11:37We have domain experts. We have
11:39companies that spend decades in
11:41perfecting user journeys and we can't
11:43expect Claude or ChatGPT or any host to
11:46automatically generate all those UIs.
11:48And if I continue and I ask something
11:50for Amazon, so instead of Amazon just
11:52sending me the data of the product and
11:54that's we reducing itself to be just a
11:56database, it can just send this chunk of
11:58Amazon. And I look at it and say, "Oh,
11:59it's Amazon. Okay, I know."
12:01And then, I can complete the entire
12:03planning of my anniversary,
12:07the entire planning in just one
12:09assistant chat, right? And you can see
12:11that it pulled just the relevant parts
12:13of it because it pulled
12:15the venue from Booking, but it knows me.
12:17It knows that I prefer something that's
12:18close to nature and not in the city. So,
12:20it also knew to pull the the map from
12:22Booking. That's because the assistant
12:23knew me. Booking doesn't know me that
12:25well, but Booking knows how to how to
12:27book a venue. So, this is real synergy
12:29between those. Um
12:31and we have to think about this new
Interaction mindset and message spectrums
12:33interaction mindset. Why? Because we
12:35have to remember that in this flow,
12:37the apps, the services, the tools, they
12:40no longer own my journey in the in the
12:42platform, right? If I click something in
12:44Booking, it doesn't go to Booking's
12:46backend. It goes to it goes to the host
12:48like we said. So,
12:51what we did with MCP apps is that every
12:53click, every interaction actually sends
12:55this kind of like message back to the
12:57host.
12:58Um and like we said, it this is breaking
13:01the model for for all of the for all the
13:04companies. So, this is like a new
13:05philosophy.
13:06But the messages can can be put on a
13:09spectrum.
13:10So, this spectrum represents how much
13:12control the UI wants for itself and how
13:15much control it gives to the host. So,
13:16for example, notification, that's the
13:19highest level of control the UI has. It
13:21just notifies the host that something
13:22happened. For example, if I increase the
13:24number of items in my cart, it doesn't
13:26need to to go to the host. It goes back
13:28to Shopify. But just notifies the host
13:29that something happened. A tool call is
13:32the UI telling the host call a tool. And
13:34prompt, that's like the the UI just
13:36releases all control and say tells to
13:38the host, "Just run this prompt and see
13:41what happens."
13:42Um so, MCP apps really standardizes this
13:45new software flow and that's something
13:47that we need to remember.
13:48Perhaps in 2 years, we won't have
13:50browsers as as we know them. We won't
13:52have websites as we know them. We'll
13:53have a personal assistant that accepts
13:56only small chunks of UI and this will
13:58replace our our web journey.
14:01Um 2026 is going to be the year that
14:04we're going to standardize
14:06MCP apps as a global standard for UI.
14:08And um
14:09Yeah, but the spec is still evolving. I
14:11mean, there are a bunch of stuff
14:12happening. Just in those last, I think 2
14:14months, we shipped all of those or
14:17almost all of those based on community
14:19feedback, based on community work done
14:21by the work group, which you can join.
14:23So, you're encouraged to do this.
14:25There's the official SDK, XApps. You can
14:28just use that to build your
14:29applications. It's very simple. There
14:31are built-in skills. So, you just let
14:33your coding agent do it for you. You
14:35don't actually need to code anything.
14:36God forbid.
14:37So, you have this and then,
14:40it's important to remember that the
14:41reason to use this SDK is that it's just
14:45always compliant with the spec. Like we
14:47always update both.
14:48So, feel free to use it.
14:51You can see that just the issues and
14:52stuff that people open on it. So, please
14:54feel free to do it.
14:55So, what's next for MCP apps? Obviously,
Future outlook: Reusable views and model-UI interaction
14:58there are a bunch of stuff in the
15:00pipeline. But just to give you like a
15:02taste.
15:03So, we have reusable views. The idea
15:05here is that today, for simplicity,
15:08whenever you render an app, we actually
15:10render a new one. So, let's say that
15:12you're working with the same app
15:14multiple times. If you keep re-rendering
15:17it and you have some heavy applications.
15:19So, for example, Autodesk had this
15:21problem.
15:22It just takes a really long time and
15:24your experience will be bad. So, we are
15:26working on ways to solve it. The first
15:29one is just why can't we just reference
15:31that same view and push data into it?
15:34But the second one is actually to take
15:37this and flip the script.
15:40So, another thing that we've been
15:42working on is interactions not for the
15:45user to interact with the with the app
15:47and then the app sends it to the model,
15:48which we just saw.
15:49But what if we want the model to be able
15:51to interact with the view? We want
15:53Claude to be able to click on buttons or
15:55to fill forms or do anything inside the
15:58UI. So, today we have solutions like
16:00WebMCP and things like that. We are
16:02working on a standardized way. So, when
16:04the user interacts with the model, the
16:05model the app can actually expose tools
16:07for the model to interact with it, thus
16:09closing this loop. Um and you can you
16:12can check out the PR. It's still an open
16:13PR, but that's something that we work on
16:15in the in the committee.
16:16And the most important thing is that MCP
Spectrum of UI generation: Predefined vs. Generative
16:19apps supports all ways of all the ways
16:23of generating UI. Because that's a
16:25question that we always get asked. What
16:27about generative UI? So, if we put it on
16:30a spectrum, then we have the predefined
16:31UI. That's like the classic MCP app.
16:33That's like Airbnb building its own UI,
16:35sending it to Claude or to ChatGPT.
16:36That's predefined. That's a black box.
16:38That's good for 8% of the cases. But we
16:41have things that are a little bit more
16:43structured like declarative UI. Like if
16:44you know JSON render or
16:47things like that where the app can just
16:50declare the the structure of the UI, but
16:52the components are being rendered by the
16:54host. So, the host and the app are
16:56sharing the UI functionality and
16:59visibility. That's good for hosts that
17:01want to control the look and feel of the
17:04apps. For example, just imagine Claude
17:06probably doesn't want to have a Booking
17:07UI then an Airbnb UI then an Expedia UI
17:10in the same chat flow, right? So, this
17:11is pretty pretty good middle ground. And
17:14in the other hand, you have the fully
17:15generative UI, which is what
17:18Claude Anthropic released a few weeks
17:20ago
17:21where the model just generates the UI
17:23out of thin air. Now,
17:25the nice thing is that MCP apps is
17:27really agnostic to how you generate the
17:29UI. MCP apps doesn't assume that Airbnb
17:32created created the UI.
17:34Any any part of this process can create
17:36the UI and the feature that Claude
17:38released, which is the generative UI on
17:40the fly, actually uses MCP apps under
17:42the hood, right? So, it's a generative
17:45UI that's being streamed into an MCP app
17:47and then MCP apps closes that closes
17:49that loop. So, it's good for third-party
17:52UI, which is the black box, but also
17:53first-party UI. So, that's
17:55that's something that we're working on
17:57standardizing. Um we're doing a lot of
18:00work to do interoperability with other
18:02UI protocols like A2UI, which is the
18:05generative UI protocol by Google, WebMCP
18:07like we said, and we just want to build
18:10a unified standard for UI in chat apps.
18:13Um yeah, and that's a like a cool
18:16summary about MCP apps. If you build an
18:18MCP app, it runs everywhere. LibreChat
18:19is an MCP MCP app client. ChatGPT is a
18:23ChatGPT app client, but the same
18:25application works for the same codebase
18:27works for every
18:29every host.
18:33Cool.
18:34So,
18:36if you think about it, this isn't just
18:38some tech, right? This isn't some
18:39protocol. This is a new way to
18:41distribute applications.
18:43>> [clears throat]
18:43>> So, if you look at just a few months
18:45back, Sam Altman said, I think it was
18:47October, that 800 million people are
18:49using ChatGPT on a weekly basis. That's
18:5210% of the world's population.
18:54It's insane. The internet took like 13
18:57years to get to that number of users.
18:59And
19:01now, it's not even 800 million. It's a
19:03billion. And it's not just ChatGPT. It's
19:05also Claude and VS Code.
19:07You have a potential audience that is at
19:09least 160 times the number of users that
19:12iPhone had when the App Store launched.
19:15So, how do you get started? There are
19:18two main ways. As a server, like if
19:20you're developing an app. So, like I
19:22said, you go to XApps repo. There's a
19:24key QR code if you want to do it
19:25quickly. You have the skills. Just use
19:28that.
19:29The other way is in details. The other
19:33way is that if you're a host, so if
19:35you're building an application that
19:36actually hosts application, you can just
19:40take MCP UIs SDK, which is the
19:42recommended client SDK. It's also just
19:44fully compliant with the spec. You just
19:46take that React component and you're
19:47done. It just supports apps out of the
19:49box and then get hundreds of apps from
19:52booking and other providers out of the
19:54box.
19:55Um so just just to emphasize
19:59there was a slide about skills. So it's
20:00really easy to create an MCP app. Just
20:02if you visit the site we just pass
20:04through it but it's just a skill. You
20:05just push it to cloud code and you
20:06generate an MCP app out of thin air. If
20:09you want to get involved in the spec
20:10itself in how MCP apps are going to
20:13operate and if you want to help build
20:15the future of UI in in agents
20:18then obviously visit the official MCP
20:20apps repo that's X apps. Open an issue,
20:23open a PR, participate in the
20:24discussion. We also have the official
20:27discord for the MCP apps committee where
20:30we do surveys and we interact with the
20:32with the community and with other hosts
20:34to to decide on things that relate to
20:36MCP apps. And there's the community
20:38discord which is I think the coolest
20:39place to be because you have all of the
20:40users of MCP apps be it
20:43people that build servers, companies
20:45that build hosts that just talk to each
20:47other, share tips,
20:49troubleshooting,
20:50asking for features.
20:52That's the place to be if you're
20:52interested in MCP apps.
20:55Uh so we said some scary stuff along the
20:57way
20:58like the web is dying and there's like
21:00all the websites are meaningless at the
21:02point at this point but
21:03I kind of hope that you don't look at
21:05this as a threat but more as an
21:07opportunity like basically a once in a
21:1020 years opportunity to think about your
21:12apps again and think what is the core
21:15user experience that we're looking to
21:17get and imagine it not as a monolithic
21:20single app where people go to but
21:21actually a part of a new web of
21:23applications, these chunks of UI that
21:26allow you to communicate between each
21:27other using a smart model in between.
21:30That's that's pretty insane.
21:32And with MCP apps even this early in the
21:35ecosystem in this early in how agentic
21:37apps work we already have
21:39standardization and they all work the
21:41same. You can write your app once and it
21:43will run everywhere.
21:45So what does the future look like?
21:48We're not yet at Jarvis
21:50but with MCP in general and MCP apps in
21:52particular you can bring experiences
21:54that were impossible just a few months
21:56ago to every host in the world including
21:59your own.
22:00So thank you. Thank you very much.
22:03>> [applause]
22:09[music]