MCP와 A2A의 경계 MCP and A2A Boundary
MCP vs A2A · MCP-A2A Boundary
MCP와 A2A의 경계는 도구·리소스 사용 계약과 독립 에이전트 협업 계약을 구분해 각 프로토콜을 올바른 시스템 경계에 배치하는 설계 원칙이다.
개념과 원리
섹션 제목: “개념과 원리”정의와 적용 경계
섹션 제목: “정의와 적용 경계”MCP는 호스트·에이전트가 도구, 리소스, 프롬프트와 상호작용하는 표준이고 A2A는 서로 독립적이며 내부가 불투명할 수 있는 에이전트가 발견·협상·장기 Task를 수행하는 표준이다. 호출 대상이 자율적으로 범위를 조정하고 상태를 오래 유지하며 다른 도구를 조합한다면 A2A 경계가 적합하고, 명확한 스키마의 원자 기능이라면 MCP 도구 경계가 단순하다.
프로토콜 객체와 계약
섹션 제목: “프로토콜 객체와 계약”전형적인 구성에서 사용자 측 주 에이전트는 A2A로 전문 에이전트와 협업하고, 각 전문 에이전트 내부는 MCP로 데이터베이스·검색·업무 API를 사용한다. 같은 기능을 두 프로토콜로 노출할 수도 있지만 계약을 자동 변환한다고 의미가 같아지지는 않는다. A2A Task의 협상·중단·후속 작업을 단일 MCP tool call로 축소하면 상태와 책임이 사라질 수 있다.
상호작용 흐름
섹션 제목: “상호작용 흐름”경계를 정할 때 대상의 자율성, 입력·출력의 폐쇄성, 실행 시간, 다중 왕복, 사용자 추가 입력, 취소·결과 추적과 신뢰 주체를 표로 비교한다. MCP 도구로 충분하면 최소 표면을 유지하고, 에이전트 협업이 필요하면 Agent Card와 Task 계약을 설계한다. A2A 에이전트가 내부 MCP 도구를 호출할 때 두 계층의 식별자·권한·추적을 연결하되 외부에 내부 도구 세부를 노출하지 않는다.
추가 입력이나 여러 왕복이 필요하다는 사실만으로 반드시 A2A가 필요한 것은 아니다. MCP 2026-07-28의 MRTR은 tools/call 등에 InputRequiredResult를 반환하고 클라이언트가 inputResponses와 서버의 requestState를 붙여 원래 요청을 다시 보내는 경로다. requestState는 해석·수정하지 않는 불투명 값이며 A2A의 Task ID와 동일시하지 않는다. 독립 에이전트의 책임·작업 상태 계약이 필요한지를 함께 판단한다.
실패·보안 경계
섹션 제목: “실패·보안 경계”A2A 호출자의 사용자 권한을 MCP 서버로 그대로 전달하면 토큰 혼동과 과권한이 생길 수 있다. 각 경계에서 새로운 audience와 최소 scope를 발급하고 에이전트가 정책 결정 책임을 가진다. MCP 도구 결과와 A2A 원격 에이전트 결과 모두 신뢰하지 않은 입력이며, A2A가 내부 추론을 숨긴다는 이유로 안전성 검증을 생략해서는 안 된다.
활용과 검증
섹션 제목: “활용과 검증”구현과 검증
섹션 제목: “구현과 검증”검증 시나리오는 같은 업무를 잘못된 경계와 올바른 경계로 구현해 상태 손실, 추가 입력, 취소, 오류 복구와 감사 가능성을 비교한다. A2A taskId·contextId와 내부 MCP request ID·tool call ID를 분리해 기록하고 공통 trace에서 부모·자식 관계만 연결한다. 프로토콜 변환기는 완전한 의미 보존이 가능한 좁은 기능에만 사용한다.
인접 개념과의 구분
섹션 제목: “인접 개념과의 구분”A2A와 MCP는 경쟁 표준이 아니라 다른 상호작용 축을 담당한다. OpenAPI는 둘이 사용하는 HTTP 표면이나 보안 스킴을 기술할 수 있고, 함수 호출은 모델 출력 형식에 가까워 네트워크 발견·수명 주기까지 규정하지 않는다. 무엇을 호출하는지와 누가 결과 책임을 지는지를 기준으로 경계를 선택해야 한다.
경계 분해 사례
섹션 제목: “경계 분해 사례”구매 지원 시스템에서 재고 조회는 입력 SKU와 구조화 출력이 명확한 MCP 도구로 두고, 공급업체와 대체품·납기·계약 조건을 여러 차례 협상하는 기능은 A2A 원격 에이전트로 둘 수 있다. 구매 에이전트는 A2A Task를 소유하며 내부에서 MCP 재고·환율·계약 검색 도구를 호출한다. 외부 클라이언트는 내부 tool name이나 데이터베이스 자격을 알 필요가 없고 최종 견적은 Artifact로 받는다. 단순 재고 조회까지 A2A로 만들면 Task·발견 비용이 불필요하고, 협상 전체를 MCP tool call 하나로 만들면 input-required·취소·부분 결과와 책임 주체가 모호해진다. 업무 단계마다 자율성과 수명 기준으로 경계를 다시 평가한다. 도구를 에이전트처럼 과도하게 포장하지 않는다.
교차 경계 실행 계약
섹션 제목: “교차 경계 실행 계약”A2A와 MCP가 만나는 에이전트는 외부 Task의 목표·예산·사용자 권한을 내부 도구 호출 정책으로 변환한다. A2A messageId를 MCP request ID로 재사용하지 않고 trace link와 업무 상관관계를 유지한다. MCP 도구 오류는 안전한 외부 오류와 A2A Task 상태로 매핑하되 복구 가능한 실패 하나를 곧바로 전체 Task 실패로 일반화하지 않는다. 외부 취소 시 아직 진행 중인 내부 호출의 중단을 요청하고 실제 완료·실패·중단 상태를 확인한다. MCP 2026-07-28에서 stdio는 notifications/cancelled를, Streamable HTTP는 해당 응답 스트림 종료를 취소 신호로 쓴다. 취소는 이미 완료됐거나 취소할 수 없는 실행과 경합할 수 있으므로 외부 쓰기·결제가 자동 복구된다고 보장하지 않는다. 이미 발생한 효과는 업무별 조회·멱등성·가능한 보상 절차로 별도 처리한다. 권한과 보존 정책도 두 경계에서 다시 검증하고 프로토콜 배치를 바꾸면 회귀 시험과 마이그레이션 계획을 갱신한다.
학습 체크
섹션 제목: “학습 체크”- 한 업무를 에이전트 협업과 도구 호출로 나누어 적절한 프로토콜을 선택할 수 있는가?
- A2A를 MCP 단일 도구로 축소할 때 사라지는 상태 의미를 설명할 수 있는가?
- 두 경계 사이 권한과 추적 식별자를 안전하게 연결할 수 있는가?
문서 관계
섹션 제목: “문서 관계”선행 개념
섹션 제목: “선행 개념”관련 문서
섹션 제목: “관련 문서”이 문서를 가리키는 문서
섹션 제목: “이 문서를 가리키는 문서”이 문서를 포함하는 코스
섹션 제목: “이 문서를 포함하는 코스”참고와 다음 학습
섹션 제목: “참고와 다음 학습”참고 문헌
섹션 제목: “참고 문헌”- A2A and MCP: Detailed Comparison - documentation
- Agent2Agent Protocol Specification 1.0 - standard
- Model Context Protocol Specification 2026-07-28 - standard
- A2A Core Concepts - documentation
- MCP 2026-07-28 Cancellation - standard
- A2A Protocol Specification 1.0.0 - standard
- MCP 2026-07-28 Multi Round-Trip Requests - standard
코스에서 계속 읽기
섹션 제목: “코스에서 계속 읽기”- 에이전트 상호운용과 실행 계약: 다음 문서 — 관측성
