So everything goes through the host. So seeing is believing. So let's see a quick example of what that actually looks like. Let's say that I'm a product manager and I want to understand what's the status of my funnel to understand how users use it. Again, in the old world, I would ask a question, Claude would reach out to my MCP server, let's say it's PostHog. PostHog would return this textual response showing the status of my funnel, which is awesome, but it's factually correct, but it doesn't really help me. I mean, I can look at this and it doesn't mean anything. I can't really quickly understand what's going on. Luckily, because both PostHog and Claude support MCP apps, instead of doing that, I can just say, show me. And now, instead of getting this wall of text, I would get an interactive component, which was actually designed and built by PostHog. It looks like and feels like PostHog with their own identity and experience, and I can quickly understand what's going on.
MCP apps isn't just presentational, as we just discussed, and it's also not only static. It doesn't have to be something that PostHog generates once and then sends it over to me. It can actually be used for generative UI. So, for example, in Claude, you have the Imagine feature, which is really cool. A model can actually generate UI on the fly to explain things or drive the conversation forward. So, let's say that I'm a product manager, but I don't really know what a funnel is. So, I can ask what it is, and now, instead of, again, getting this block of text explaining it, I would get this interactive component, which wasn't prebuilt by anyone. It is actually built by the model and streamed in real-time into an MCP app and rendered to me. And not only is it really cool that it actually shows me the data in a way that I can consume, it's also fully interactive, as we mentioned.
What does this interaction even mean? It means that I can drive the conversation forward with clicks. I don't really have to rely on prompting something or inventing something that the model might understand or might not. So, if we took this example, and this is, again, totally generated, I can just click on this part of the funnel, and I would get an explanation just for that part. And I think that really cool part is that the model is actually aware of I can drive myself using this UI, so it would put this functionality into the UI. So, how does it actually work? There's a bunch of stuff going on here. So, if you look at the complete flow, the first part was prompting the model and saying, I want to understand the funnel. That resulted in a tool call to our MCP server, and again, because the MCP server supports MCP apps, it actually takes that, and instead of returning text, it returns a UI resource just through this identifier. If you look at the SDK, it's just a simple registration of a tool and resource. Super simple, this is the official SDK. I can take that, return it over the wire, back to the host.
Comments