Agent Registry는 Agent2Agent(A2A) 에이전트 카드, 전송 인터페이스, 인라인 스킬을 색인 생성하므로 사용자와 조정자 에이전트가 Google Cloud 환경 전반에서 에이전트를 검색하고 호출할 수 있습니다. 자율 AI 에이전트는 A2A 프로토콜을 사용하여 내부 상태, 프롬프트 또는 도구를 공유하지 않고도 메시지를 교환하고 작업을 위임할 수 있습니다.
AI 에이전트, A2A, MCP 간의 관계
멀티 에이전트 아키텍처는 에이전트 레지스트리가 분류하는 다음과 같은 개방형 표준을 결합할 수 있습니다.
- Agent2Agent(A2A) 프로토콜: 조정자 에이전트 또는 사용자 대상 애플리케이션과 같은 A2A 클라이언트와 원격 A2A 에이전트 간의 P2P 통신을 표준화합니다. 클라이언트는 자연어 또는 구조화된 메시지를 전송하고 원격 에이전트의 기본 모델, 메모리 기판 또는 내부 추론 루프에 대한 가시성 없이 스테이트풀(Stateful) 태스크 업데이트 또는 아티팩트를 수신합니다. 에이전트 레지스트리는 Google Cloud API에 의해 노출되는 기본 제공 Google 에이전트와 자체 환경에 배포하는 커스텀 A2A 에이전트를 모두 분류합니다. 커스텀 A2A 에이전트를 호스팅하는 아키텍처 예시는 Cloud Run의 A2A 에이전트 개요를 참조하세요.
- 모델 컨텍스트 프로토콜(MCP): 에이전트가 MCP 서버에 연결하여 결정론적 도구를 호출하고 구조화된 데이터 리소스를 읽는 클라이언트-서버 도구 실행을 표준화합니다.
Agent Registry에서 조정자 에이전트는 단일 레지스트리를 쿼리하여 다단계 위임을 위한 전문가 A2A 하위 에이전트를 검색할 수 있으며, 직접 도구 사용을 위한 MCP 서버 및 독립형 기술도 검색할 수 있습니다.
프로토콜 버전 및 에이전트 카드 검색
모든 A2A 호환 에이전트는 에이전트 카드(agent-card.json)라는 JSON 메타데이터 문서에 자신의 ID, 엔드포인트, 기능을 설명합니다.
에이전트 레지스트리는 A2A 프로토콜 사양의 버전 1.0(권장) 및 0.3를 지원합니다.
특정 에이전트 카드 필드 및 이러한 버전의 구조에 대한 자세한 내용은 에이전트 카드 스키마를 참조하세요.
에이전트 레지스트리가 에이전트 카드를 색인 생성하는 방법
A2A 에이전트가 자동 등록을 통해 수집되든 수동 등록을 통해 추가되든 에이전트 레지스트리는 에이전트 카드를 검증하고 다음 정보가 포함된 읽기 전용 Agent 검색 리소스를 만듭니다.
- 에이전트 카드 페이로드: 에이전트 레지스트리는
type가A2A_AGENT_CARD로 설정된Agent리소스의card필드에 전체 JSON 페이로드를 저장합니다. - 검색 필드: 에이전트 레지스트리는 에이전트 카드에서 에이전트의
displayName,description,version, 전송protocols, 인라인skills를 추출하여Agent리소스에 저장합니다. 서비스 전반에서 개별/.well-known/agent-card.json엔드포인트를 가져오지 않고도 이러한 기능을 검색하고 필터링할 수 있습니다.
Google Cloud 서비스 및 관리형 런타임이 항상 공개 /.well-known/agent-card.json URL을 노출하는 것은 아닙니다. 대신 사용자와 클라이언트 애플리케이션이 에이전트 레지스트리에서 직접 에이전트 카드를 검색합니다. 일부 에이전트는 인증된 클라이언트만 사용할 수 있는 추가 세부정보가 포함된 확장된 에이전트 카드도 제공합니다. 에이전트 카드가 capabilities.extendedAgentCard를 true로 설정하면 인증된 클라이언트는 에이전트의 런타임 엔드포인트에서 확장된 에이전트 카드를 가져와 해당 세부정보를 검색할 수 있습니다.
전송 바인딩 및 핵심 작업
전송 바인딩은 클라이언트가 네트워크를 통해 A2A 에이전트에 요청을 형식화하고 전송하는 방법을 정의합니다. A2A 프로토콜은 다양한 플랫폼에서 빌드된 에이전트가 통신할 수 있도록 다음 전송 옵션을 지원합니다.
- HTTP+JSON: JSON 페이로드를 전송하고 수신하는 HTTPS 요청입니다.
- JSON-RPC: JSON-RPC 메시지 내에서 작업 이름과 매개변수를 래핑하는 HTTPS 요청입니다.
- gRPC: 서비스 간 지연 시간이 짧은 통신을 위한 TLS를 통한 바이너리 gRPC 호출입니다.
에이전트 레지스트리는 각 에이전트의 지원되는 전송 유형과 Agent 리소스의 에이전트 엔드포인트 URL을 기록합니다. 엔드포인트 URL은 Google Cloud 서비스 및 배포에 따라 다르므로 코드에서 URL을 하드코딩하지 마세요. 대신 런타임 시 Agent Registry에서 에이전트의 엔드포인트 URL과 전송을 조회합니다.
에이전트가 사용하는 전송에 관계없이 클라이언트는 동일한 핵심 A2A 작업을 통해 에이전트와 상호작용합니다.
| 작업 | 설명 |
|---|---|
SendMessage |
새 작업을 시작하거나 대화를 계속하기 위해 메시지를 보냅니다. 에이전트는 즉각적인 답장 또는 추적할 수 있는 작업을 반환합니다. |
SendStreamingMessage |
에이전트가 스트리밍을 지원하는 경우 에이전트가 작업할 때 메시지를 전송하고 실시간 상태 업데이트, 부분 답변, 결과를 스트리밍합니다. |
GetTask |
현재 상태를 확인하고 기존 태스크의 출력을 검색합니다. |
ListTasks |
에이전트가 지원하는 경우 대화 또는 프로젝트의 작업을 나열합니다. |
SubscribeToTask |
실행 중인 태스크에 다시 연결하여 태스크가 일시중지되거나 완료될 때까지 실시간 업데이트를 스트리밍합니다. |
CancelTask |
취소가 지원되는 경우 에이전트가 진행 중인 작업을 중지하도록 요청합니다. |
GetExtendedAgentCard |
인증된 클라이언트만 사용할 수 있는 추가 세부정보가 포함된 에이전트의 확장된 에이전트 카드를 가져옵니다. |
작업 수명 주기 및 멀티턴 상태
A2A는 다음 두 식별자를 사용하여 대화 연속성을 개별 실행 단위와 분리합니다.
- 컨텍스트 ID(
contextId): 원격 에이전트가 순차적 요청에서 대화 컨텍스트를 보존할 수 있도록 공유 세션 내에서 관련된 멀티턴 상호작용을 그룹화합니다. - 작업 ID(
taskId): A2A 클라이언트가 메시지를 보낼 때 생성되는 특정 비동기식 또는 동기식 작업 단위를 식별합니다.
원격 에이전트가 요청을 처리하면 작업은 다음 A2A 수명 주기 상태로 전환됩니다.
| 주 | 카테고리 | 설명 |
|---|---|---|
TASK_STATE_SUBMITTED |
활성 | 원격 에이전트가 요청을 수락하고 실행할 작업을 큐에 추가했습니다. |
TASK_STATE_WORKING |
활성 | 원격 에이전트가 작업을 위해 적극적으로 추론하거나 도구를 호출하거나 아티팩트를 생성하고 있습니다. |
TASK_STATE_INPUT_REQUIRED |
일시중지됨 | 동일한 taskId 및 contextId에 대한 후속 입력, 설명 또는 휴먼인더루프 확인을 기다리는 동안 실행이 일시중지됩니다. |
TASK_STATE_AUTH_REQUIRED |
일시중지됨 | 클라이언트가 다운스트림 리소스에 대한 인증 또는 사용자 동의 흐름을 완료할 때까지 실행이 일시중지됩니다. |
TASK_STATE_COMPLETED |
터미널 | 태스크가 성공적으로 완료되고 최종 응답 또는 출력 아티팩트를 반환했습니다. |
TASK_STATE_FAILED |
터미널 | 실행 또는 다운스트림 서비스 오류로 인해 태스크가 중지되었습니다. |
TASK_STATE_CANCELED |
터미널 | 작업이 완료되기 전에 취소되었습니다. |
TASK_STATE_REJECTED |
터미널 | 원격 에이전트가 요청된 작업을 실행하지 않았습니다. |
A2A 스킬, 독립형 스킬, MCP 도구
에이전트 레지스트리는 세 가지 고유한 기능 메커니즘을 색인 생성하므로 각 워크플로에 적합한 통합 패턴을 선택할 수 있습니다.
- 인라인 A2A 기술: 에이전트의
Agent검색 리소스에 있는skills필드에는 에이전트 카드 내에 삽입된id,name,description,tags,examples를 포함한 JSON 메타데이터가 포함됩니다. 인라인 A2A 기술은 조정자 에이전트가 A2A 전송을 통해 원격 에이전트에 위임할 수 있는 상위 수준 작업을 알립니다. - 독립형 스킬: Agent Registry의 독립적인
Skill및SkillRevision최상위 리소스에는SKILL.md파일의 안내와 선택적 스크립트가 포함된 버전이 지정된 ZIP 파일이 포함됩니다. 에이전트는 실행을 다른 에이전트에 위임하는 대신 독립형 기술을 자체 컨텍스트로 다운로드합니다. 인라인 A2A 기술과 독립형 기술을 완전히 비교하려면 독립형 기술과 A2A 기술의 차이점을 참고하세요. - MCP 도구:
McpServer검색 리소스의tools필드에는 등록된 MCP 서버에서 노출하는 정형 함수 스키마가 포함되어 있습니다. 에이전트는 이 서버를 직접 호출하여 데이터를 쿼리하거나 결정론적 작업을 실행합니다.
런타임 보안, 거버넌스, 에이전트 호출
에이전트 레지스트리는 A2A 에이전트를 검색하는 카탈로그 역할을 합니다. 런타임 인증, 승인, 콘텐츠 검사, 감사 로깅, 할당량 적용은 클라이언트 또는 조정자 에이전트가 대상 에이전트를 호출할 때 발생합니다.
- 대상 에이전트 엔드포인트 조회 및 호출: 에이전트 개발 키트(ADK) 또는 표준 HTTP 및 Python 클라이언트를 사용하여 대상 A2A 에이전트 엔드포인트를 조회하고 메시지를 전송합니다. 자세한 내용은 멀티 에이전트 시스템 빌드 및 A2A 에이전트 호출을 참조하세요.
- 인증 및 사용자 인증 정보 범위 지정: 에이전트 간 호출을 위해 OAuth 2.0 액세스 토큰, OpenID Connect(OIDC) ID 토큰, 워크로드 아이덴티티 제휴 또는 에이전트 아이덴티티 인증 관리자 바인딩을 구성합니다.
- 액세스 제어 및 거부 정책: 런타임 액세스 권한, Identity and Access Management(IAM) 거부 정책, Identity-Aware Proxy(IAP) 이그레스 정책을 시행합니다. 자세한 내용은 역할 및 권한을 참조하세요.
- 프롬프트 및 대답 검사: Model Armor와 Agent Gateway 통합 및 서비스 확장 프로그램 바인딩을 구성하여 프롬프트 인젝션 및 민감한 정보 노출을 감지하는 데 도움이 되도록 지원되는 A2A 프롬프트 및 대답 페이로드를 검사합니다.
- 감사 로깅 및 할당량: Agent Registry 감사 로깅에서 A2A 호출의 감사 레코드를 검사하고 할당량 및 시스템 한도에서 대상 에이전트 및 다운스트림 서비스 비율 할당량을 계획합니다.
다음 단계
- 에이전트 카드와 인라인 A2A 스킬에서 에이전트, 도구, 스킬을 검색합니다.
- ADK 또는 A2A 클라이언트를 사용하여 멀티 에이전트 시스템을 빌드하고 A2A 에이전트를 호출합니다.
- A2A 에이전트 카드의 JSON 스키마를 검토합니다.
- 독립형 및 인라인 A2A 기술을 비교합니다.