A2A · SPEC

프로토콜 스펙

📐 아키텍처 다이어그램 📋 엔드포인트 레퍼런스 ⚖️ MCP 비교 분석

A2A 설계 철학, JSON-RPC 기반 메시지 구조, HTTP 엔드포인트 목록, MCP와의 역할 차이를 정확히 이해합니다.

A2A란 무엇인가

A2A(Agent-to-Agent)는 2025년 4월 Google이 오픈소스로 공개한 멀티에이전트 통신 프로토콜입니다. 서로 다른 프레임워크나 벤더로 만들어진 AI Agent가 네트워크를 통해 직접 협력할 수 있도록 표준 인터페이스를 정의합니다.

💡 MCP vs A2A 한 줄 정의
  • MCP — LLM ↔ 외부 도구 연결 표준 (AI가 도구를 사용하는 인터페이스)
  • A2A — Agent ↔ Agent 통신 표준 (AI가 다른 AI에게 작업을 위임하는 인터페이스)

기본 정보

항목내용
공개 시기2025년 4월 (Google 오픈소스)
메시지 포맷JSON-RPC 2.0 over HTTP
전송 방식HTTP POST (동기) + HTTP+SSE (스트리밍)
탐색 방식Agent Card — /.well-known/agent.json
공식 SDKPython (a2a-sdk), TypeScript
라이선스Apache 2.0
스펙 저장소github.com/google-a2a/a2a-samples

전체 아키텍처

👤 사용자 요청 🎭 Orchestrator Agent Agent Card 탐색 → tasks/send → 결과 통합 🔍 검색 Agent POST /tasks/send GET /.well-known/agent.json 💻 코드 실행 Agent POST /tasks/send GET /.well-known/agent.json 📊 분석 Agent POST /tasks/sendSubscribe (SSE) GET /.well-known/agent.json 각 Agent는 독립적인 HTTP 서버 — 프레임워크/언어 무관 그림 1. A2A 전체 구조 — Orchestrator가 원격 Agent에게 Task를 위임

HTTP 엔드포인트 레퍼런스

엔드포인트메서드설명
/.well-known/agent.jsonGETAgent Card 반환. 에이전트 탐색의 시작점
/ (또는 /tasks)POSTJSON-RPC 요청 수신 (tasks/send, tasks/get 등)

JSON-RPC 메서드 목록

메서드방향설명
tasks/sendClient → Agent새 Task 전송. 완료 시 Task 객체 반환 (동기)
tasks/sendSubscribeClient → AgentTask 전송 + SSE 스트림으로 진행 상황 실시간 수신
tasks/getClient → AgentTask ID로 현재 상태 조회
tasks/cancelClient → Agent진행 중인 Task 취소 요청
tasks/pushNotification/setClient → AgentTask 완료 시 Webhook URL 등록
tasks/pushNotification/getClient → Agent등록된 Push Notification 설정 조회
tasks/resubscribeClient → Agent끊어진 SSE 스트림 재연결

MCP vs A2A 비교

항목MCPA2A
목적LLM ↔ 도구/리소스 연결Agent ↔ Agent 협력
상대방외부 서비스, DB, 파일시스템다른 AI Agent
통신 단위Tool 호출 (단발성 요청)Task (상태 있는 작업)
상태 관리서버 측 Stateless 권장Task 상태 머신 내장
스트리밍Notification으로 부분 지원tasks/sendSubscribe (SSE 표준)
다중 턴지원 없음input-required 상태로 중간 입력 요청
만든 곳AnthropicGoogle
🔧 MCP + A2A 함께 쓰기
실무에서 두 프로토콜은 상호 배타적이지 않습니다. 일반적인 패턴: 각 Agent 내부에서 MCP로 도구를 사용하고, Agent 간 협력은 A2A로 처리합니다. Orchestrator가 A2A로 Sub-Agent를 호출하고, Sub-Agent는 내부적으로 MCP 도구를 사용합니다.