
01 · THE QUESTION
Protocol이 늘어날 때 무엇을 기준으로 구분할까
MCP, A2A, AG-UI, A2UI를 한 줄에 놓고 기능을 외우면 층위가 금방 섞입니다. 여기에 JSON-RPC, SSE, stdio, WebSocket, JSON Schema까지 더하면 모두 비슷한 통신 기술처럼 보입니다.
먼저 이름이 아니라 actor boundary를 봅니다. 누가 누구와 관계를 맺고, 그 사이에서 어떤 의미를 표준화하는지 물으면 protocol의 자리가 드러납니다.
02 · LAYERS
Actor protocol과 transport를 분리합니다
| 층위 | 예시 | 답하는 질문 |
|---|---|---|
| Actor / semantic protocol | MCP, A2A, AG-UI, ACP | 누가 누구와 무엇을 주고받는가? |
| Declarative specification | A2UI | UI structure, data, action을 어떻게 표현하는가? |
| Message envelope | JSON-RPC | Request, response, notification을 어떤 모양으로 감싸는가? |
| Transport / streaming | stdio, HTTP, SSE, WebSocket | Byte와 event를 어떻게 전달하는가? |
| Validation / description | JSON Schema, OpenAPI | Payload와 HTTP API를 어떻게 기술하는가? |
SSE를 쓴다고 AG-UI가 되는 것이 아니고, JSON-RPC를 쓴다고 MCP가 되는 것도 아닙니다. Lower-level mechanics가 상위 protocol의 semantics를 운반합니다.
03 · INVENTORY
한 장으로 보는 Agent protocol inventory
| Protocol | Actor boundary | 핵심 단위 |
|---|---|---|
| MCP | Agent host/client ↔ capability server | Tools, resources, prompts, lifecycle |
| A2A | Independent agent ↔ independent agent | Agent card, task, message, artifact |
| AG-UI | Agent runtime ↔ user-facing app | Run, text, tool, state event |
| A2UI | Agent/server → client renderer | Surface, component catalog, data, action |
| Agent Client Protocol | Coding agent ↔ IDE/editor | Session, permission, terminal, diff |
MCP와 A2A는 경쟁하지 않습니다. Peer agent는 내부에서 MCP로 tool과 data를 사용할 수 있습니다. AG-UI와 A2UI도 경쟁하지 않습니다. AG-UI event stream 안에 A2UI payload가 실릴 수 있습니다.
04 · BOUNDARIES
각 protocol이 소유하는 경계가 다릅니다
MCP: Agent와 capability provider
Host가 tools, resources, prompts를 발견하고 자신의 registry와 permission policy 아래에서 사용합니다. 핵심 단위는 peer agent의 task가 아니라 capability입니다.
A2A: 다른 Agent는 함수가 아닙니다
상대는 자신만의 model, memory, tools, workflow, policy를 가진 독립 runtime일 수 있습니다. Capability discovery와 multi-turn clarification, 장기 task state, artifact delivery가 필요합니다.
AG-UI: 실행의 시간적 흐름을 화면으로
Run lifecycle, text delta, tool call, shared state, approval과 error를 공통 event로 전달합니다. Backend adapter는 framework-native event를 product UI가 이해할 언어로 변환합니다.
Agent Client Protocol: Coding agent와 editor
Workspace context, file diff, terminal, permission, session progress를 다룹니다. MCP가 coding agent의 tool provider를 연결한다면, client protocol은 editor와 coding agent session 자체를 연결합니다.
05 · GENERATIVE UI
A2UI는 code 대신 허용된 data로 UI를 설명합니다
Fixed UI는 개발자가 component를 만들고 agent가 data만 채웁니다. 반대 극단의 arbitrary React code 생성은 실행 위험과 design consistency 문제가 있습니다. A2UI는 client가 허용한 component catalog 안에서 surface, structure, binding, action을 선언하는 중간 지점을 택합니다.
TRUST BOUNDARY
Frontend owns:
- component catalog and renderer
- schema validation and design system
- unsupported-component fallback
Agent decides:
- which surface is needed
- how allowed components are composed
- which data and actions are connected| 선택 | 잘 맞는 경우 |
|---|---|
| Fixed UI | 핵심 workflow가 안정적이고 엄격한 product control이 필요 |
| Schema-driven UI | 형태는 제한적이지만 데이터 조합이 자주 변함 |
| A2UI-style generated surface | 상황별 interface가 필요하고 catalog로 안전하게 제한 가능 |
| Generated code | 격리된 개발 도구나 preview처럼 code 자체가 결과물 |
06 · DECISION
도입 전에 확인할 caveat
- Protocol 이름과 field는 version에 따라 변하므로 사용하는 specification을 고정합니다.
- Transport 선택이 authorization, replay, reconnect, ordering 문제를 자동으로 해결하지 않습니다.
- Generated UI의 component catalog는 rendering API이자 security boundary입니다.
- Protocol adapter에서 원본 runtime event의 의미가 유실되지 않도록 contract test를 둡니다.
- 두 시스템만 연결한다면 protocol 도입 비용이 단순 adapter보다 큰지 먼저 비교합니다.