▶이전글: 랭그래프로 AI 에이전트를 설계하는 법 | 그래프 구조, 상태 관리, 실행 흐름의 원리
랭그래프로 에이전트를 설계하고 나면 자연스럽게 두 가지 한계에 부딪힙니다. 에이전트가 외부 도구나 데이터에 접근해야 하는 상황, 그리고 여러 에이전트가 함께 작업을 수행해야 하는 상황입니다. MCP와 A2A는 이 두 문제를 각각 해결하기 위해 등장한 프로토콜입니다. 이 글에서는 두 프로토콜이 어떤 문제를 해결하고, 어떤 구조로 동작하는지를 설명합니다.
LLM은 학습된 지식과 입력된 컨텍스트를 기반으로 답변을 생성하지만, 기업 시스템 내부 데이터, 실시간 업데이트되는 저장소, 특정 도구 등과 격리되어 있는 경우가 많습니다. 에이전트가 웹 검색이나 파일 탐색 같은 작업을 수행하려면 외부 시스템과 연결해야 하는데, 연결 방식이 도구마다 제각각이라면 개발자는 매번 새로운 통합 코드를 작성해야 합니다.
MCP(Model Context Protocol)는 이 문제를 해결하기 위해 2024년 11월 앤트로픽(Anthropic)이 발표한 개방형 프로토콜입니다. LLM에 컨텍스트를 제공하는 방식 자체를 표준화하여, AI 모델이 다양한 데이터 소스 및 도구에 양방향 연결을 구축할 수 있도록 합니다. 앤트로픽은 MCP를 'AI용 USB-C포트'에 비유합니다. 다양한 하드웨어 연결 포트 규격들이 USB-C로 통일된 후 어떤 기기와도 호환이 가능해진 것처럼, 외부 컨텍스트가 MCP라는 표준을 따르기만 하면 특정 모델이나 프레임워크에 종속되지 않고 다양한 AI 모델과 쉽게 연동할 수 있다는 의미입니다. 개발자 입장에서는 단일 프로토콜만 익히면 여러 환경에 적용이 가능해집니다.

MCP는 호스트 - 클라이언트 - 서버로 구성된 3계층 아키텍처로 동작합니다. MCP 호스트는 클로드 데스크톱(Claude Desktop)이나 커서(Cursor)처럼 모델을 포함한 AI 애플리케이션입니다. MCP 클라이언트는 호스트 내부에 내장되어 사용자 요청을 MCP 표준 메시지 형태로 변환하고 서버에 전달합니다. MCP 서버는 외부 데이터 소스, 도구, API 등을 표준 방식으로 노출하며, 클라이언트의 요청을 받아 처리한 결과를 모델이 이용할 수 있는 형태로 반환합니다. 호스트가 여러 MCP 서버에 연결할 때 각 서버마다 클라이언트를 하나씩 생성하며, 클라이언트와 서버는 항상 일대일 연결을 유지합니다.

MCP 서버가 모델에게 제공할 수 있는 것은 세 가지입니다. Tool은 데이터베이스 쿼리, API 호출 같이 모델이 직접 실행할 수 있는 기능이고, Resource는 파일이나 데이터베이스 스키마처럼 모델에게 전달할 컨텍스트 데이터이며, Prompt는 도구와 리소스를 활용해 응답을 생성할 수 있도록 재사용 가능한 템플릿입니다. 한 번 정의한 컨텍스트를 모델 종류와 관계없이 재사용할 수 있다는 점이 MCP의 핵심 가치입니다.

MCP가 에이전트와 외부 도구 사이의 연결 문제를 해결한다면, A2A는 에이전트와 에이전트 사이의 연결 문제를 해결합니다. 작업이 복잡해질수록 하나의 에이전트가 모든 것을 처리하는 구조는 한계에 부딪히고, 역할이 다른 여러 에이전트가 협업해야 하는 상황이 생깁니다. 그런데 각 에이전트가 참조하는 데이터와 도구가 사일로화되어 있으면 에이전트 간 소통 자체가 어렵습니다. 서로 다른 프레임워크로 개발된 에이전트끼리는 더욱 그렇습니다.
구글이 발표한 A2A(Agent to Agent)는 이 문제를 해결하기 위한 개방형 프로토콜입니다. 서로 다른 프레임워크나 환경에서 구현된 AI 에이전트들이 독립적으로 개발되었더라도, 정보를 교환하며 하나의 통합된 시스템에서 동작할 수 있도록 에이전트 간 통신을 표준화합니다.
A2A에는 세 가지 주요 참여자가 있습니다. 사용자(user)는 작업을 요청하는 주체이고, 클라이언트 에이전트(client agent)는 사용자를 대신해 요청을 분석하고 적절한 원격 에이전트와의 통신을 시작합니다. 원격 에이전트(remote agent)는 클라이언트로부터 전달된 작업을 실제로 처리하고 결과를 반환합니다. 원격 에이전트는 클라이언트 입장에서 내부 구조가 드러나지 않는 블랙박스처럼 동작하므로, 내부 구현 방식과 관계없이 안정적인 협업이 가능합니다.

A2A가 에이전트 간 협업을 안정적으로 지원하는 핵심 메커니즘은 능력 탐색(Capability Discovery)입니다. 원격 에이전트는 에이전트 카드(agent card)라는 JSON 형식의 문서를 통해 자신이 수행할 수 있는 작업과 기능을 외부에 공개합니다. 에이전트의 명함 역할을 하는 이 문서에는 서비스 엔드포인트, 제공 가능한 스킬 목록, 인증 요구 사항 등이 담겨 있습니다. 클라이언트 에이전트는 에이전트 카드를 통해 어떤 에이전트가 현재 요청에 가장 적합한지 판단하고 작업을 라우팅합니다.
클라이언트와 원격 에이전트의 상호작용은 항상 태스크(task) 단위로 진행됩니다. 각 태스크는 고유 ID를 가지며 submitted·working·completed·failed 등의 라이프 사이클을 따릅니다. 이를 통해 클라이언트는 작업 진행 상태를 추적하고, 멀티턴이나 장기 작업 흐름도 안정적으로 관리할 수 있습니다.

MCP와 A2A는 각각 독립된 문제를 해결하지만, 함께 사용할 때 진가를 발휘합니다. 각 에이전트가 MCP를 통해 필요한 외부 도구와 데이터를 활용하고, A2A를 통해 서로 연결되면 서로 다른 방식으로 구현된 에이전트들이 하나의 통합된 멀티 에이전트 시스템으로 동작할 수 있습니다.

위 컨텐츠는 공원나연(박나연) 저자의
『만들면서 배우는 AI 에이전트 개발 입문+실전』의 내용을 재구성하여 제작되었습니다.
댓글