MCP를 넘어서 A2A로
2025년 Google이 발표한 A2A(Agent-to-Agent) 프로토콜은 다양한 AI 에이전트가 자율적으로 통신하고 협업할 수 있도록 설계된 범용 상호운용성 표준이다. A2A는 서로 다른 언어, 프레임워크, 벤더에 기반한 에이전트들이 마치 전문가 집단처럼 협력할 수 있는 기반을 제공하며, 예를 들어 고객 상담 요청이 들어올 경우 하나의 에이전트가 고객 정보를 수집하고, 다른 에이전트가 상품을 추천하며, 또 다른 에이전트가 결제 처리를 담당하는 식으로 역할을 분담해 유기적으로 작동할 수 있다.
이는 개방형 생태계 조성을 위한 핵심 기술로 작용한다. 다양한 조직이나 개발자가 독립적으로 개발한 에이전트들이 공통된 프로토콜을 통해 상호작용함으로써, 플랫폼 종속 없이 서비스 간 통합이 가능하고 새로운 에이전트가 생태계에 쉽게 참여할 수 있는 환경이 마련된다.
설계철학
A2A는 다음 다섯 가지 설계 원칙을 따른다.
- 에이전트 간 자율 협업: 각 에이전트는 독립적이며, 명시적인 메시지를 통해 협력한다.
- 표준 기술 기반: HTTP, JSON-RPC 2.0, SSE 등 검증된 웹 기술을 활용하여 높은 호환성을 확보한다.
- 보안 중심 설계: OAuth 2.0, API 키, mTLS 등 다양한 인증 방식으로 보안성과 유연성을 제공한다.
- 장기 실행 태스크 지원: 몇 초에서 며칠까지 걸릴 수 있는 작업을 처리할 수 있도록 비동기 통신과 상태 스트리밍을 지원한다.
- 모달리티 무관 메시지: 텍스트, 이미지, 오디오, 비디오 등 다양한 형식의 메시지를 지원한다.
A2A와 MCP 비교
항목 | A2A | MCP |
목적 | 에이전트 간 협업 | LLM과 도구 간 상호작용 |
아키텍처 | 피어 투 피어(Peer-to-Peer) | 중앙 집중형(Client ↔ Tool) |
메시지 유형 | Task, Message, Artifact | Prompt, ToolCall, ToolResult |
프로토콜 | HTTP/S + JSON-RPC, SSE, Webhook | HTTP/S 기반 JSON-RPC |
상태 관리 | 명시적 상태 필드로 관리 | 내장된 상태 없음 |
MCP는 하나의 LLM이 툴을 호출하는 구조에 최적화된 인터페이스이고,
A2A는 수평적으로 구성된 여러 에이전트 간의 협업을 중점으로 한다. 이 둘은 상호 보완적으로 사용될 수 있다.
A2A 아키텍처 개요
아키텍처 다이어그램
사용자
│
▼
클라이언트 에이전트 ────▶ 원격 에이전트 A (작업 수행)
│ │
└────▶ 원격 에이전트 B (추가 처리)
│
▼
결과 반환 및 상태 갱신
이 구조는 클라이언트가 태스크를 생성하고 복수의 원격 에이전트에게 분산 실행을 위임하는 방식으로 설계되어 있으며, 각 에이전트는 명확한 역할을 수행한다.
핵심 구성 요소
- 클라이언트 에이전트: 사용자 요청을 수신하고 적절한 원격 에이전트를 선택해 작업을 위임한다.
- 원격 에이전트: 위임받은 작업을 수행하고 결과를 반환한다.
- 에이전트 카드 (Agent Card): JSON 포맷의 메타데이터로, 에이전트의 기능, API, 인증 요구사항 등을 명시한다.
태스크 생명주기
상태 | 설명 |
submitted | 태스크가 생성되어 전송됨 |
working | 작업이 진행 중임 |
input-required | 추가 정보가 필요함 |
completed | 작업이 성공적으로 완료됨 |
failed | 작업 중 오류 발생 |
canceled | 사용자 또는 시스템에 의해 취소됨 |