A2A와 MCP

A2A와 MCP

AI 에이전트 개발에서는 상호운용성을 높이는 두 가지 핵심 프로토콜 유형이 등장해요. 하나는 에이전트를 도구와 리소스에 연결하고, 다른 하나는 에이전트 간 협업을 가능하게 하죠. Agent2Agent(A2A) 프로토콜과 Model Context Protocol(MCP)은 서로 다르지만 매우 보완적인 이 두 가지 요구를 다뤄요.

출처: 문서

본문

수평 계층과 수직 계층

두 프로토콜을 구분하는 쉬운 방법은 연결 방향을 보는 거예요. MCP는 수직이에요. 하나의 에이전트를 깊게 만들어 주죠. 한 지붕 아래(단일 애플리케이션 안의 하나 이상의 에이전트)에 에이전트 시스템을 구축할 수 있어요. 추가하는 MCP 연결마다 에이전트에 도구, 리소스, 스킬 하나가 더해져요. 많이 연결할수록 그 에이전트가 혼자서 더 많은 일을 하게 돼요.

A2A는 수평이에요. 그 경계를 가로질러 에이전트를 연결해요. 상대 에이전트는 다른 팀, 다른 부서, 또는 파트너 조직에 속할 수 있어요. 여러분의 에이전트는 그 에이전트들에게 다가가서 발견하고, 협상하고, 정보를 교환해요. 이 수평적 연결은 단순히 다른 에이전트에게 상태 업데이트를 묻는 수준을 넘어서요. 한 사람이 다른 사람에게 도움을 청하는 방식에 가까워요. "이 프로젝트 작업 중이야? 이거 알고 있어? 가진 걸 공유해 줄래 — 아니면 어떤 에이전트가 할 수 있을까?" 에이전트들은 서로 말을 트고, 컨텍스트를 교환하고, 교환 결과에 따라 더 깊이 들어가거나 일을 끝낼 더 좋은 곳으로 안내받죠. 함께 쓰이면 MCP는 각 에이전트에 깊이를, A2A는 여러분의 시스템에 도달 범위를 주는 셈이에요.

Model Context Protocol

Model Context Protocol(MCP)은 AI 에이전트가 데이터베이스나 API 같은 개별 도구와 리소스를 어떻게 사용하는지 정의해요. 이 프로토콜은 다음 역량을 제공해요.

  • AI 모델과 에이전트가 도구, API, 기타 외부 리소스에 연결하고 상호작용하는 방식을 표준화해요.
  • Large Language Model의 함수 호출(function calling)과 유사하게 도구 역량을 구조적으로 기술하는 방식을 정의해요.
  • 도구에 입력을 넘기고 구조화된 출력을 받아요.
  • LLM이 외부 API를 호출하거나, 에이전트가 데이터베이스를 질의하거나, 에이전트가 사전 정의된 함수에 연결하는 것 같은 일반적인 사용 사례를 지원해요.

Agent2Agent 프로토콜

Agent2Agent 프로토콜은 서로 다른 에이전트들이 공통 목표를 위해 협업하게 해요. 이 프로토콜은 다음 역량을 제공해요.

  • 독립적이고 종종 불투명한 AI 에이전트들이 동등한 입장(peer)으로 소통하고 협업하는 방식을 표준화해요.
  • 에이전트에 애플리케이션 수준 프로토콜을 주어요. 이를 통해 에이전트들은 서로를 발견하고 상호작용을 협상해요. 또한 공유 태스크를 관리하고 대화 컨텍스트와 복잡한 데이터를 교환하죠.
  • 일반적인 사용 사례를 지원해요. 예를 들어 고객 서비스 에이전트가 문의를 청구(billing) 에이전트에 위임할 수 있어요. 여행 에이전트는 항공, 호텔, 액티비티 에이전트와 조율할 수 있어요.

왜 다른 프로토콜이 필요한가

복잡한 AI 시스템을 구축하려면 두 프로토콜 모두 필수예요. A2A와 MCP의 차이는 에이전트가 무엇과 상호작용하느냐에 달려 있어요.

도구와 리소스(MCP 영역):

  • 특성: 보통 잘 정의되고 구조화된 입력/출력을 가진 원시 요소(primitive)들이에요. 특정하고 종종 무상태인 기능을 수행하죠. 예: 계산기, 데이터베이스 질의 API, 날씨 조회 서비스.
  • 목적: 에이전트는 정보를 모으고 개별 기능을 수행하기 위해 도구를 사용해요.

에이전트(A2A 영역):

  • 특성: 더 자율적인 시스템이에요. 추론하고, 계획하고, 여러 도구를 사용해요. 더 긴 상호작용에서 상태를 유지하고, 새롭고 진화하는 작업을 처리하기 위해 복잡하고 종종 다중 턴의 대화를 나눠요.
  • 목적: 에이전트는 더 넓고 복잡한 목표를 다루기 위해 다른 에이전트와 협업해요.

A2A ❤️ MCP: 에이전트 시스템을 위한 보완적 프로토콜

에이전트 애플리케이션은 다른 에이전트와 소통할 때 A2A를 쓸 수 있어요. 내부에서는 각 에이전트가 자기 도구와 리소스를 다룰 때 MCP를 사용하죠. A2A는 에이전트들을 서로 연결하고, MCP는 각 에이전트를 자기 도구에 연결해요.

예시 시나리오: 자동차 수리점

자율 AI 에이전트 "정비공"들이 근무하는 자동차 수리점을 상상해 볼게요. 정비공들은 특수 목적 도구로 문제를 진단하고 수리해요. 도구에는 차량 진단 스캐너, 수리 매뉴얼, 플랫폼 리프트가 있어요. 수리 과정은 긴 대화, 조사, 부품 공급업체와의 협업을 포함할 수 있어요.

  • 고객 상호작용 — A2A를 통한 사용자↔에이전트: 고객(또는 고객의 어시스턴트 에이전트)이 "상점 매니저" 에이전트와 대화해요. 예를 들어 고객이 "제 차에서 덜컹거리는 소리가 나요"라고 할 수 있어요.
  • 진단 대화 — A2A를 통한 에이전트↔에이전트: 상점 매니저 에이전트가 왕복하는 진단 대화를 나눠요. 예를 들어 매니저가 "소리 영상을 보내 주시겠어요?" 또는 "액체가 새는 게 보이는데, 언제부터였죠?"라고 물을 수 있어요.
  • 내부 도구 사용 — MCP를 통한 에이전트↔도구: 상점 매니저가 배정한 정비공 에이전트는 문제를 진단해야 해요. MCP를 사용해 자사의 특수 도구에 접근하죠. 예를 들어:
    • "Vehicle Diagnostic Scanner" 도구에 대한 MCP 호출: scan_vehicle_for_error_codes(vehicle_id='XYZ123')
    • "Repair Manual Database" 도구에 대한 MCP 호출: get_repair_procedure(error_code='P0300', vehicle_make='Toyota', vehicle_model='Camry')
    • "Platform Lift" 도구에 대한 MCP 호출: raise_platform(height_meters=2)
  • 공급업체 상호작용 — A2A를 통한 에이전트↔에이전트: 정비공 에이전트가 특정 부품이 필요하다는 걸 알게 돼요. A2A를 사용해 "부품 공급업체" 에이전트와 대화하고 부품을 주문해요. 예를 들어 정비공 에이전트가 "2018 Toyota Camry용 부품 #12345 재고 있나요?"라고 물을 수 있어요.
  • 주문 처리 — A2A를 통한 에이전트↔에이전트: 부품 공급업체 에이전트 역시 A2A 호환 시스템이에요. 응답하고 주문으로 이어질 수 있죠.

이 예시에서:

  • A2A는 더 높은 수준의 대화형·작업 지향적 상호작용을 처리해요. 고객을 상점에, 상점의 에이전트를 외부 공급업체 에이전트에 연결해요.
  • MCP는 정비공 에이전트가 자사의 특정·구조화 도구를 사용해 진단·수리 기능을 수행하게 해요.

A2A 에이전트를 MCP 리소스로 표현하기

A2A 서버(원격 에이전트)는 일부 스킬을 MCP 호환 리소스로 노출할 수 있어요. 스킬이 잘 정의되어 있고 도구처럼 무상태 방식으로 호출될 수 있을 때 가장 잘 맞아요. 그러면 다른 에이전트가 Agent Card에서 파생된 MCP 스타일 도구 설명을 통해 그 스킬을 "발견"할 수 있어요. 그래도 A2A의 주요 강점은 일반적인 도구 호출을 넘어서는 유연하고 상태를 유지하는 협업적 상호작용 지원이에요. A2A는 에이전트가 작업에 파트너가 되는 것이고, MCP는 에이전트가 역량을 사용하는 것에 더 가까워요. 둘을 함께 쓰세요. 에이전트 간 협업은 A2A가, 도구 통합은 MCP가 맡아요. 그러면 더 강력하고 유연하며 상호운용 가능한 AI 시스템을 만들 수 있어요.

더 알아보기 (Learn more)