A2UI MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| a2ui_create_surfaceA | Create a new A2UI surface (UI container) for rendering components. A surface is the top-level container for A2UI components. You must create a surface before adding components to it. Args:
Returns: JSON message confirming surface creation Example: Create a surface for a booking form: { "surface_id": "booking_form" } |
| a2ui_update_componentsA | Add or update components on an A2UI surface. Components are defined as a flat list with ID references. The component tree is built using the 'children' property. IMPORTANT: You must include a component with id='root' as the entry point. Available components:
Example - Simple form: { "surface_id": "my_form", "components": [ { "id": "root", "component": "Column", "children": ["title", "name_field", "submit_btn"] }, { "id": "title", "component": "Text", "text": "Contact Form", "style": { "fontSize": 24, "fontWeight": "bold" } }, { "id": "name_field", "component": "TextField", "label": "Your Name", "placeholder": "Enter name..." }, { "id": "submit_btn", "component": "Button", "label": "Submit", "variant": "primary" } ] } |
| a2ui_update_dataA | Update the data model of an A2UI surface. The data model provides dynamic values that components can bind to using dataBinding. Operations:
Example: { "surface_id": "booking_form", "operation": "merge", "data": { "userName": "John Doe", "selectedDate": "2025-01-15", "guestCount": 4 } } |
| a2ui_previewA | Open a live preview of all A2UI surfaces in the browser. The preview auto-updates when you make changes using other a2ui_* tools. Returns the preview URL that you can share or open manually. |
| a2ui_clearA | Clear all A2UI surfaces and reset the state. |
| a2ui_get_stateA | Get the current state of all A2UI surfaces and their components. |
| a2ui_poll_eventsA | Poll for UI events from the browser (button clicks, text input, etc.). Events are consumed when polled (unless peek=true). Use this to react to user interactions. Event types:
Example response: [ { "eventId": "abc-123", "surfaceId": "my_form", "componentId": "submit_btn", "eventType": "tap", "timestamp": 1234567890, "payload": { "action": "submit" } } ] To enable events on components, set onTap=true (Button) or onChange=true (TextField). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
Each tool serves a clearly distinct purpose: state inspection, surface creation, component updates, data model updates, preview, reset, and event polling. There is no meaningful overlap or ambiguity between tool responsibilities.
All tools share the a2ui_ prefix and most follow a verb_noun pattern such as create_surface, update_components, and poll_events. The exceptions are preview and clear, which lack a noun target, creating a minor inconsistency.
Seven tools is a well-scoped size for a UI surface management server. Each tool addresses a necessary part of the workflow without redundancy or unnecessary expansion.
The toolset covers the main surface lifecycle well: create, read, update, preview, reset, and handle events. The main gap is the lack of targeted removal for individual surfaces or components, though a2ui_clear provides a blunt workaround.