Skip to content

add mcp guide#915

Merged
wrenj merged 4 commits intomainfrom
mcpguide
Mar 20, 2026
Merged

add mcp guide#915
wrenj merged 4 commits intomainfrom
mcpguide

Conversation

@wrenj
Copy link
Collaborator

@wrenj wrenj commented Mar 19, 2026

No description provided.

@wrenj
Copy link
Collaborator Author

wrenj commented Mar 20, 2026

updated ptal

mimeType="application/json+a2ui",
text=json.dumps(a2ui_payload)
),
# Hide the raw JSON from the LLM, but show the UI to the user
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amazing!!

```json
{
"jsonrpc": "2.0",
"method": "tools/call",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this mean, the client (UI) needs to be aware that the A2UI data it is receiving is sourced from A2UI over MCP?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah something needs to translate what would be A2A messages of A2UI to MCP instead

"supportedCatalogIds": [
"https://a2ui.org/specification/v0_10/basic_catalog.json"
],
"inlineCatalogs": []
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is inlineCatalogs also supported for Option A as a per-session catalog?

If so, can we add that in the example for option A just to be clear?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets do this in another PR, we need a sample working showing it in practice. the MCP samples i look at werent completely clear how this works

}
```

## Returning A2UI Content as Embedded Resources
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How does the catalog negotiation actually take effect?

Is there any framework support that prescribes a certain behavior spec for uniformity?

The get_hello_world_ui tool call seems to simply return a payload regardless of the catalog negotiation that is expected to precede the tool call (or to be inline with the call).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets make a sample of this and check it in, and then update these docs

@self.tool()
async def action(action_payload: Dict[str, Any]) -> Dict[str, Any]:
if action_payload["name"] == "confirm_booking":
return {"response": f"Booking confirmed for {action_payload['context']['start']} to {action_payload['context']['end']}."}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there also a scenario we can add here where the response will translate to a surfaceUpdate/dataModelUpdate to update the state of the A2UI Surface?

E.g., the button will be disabled and updates its label (or simply the surface updates to a completed state).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we need to figure that part out, agree this is a TODO

@wrenj wrenj merged commit cba76fd into main Mar 20, 2026
10 checks passed
@wrenj wrenj deleted the mcpguide branch March 20, 2026 18:54
@github-project-automation github-project-automation bot moved this from Todo to Done in A2UI Mar 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants