A2UI as MCP Extension #1676
Replies: 6 comments 11 replies
-
|
There is a real debate to open on terminology with MCP apps. What do we actually want to deliver, is Apps dealing with UI only or more …. A large field for discussions. |
Beta Was this translation helpful? Give feedback.
-
|
Would it make sense to add this to the MCP Apps extension instead or creating a new one? |
Beta Was this translation helpful? Give feedback.
-
|
Whether we're talking about MCP Apps in A2UI or A2UI in MCP Apps, combining the two will inevitably put more load on LLMs, resulting in slower response times and a greater risk of errors. But I haven't seen any clear advantages this integration offers over MCP Apps on its own. So what's the point of integrating them in the first place? |
Beta Was this translation helpful? Give feedback.
-
|
We think this is a great idea! One question on the output contract between Agent and end-user:
|
Beta Was this translation helpful? Give feedback.
-
I see two paths, each with trade-offs:
In Path 1, the client agent is a dumb pipe. It speaks to the 3p server over MCP, which returns A2UI resources directly via When user interactions generate As far as I can tell, this is the flow: sequenceDiagram
autonumber
actor User
participant UI as 🎨 Client UI / Renderer
participant Host as 🤖 Host AI Agent
box rgb(30, 41, 59) Third-Party Stack
participant 3PSrv as 🌐 3P MCP Server
participant 3PAgent as 🧠 3P Specialist Agent
end
User->>UI: Interacts with Widget (e.g., Clicks Button)
UI->>Host: userAction Payload (Pure A2UI JSON)
Host->>3PSrv: tools/call (arguments: { raw_a2ui_payload })
3PSrv->>3PAgent: Forward userAction to Agent Engine
Note over 3PAgent: 3P Agent processes logic & updates state.<br/>Generates a brand new UI state layout.
3PAgent-->>3PSrv: Returns new UI layout (Pure A2UI JSON)
3PSrv-->>Host: response (EmbeddedResource: application/a2ui+json)
Host-->>UI: updateComponents Payload (Pure A2UI JSON)
UI->>User: Renders freshly mutated UI view
Assuming I have this right, initially I found it pretty odd. I want to walk through why, and then describe a few things that changed my mind. Why if feels wrongFirst, the two things that "speak A2UI" aren't talking to each other. They're mediated by an MCP middle-man which is just a "transport" for opaque A2UI payloads. I found myself wondering if the MCP protocol is adding any value to A2UI here, if it's not integrating semantically with it any more than, say, REST would? Second, the two agents aren't talking to each other either, which is exactly what A2A is designed for! It smells wrong that the two agents which can talk over A2A, especially since A2UI officially supports A2A as a transport, are bypassing that and using MCP as a REST middle-man basically. There's nothing inherently bad here, but it felt inelegant. I wasn't sure what making MCP an official "transport" of A2UI, or making MCP be A2UI-aware, buys us besides another way to shuttle opaque A2UI payloads. It seemed to miss the opportunity to make MCP Apps and A2UI—two major agentic UI paradigms—to play well together. What does A2UI 🤝 MCP Apps integration actually look like?As mentioned, I was expecting to find a meaningful semantic integration between MCP Apps and A2UI that I felt Path 1 precluded, and that we could achieve with Path 2. We've talked about this in the MCP Apps WG calls, and I've spoken with @liady about this offline a bunch too, but the more I think about it the more skeptical I am:
Benefits of A2UI-over-MCP AppsWith all of that said, I think the difference between Path 1 and Path 2 is pretty minimal. If MCP doesn't semantically engage with A2UI content, then what's up for grabs is basically a namespace question, a little reuse, and some insurance:
|
Beta Was this translation helpful? Give feedback.
-
|
Hi - I also echo the feeling that in principle A2UI over MCP doesn't feel right. Ultimately it feels like it's a question of landing on the best distribution channels for A2X protocols. Today if you have an opensource A2UI use case and you want to distribute it, MCP feels like the place to land... so ultimately feels like the right call has been made for the longevity/relevance of A2UI I think A2UI absolutely deserves to be a first class protocol of the future - but the more I test my a2uicatalog with MCP, the more I start to see some considerations that surface. I am experimenting with the performance of different models with my own catalog and noticed Haiku struggling with some of my catalog atoms, because it surfaced the fact that some degree of judgement was needed - eg when to split an apps script page over 2 pages due to character limits. This initially pushed me down the path of appreciating that the MCP Pipe actually allowed for some supra catalogue enforcement and to some degree gating, a pre catalogue if you like. However this actually helped me realise that using a model such as Haiku or lower is actually a good "grey/not declarative enough" detector. The solution I am working through is actually to add prose to any atoms where Haiku could not figure it out but Sonnet could.... What this did surface for me is also how the MCP dimension can act as a tie breaker or rules guardian in the event of conflicting catalogue/intra catalogue rules. Concrete example of the tie-breaker point, since @binioter-z is right to ask for one rather than theory: I hit this directly while building out my MCP layer. My top-level server instructions told the calling model to paginate content above ~2000 characters, but a specific tool's own description (more specific, more accurate) said the real limit was closer to ~8000. Nothing caught the contradiction until a live Haiku test read both and followed the wrong, more general one - producing a result that was more fragmented than it needed to be. Once I noticed it, I wrote a small mechanical check - not another model, just a script verifying that every size-related number quoted anywhere across the server's instructions and tool descriptions traces back to the same canonical source. It immediately caught a second, previously-unnoticed inconsistency in an unrelated tool's own description that I'd missed by eye. That's the tie-breaker/rules-guardian role in practice: the MCP layer isn't just relaying catalogue content to the model, it's positioned to catch and resolve exactly this class of conflict - session-scope vs tool-scope within the MCP layer , today , catalogue vs catalogue as this scales - deterministically, before the calling model has to guess which rule wins. Finally on the MCP Apps aspect, my two cents @domfarolino -- I keep landing on DVD vs Netflix as the clean analogy. MCP Apps (one complete, predeclared HTML resource) and Meta's newly open-sourced Astryx (a React component library an agent uses to write finished, compiled code) are both, via different mechanisms, on the "composed product" side - you get a complete thing, once. A2UI is on the "streamed" side - progressive, server-driven, updated live, no code compiled or single artifact shipped. Both sides are legitimate, useful, for different jobs. I don't think A2UI belongs inside MCP Apps any more than Netflix belongs inside a DVD case - but that's not an argument against MCP Apps, which solves a real problem (interactive dashboards/forms rendered directly in chat) that A2UI isn't trying to solve. |
Beta Was this translation helpful? Give feedback.


Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
We are considering working on a MCP Extension for A2UI.
Would this be of interest to you? Give us an emoji 👍 if this matters to you.
Beta Was this translation helpful? Give feedback.
All reactions