Skip to content

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

A2A ❤️ MCP

AI 에이전트 개발 환경에서는 상호 운용성을 촉진하기 위해 두 가지 주요 유형의 프로토콜이 등장하고 있습니다. 하나는 에이전트를 도구 및 리소스에 연결하기 위한 프로토콜이고, 다른 하나는 에이전트 간 협업을 가능하게 하는 프로토콜입니다. Agent2Agent(A2A) 프로토콜과 모델 컨텍스트 프로토콜(MCP)은 이러한 구별되지만 관련된 요구 사항을 해결합니다.

요약: 에이전트 애플리케이션에는 A2A와 MCP가 모두 필요합니다. 도구에는 MCP를, 에이전트 간 통신에는 A2A를 사용하는 것을 권장합니다.

왜 프로토콜이 다른가?

이러한 구분은 에이전트가 상호 작용하는 대상의 본질에서 비롯됩니다.

  • 도구 및 리소스:

    • 일반적으로 잘 정의되고 구조화된 입력과 출력을 가진 기본 요소입니다. 특정하고, 종종 상태 비저장(stateless) 기능을 수행합니다(예: 계산기, 데이터베이스 쿼리 API, 날씨 조회 서비스).
    • 그들의 행동은 일반적으로 예측 가능하고 트랜잭션적입니다.
    • 상호 작용은 종종 단일 요청-응답 주기로 이루어집니다.
  • 에이전트:

    • 이들은 더 자율적인 시스템입니다. 추론하고, 계획하고, 여러 도구를 사용하고, 더 긴 상호 작용을 통해 상태를 유지하며, 새롭거나 진화하는 작업을 달성하기 위해 복잡하고 종종 여러 차례의 대화에 참여할 수 있습니다.
    • 그들의 행동은 단순한 도구보다 예측하기 어렵고 창발적일 수 있습니다.
    • 상호 작용에는 종종 진행 중인 작업, 컨텍스트 공유 및 협상이 포함됩니다.

에이전트 애플리케이션은 이 두 가지를 모두 활용해야 합니다. 에이전트는 정보를 수집하고 조치를 수행하기 위해 도구를 사용하며, 더 광범위하고 복잡한 목표를 해결하기 위해 다른 에이전트와 협력합니다.

모델 컨텍스트 프로토콜(MCP)

  • 초점: MCP는 AI 모델과 에이전트가 도구, API, 데이터 소스 및 기타 외부 리소스에 연결하고 상호 작용하는 방식을 표준화합니다.
  • 메커니즘: 도구 기능(대규모 언어 모델의 함수 호출과 유사)을 설명하고, 입력을 전달하며, 구조화된 출력을 수신하는 구조화된 방법을 정의합니다.
  • 사용 사례:
    • LLM이 외부 API를 호출할 수 있도록 지원 (예: 현재 주가 가져오기).
    • 에이전트가 특정 매개변수로 데이터베이스를 쿼리할 수 있도록 허용.
    • 에이전트를 미리 정의된 함수 또는 서비스 집합에 연결.
  • 생태계: MCP는 도구 제공자가 다양한 AI 모델 및 에이전트 프레임워크에 자신의 서비스를 쉽게 노출하고, 에이전트 개발자가 표준화된 방식으로 이러한 도구를 쉽게 사용할 수 있는 생태계를 만드는 것을 목표로 합니다.

Agent2Agent 프로토콜(A2A)

  • 초점: A2A는 독립적이고 종종 불투명한 AI 에이전트가 동료(peer)로서 서로 통신하고 협업하는 방식을 표준화합니다.
  • 메커니즘: 에이전트가 다음을 수행할 수 있도록 하는 애플리케이션 수준 프로토콜을 제공합니다.
    • 에이전트 카드를 통해 서로의 높은 수준의 기술과 기능을 발견합니다.
    • 상호 작용 양식(텍스트, 파일, 구조화된 데이터)을 협상합니다.
    • 공유되고, 상태를 가지며, 잠재적으로 장기 실행되는 작업을 관리합니다.
    • 대화 컨텍스트, 지침 및 복잡한 다중 부분 결과를 교환합니다.
  • 사용 사례:
    • 고객 서비스 에이전트가 고객 상호 작용의 컨텍스트를 유지하면서 복잡한 청구 문의를 전문 청구 에이전트에게 위임합니다.
    • 여행 계획 에이전트가 별도의 항공, 호텔 및 활동 예약 에이전트와 협력하여 다단계 예약 프로세스를 관리합니다.
    • 시간에 따라 진화하는 공동 프로젝트에 대한 정보를 교환하고 상태 업데이트를 수행하는 에이전트.
  • 도구 상호 작용과의 주요 차이점: A2A는 일반적으로 간단한 도구 호출에서 볼 수 있는 것보다 더 동적이고, 상태를 가지며, 잠재적으로 다중 모드인 상호 작용을 허용합니다. A2A를 사용하는 에이전트는 단순히 개별 함수를 호출하는 것이 아니라 에이전트로서 (또는 사용자를 대신하여) 통신합니다.

A2A와 MCP가 서로를 보완하는 방법

A2A와 MCP는 상호 배타적이지 않습니다. 이들은 매우 보완적이며 에이전트 시스템의 상호 작용 요구 사항의 서로 다른 계층을 해결합니다.

A2A와 MCP가 함께 작동하는 다이어그램. 사용자는 A2A를 통해 에이전트 A와 상호 작용합니다. 에이전트 A는 A2A를 통해 에이전트 B와 상호 작용합니다. 에이전트 B는 MCP를 사용하여 도구 1 및 도구 2와 상호 작용합니다.

에이전트 애플리케이션은 다른 에이전트와 통신하기 위해 A2A를 사용할 수 있으며, 각 에이전트는 내부적으로 특정 도구 및 리소스와 상호 작용하기 위해 MCP를 사용합니다.

예시 시나리오: 자동차 정비소

자율 AI 에이전트 "정비사"가 차량용 리프트, 멀티미터, 소켓 렌치와 같은 특수 목적 도구를 사용하여 문제를 진단하고 수리하는 자동차 정비소를 생각해 보십시오. 작업자들은 종종 이전에 본 적 없는 문제를 진단하고 수리해야 합니다. 수리 과정에는 고객과의 광범위한 대화, 조사 및 부품 공급업체와의 협력이 포함될 수 있습니다.

  1. 고객 상호 작용 (A2A를 통한 사용자-에이전트):

    • 고객(또는 고객의 주 비서 에이전트)은 A2A를 사용하여 "정비소 관리자" 에이전트와 통신합니다: "제 차에서 덜컹거리는 소리가 나요."
    • 정비소 관리자 에이전트는 A2A를 사용하여 다중 회전 진단 대화를 수행합니다: "소리가 나는 영상을 보내주실 수 있나요?", "액체가 새는 것 같은데, 얼마나 오래되었나요?"
  2. 내부 도구 사용 (MCP를 통한 에이전트-도구):

    • 정비소 관리자로부터 작업을 할당받은 정비사 에이전트는 문제를 진단해야 합니다. MCP를 사용하여 특수 도구와 상호 작용합니다:
      • "차량 진단 스캐너" 도구에 대한 MCP 호출: scan_vehicle_for_error_codes(vehicle_id='XYZ123').
      • "수리 매뉴얼 데이터베이스" 도구에 대한 MCP 호출: get_repair_procedure(error_code='P0300', vehicle_make='Toyota', vehicle_model='Camry').
      • "플랫폼 리프트" 도구에 대한 MCP 호출: raise_platform(height_meters=2).
  3. 공급업체 상호 작용 (A2A를 통한 에이전트-에이전트):

    • 정비사 에이전트는 특정 부품이 필요하다고 판단합니다. A2A를 사용하여 "부품 공급업체" 에이전트와 통신합니다: "2018년형 토요타 캠리용 부품 번호 12345 재고 있나요?"
    • A2A 호환 시스템인 부품 공급업체 에이전트가 응답하여 잠재적으로 주문으로 이어집니다.

이 예시에서:

  • A2A는 고객과 정비소 간, 그리고 정비소 에이전트와 외부 공급업체 에이전트 간의 더 높은 수준의 대화형 및 작업 중심 상호 작용을 용이하게 합니다.
  • MCP는 정비사 에이전트가 특정 구조화된 도구를 사용하여 진단 및 수리 기능을 수행할 수 있도록 합니다.

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

A2A 서버(원격 에이전트)가 일부 기술을 MCP 호환 리소스로 노출하는 것도 생각할 수 있습니다. 특히 해당 기술이 잘 정의되어 있고 더 도구와 유사하며 상태 비저장 방식으로 호출될 수 있는 경우 더욱 그렇습니다. 이러한 경우 다른 에이전트는 MCP 스타일 도구 설명(아마도 해당 에이전트 카드에서 파생됨)을 통해 이 A2A 에이전트의 특정 기술을 "발견"할 수 있습니다.

그러나 A2A의 주요 강점은 일반적인 도구 호출을 넘어서는 더 유연하고, 상태를 가지며, 협업적인 상호 작용을 지원한다는 데 있습니다. A2A는 에이전트가 작업에서 _협력_하는 것에 관한 것이고, MCP는 에이전트가 기능을 _사용_하는 것에 더 가깝습니다.

에이전트 간 협업을 위한 A2A와 도구 통합을 위한 MCP를 모두 활용함으로써 개발자는 더욱 강력하고 유연하며 상호 운용 가능한 AI 시스템을 구축할 수 있습니다.