AI Agent 프로토콜 (MCP & A2A)
핵심 질문
AI Agent는 어떻게 외부 세계와 "대화"할까? 인터넷에 HTTP 프로토콜이 필요하듯, AI Agent도 표준화된 통신 프로토콜이 필요합니다. 이 장에서는 가장 주류인 두 Agent 프로토콜인 MCP와 A2A를 소개합니다. 각각 AI와 도구, Agent 간 통신 문제를 해결합니다.
0. 프로토콜이란?
컴퓨터 분야에서 프로토콜(Protocol) 은 서로 다른 시스템, 프로그램이 상호 "이해"하고 "통신"할 수 있게 하는 표준화된 규칙과 약속입니다.
0.1 왜 프로토콜이 필요한가?
상상해 보세요: 친구에게 택배를 보내려면 주소를 작성해야 합니다. 모든 사람이 주소 형식을 다르게 쓴다면 택배 기사는 배송할 수 없습니다. 프로토콜은 "주소를 어떻게 쓰는지"에 대한 표준을 정한 것입니다——도, 시, 구, 거리, 건물 번호를 이 형식으로 쓰면 누구나 이해할 수 있습니다.
컴퓨터도 마찬가지입니다. 두 프로그램이 통신하려면 반드시 다음을 약속해야 합니다:
- 데이터 형식은 무엇인가? (JSON? 바이너리?)
- 어떻게 연결을 수립하는가? (핸드셰이크 과정)
- 오류 발생 시 어떻게 하는가? (오류 처리)
0.2 컴퓨터에서 흔한 프로토콜
| 프로토콜 | 역할 | 매일 사용 중 |
|---|---|---|
| HTTP | 웹페이지 전송 프로토콜 | 브라우저로 웹페이지 열기 |
| HTTPS | 암호화된 HTTP | 인터넷 뱅킹, 결제 페이지 |
| TCP/IP | 인터넷 기반 프로토콜 | 모든 네트워크 통신 |
| DNS | 도메인 해석 프로토콜 | google.com을 IP 주소로 변환 |
| SMTP | 메일 발송 프로토콜 | 이메일 보내기 |
| WebSocket | 양방향 실시간 통신 | 채팅 앱, 온라인 게임 |
| SSH | 안전한 원격 로그인 | 서버 연결 |
| FTP | 파일 전송 프로토콜 | 파일 업로드/다운로드 |
이 프로토콜들은 인터넷의 기초를 구성합니다. 이것들이 없으면 웹페이지를 보거나, 이메일을 보내거나, 동영상을 볼 수 없습니다.
0.3 프로토콜의 가치
프로토콜의 핵심 가치는 표준화와 상호운용성입니다:
- 표준화: 모두가 동일한 규칙으로 일하면 소통 비용이 줄어듭니다
- 상호운용성: 서로 다른 업체, 서로 다른 기술 스택의 시스템이 원활하게 연결됩니다
예를 들어 HTTP 프로토콜은 Chrome 브라우저가 Nginx 서버에 접근할 수 있게 하고, Python 크롤러가 Java 웹사이트의 데이터를 수집할 수 있게 합니다. Chrome과 Nginx가 서로 "알 필요" 없이, 모두 HTTP 프로토콜만 준수하면 됩니다.
0.4 AI Agent도 프로토콜이 필요하다
AI Agent가 진정으로 "일을 하려면" 다음이 필요합니다:
- 외부 도구 호출 (날씨 확인, 이메일 발송, 데이터베이스 조작)
- 다른 Agent와 협업 (분업 협력으로 복잡한 작업 완료)
이를 위해 "AI가 어떻게 도구를 호출하는지", "Agent 간 어떻게 대화하는지"를 규정하는 표준화된 프로토콜이 필요합니다. 이것이 바로 MCP와 A2A의 탄생 배경입니다.
1. Agent 프로토콜의 계층
구체적 프로토콜을 깊이 이해하기 전에, Agent 생태계의 통신 계층을 살펴보겠습니다:
| 계층 | 프로토콜 | 해결하는 문제 | 비유 |
|---|---|---|---|
| 1 | Function Call | AI가 로컬 함수를 호출하는 방법 | 뇌가 명령을 내림 |
| 2 | MCP | AI가 외부 도구와 데이터 소스에 연결하는 방법 | USB-C 인터페이스 |
| 3 | A2A | Agent 간 협업 통신 방법 | 기업용 메신저 |
이 표를 한 줄씩 해석
제1층(Function Call): 대형 모델의 가장 기본적인 능력——구조화된 데이터(JSON)를 출력하여 함수 실행을 트리거합니다. 이는 "프로토콜"의 기초이지만, 그 자체는 표준 프로토콜이라기보다 하나의 능력에 가깝습니다.
제2층(MCP): Model Context Protocol, Anthropic이 2024년 11월에 발표. AI와 외부 도구, 데이터 소스의 연결 방식을 표준화했습니다. 마치 USB-C가 모든 기기의 충전 인터페이스를 통일한 것과 같습니다.
제3층(A2A): Agent-to-Agent Protocol, Google이 2025년 4월에 발표. 서로 다른 Agent가 상호 발견, 통신, 협업할 수 있게 합니다. 마치 기업용 메신저가 동료 간에 작업을 할당하고 대화할 수 있게 하는 것과 같습니다.
이 장에서는 제2, 3층의 두 공식 프로토콜인 MCP와 A2A에 집중합니다.
2. MCP (Model Context Protocol)
2.1 프로토콜 기본 정보
| 항목 | 내용 |
|---|---|
| 전체 명칭 | Model Context Protocol |
| 제안 주체 | Anthropic |
| 발표 일자 | 2024년 11월 25일 |
| 공식 문서 | modelcontextprotocol.io |
| 오픈소스 라이선스 | MIT License |
| GitHub | github.com/modelcontextprotocol |
왜 "Context Protocol"이라고 부를까?
Context(컨텍스트) 는 대형 모델이 작업을 이해하는 핵심입니다. MCP의 핵심 아이디어는: AI가 필요한 컨텍스트 정보를 동적으로 획득할 수 있게 하는 것, 모든 정보를 Prompt에 구겨 넣는 것이 아닙니다.
예를 들어, AI가 파일을 읽어야 할 때 파일 내용을 복사해서 붙여넣을 필요 없이, MCP를 통해 직접 파일 시스템에 접근합니다.
2.2 발표 배경
2024년, Claude 3.5 Sonnet 출시와 함께 Anthropic은 한 가지 문제를 발견했습니다: 각 도구마다 개별적으로 통합해야 한다는 것.
상상해 보세요:
- AI가 GitHub 저장소를 읽게 하려면 → GitHub 통합 코드 작성
- AI가 데이터베이스를 조회하게 하려면 → 데이터베이스 통합 코드 작성
- AI가 파일 시스템을 조작하게 하려면 → 파일 시스템 통합 코드 작성
각 통합마다 비슷한 코드를 반복 작성해야 합니다: 인증, 오류 처리, 데이터 변환...
Anthropic은 공식 블로그에서 이렇게 썼습니다:
"We're introducing the Model Context Protocol (MCP), an open protocol that standardizes how applications provide context to LLMs."
핵심 목표: 도구 개발자가 한 번 코드를 작성하면 모든 MCP 지원 AI 애플리케이션에서 사용할 수 있게 하는 것.
2.3 MCP란 무엇인가?
3대 핵심 능력:
| 능력 | 영문 | 역할 | 예시 |
|---|---|---|---|
| 도구 | Tools | AI가 호출할 수 있는 기능 | 날씨 조회, 이메일 발송 |
| 리소스 | Resources | AI가 읽을 수 있는 데이터 | 파일 내용, 데이터베이스 레코드 |
| 프롬프트 | Prompts | 사전 정의된 프롬프트 템플릿 | 코드 리뷰 템플릿, 글쓰기 템플릿 |
2.4 MCP의 내부 구현
Before MCP, AI could only read and respond. With MCP, AI can finally take action by operating programs and helping with real work.
Using MCP is simple: configure an mcp.json file, then your IDE can use MCP tools.
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/home/user/projects"
]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "your-token-here"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://user:pass@localhost/db"
}
}
}
}Suppose you have a weather API and want to wrap it as an MCP Server that AI can call. This Node.js example shows the shape:
import { Server } from '@modelcontextprotocol/sdk/server/index.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
// 1. Create MCP Server
const server = new Server({
name: 'weather-server',
version: '1.0.0'
}, {
capabilities: { tools: {} }
})
// 2. Define tool list
server.setRequestHandler('tools/list', async () => ({
tools: [{
name: 'get_weather',
description: 'Get weather for a city',
inputSchema: {
type: 'object',
properties: {
city: { type: 'string', description: 'City name' }
},
required: ['city']
}
}]
}))
// 3. Implement tool call logic
server.setRequestHandler('tools/call', async (request) => {
const { name, arguments: args } = request.params
if (name === 'get_weather') {
// Call your weather API
const response = await fetch(
`https://api.weather.com/v1/current?city=${args.city}`
)
const data = await response.json()
return {
content: [{
type: 'text',
text: JSON.stringify(data)
}]
}
}
})
// 4. Start service through stdio
const transport = new StdioServerTransport()
await server.connect(transport)The MCP Server runs as a child process and communicates through standard input and output.
Pros: simple, secure, and suitable for local tools.
Cons: local only; no remote access.
The MCP Server runs as an HTTP service and supports SSE pushes.
Pros: remote access and sharing across multiple clients.
Cons: requires server deployment and authentication.
// Server sends an initialize request
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {
"tools": {},
"resources": {},
"prompts": {}
},
"serverInfo": {
"name": "filesystem",
"version": "1.0.0"
}
}
}Deep Dive: JSON-RPC 2.0 Message Format
{
"jsonrpc": "2.0", // protocol version
"id": 1, // request ID used to match response
"method": "tools/call", // method name
"params": { ... } // parameter object
}// Successful response
{
"jsonrpc": "2.0",
"id": 1,
"result": { ... }
}
// Error response
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32600,
"message": "Invalid Request"
}
}Deep Dive: Two Transport Modes
// Start MCP Server as a child process
npx @modelcontextprotocol/server-filesystem ./project
// Communicate through stdio
// stdin: receive requests
// stdout: send responses// HTTP transport with Server-Sent Events
POST /mcp HTTP/1.1
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": { ... }
}
// SSE long connection for push updates
GET /mcp/sse HTTP/1.1
// Continuously receive server updatesDeep Dive: MCP Core APIs
2.5 비유로 이해하기: USB-C 인터페이스
MCP는 마치 USB-C 인터페이스와 같습니다:
- 예전: 각 기기마다 자체 충전 포트가 있었음 (원형, 평면형, 마그네틱...)
- 지금: USB-C가 모든 기기의 충전과 데이터 전송을 통일
- MCP: AI와 모든 도구의 연결 방식을 통일
도구 개발자는 MCP Server를 한 번만 구현하면, 모든 MCP 지원 AI 애플리케이션(Claude, Cursor, Windsurf 등)에서 바로 사용할 수 있습니다.
2.6 MCP의 대표적 응용 시나리오
| 시나리오 | 설명 | 예시 |
|---|---|---|
| 로컬 파일 조작 | AI가 로컬 파일 읽기/수정 | 코드베이스 읽기, 로그 파일 분석 |
| 데이터베이스 쿼리 | AI가 직접 데이터베이스 쿼리 | SQL 쿼리, 데이터 분석 |
| API 호출 | AI가 서드파티 서비스 호출 | GitHub API, Slack, 이메일 |
| 개발 도구 통합 | AI가 개발 도구 사용 | Git 조작, 터미널 명령 |
실제 사례:
- Cursor/Windsurf: MCP로 파일 시스템, Git, 터미널 연결
- Claude Desktop: MCP로 노트 앱, 이메일 클라이언트 연결
- 자동화 스크립트: AI가 자동화 작업 실행(백업, 배포, 데이터 동기화)
3. A2A (Agent-to-Agent Protocol)
3.1 프로토콜 기본 정보
| 항목 | 내용 |
|---|---|
| 전체 명칭 | Agent-to-Agent Protocol |
| 제안 주체 | |
| 발표 일자 | 2025년 4월 9일 |
| 공식 문서 | google.github.io/A2A |
| 오픈소스 라이선스 | Apache 2.0 |
| GitHub | github.com/google/A2A |
왜 Google이 제안했을까?
Google은 Cloud Next 2025 컨퍼런스에서 A2A를 발표했으며, 이는 기업용 AI 전략과 밀접한 관련이 있습니다.
Google의 견해: 미래의 기업 AI는 단일 슈퍼 Agent가 아니라 여러 전문 Agent의 협업——어떤 것은 데이터 분석, 어떤 것은 코드 생성, 어떤 것은 문서 처리를 담당하는 것입니다.
이 Agent들은 표준화된 방식으로 상호 통신할 필요가 있으며, 바로 여기서 A2A가 탄생했습니다.
3.2 발표 배경
MCP가 "AI가 도구에 연결하는 방법"을 해결했지만, 또 다른 문제가 남았습니다: 여러 Agent가 어떻게 협업할 것인가?
상상해 보세요:
- Agent A는 "요구사항 분석 전문가"
- Agent B는 "코드 생성 전문가"
- Agent C는 "테스트 전문가"
사용자가 "로그인 기능을 개발해 줘"라고 말하면:
Agent A가 요구사항을 분석한 후 작업을 Agent B에 할당해야 하고, Agent B가 코드를 작성한 후 Agent C가 테스트해야 합니다. 이들 사이에서 어떻게 통신할까?
Google은 공식 블로그에서 이렇게 썼습니다:
"A2A is an open protocol that enables AI agents to communicate with each other, facilitating collaboration across different frameworks and vendors."
핵심 목표: 서로 다른 업체, 서로 다른 프레임워크로 개발된 Agent가 원활하게 협업할 수 있게 하는 것.
3.3 A2A란 무엇인가?
3대 핵심 개념:
| 개념 | 영문 | 역할 | 비유 |
|---|---|---|---|
| Agent Card | Agent 명함 | Agent의 능력 설명 | 직원 사원증 |
| Task | 작업 | 실행할 작업 단위 | 작업 티켓 |
| Message | 메시지 | Agent 간 통신 내용 | 채팅 기록 |
3.4 A2A의 내부 구현
A2A lets multiple AI agents collaborate instead of working alone. A complex task can be assigned to specialized agents, each doing what it is best at.
A2A is still early and mainly driven by Google. To try it, you need to develop an agent service that supports the A2A protocol.
// Agent A fetches Agent B's Agent Card
GET /.well-known/agent.json HTTP/1.1
Host: agent-b.company.com
// Response
{
"name": "Code Agent",
"description": "Professional code generation agent",
"url": "https://agent-b.company.com",
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": true
},
"skills": [
{"id": "code-gen", "name": "Code generation"},
{"id": "code-review", "name": "Code review"}
]
}Deep Dive: Agent Card Format
{
"name": "Code Generation Agent",
"description": "Professional frontend and backend code generation agent",
"url": "https://code-agent.company.com",
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": true
},
"skills": [
{
"id": "frontend",
"name": "Frontend development",
"description": "React/Vue/Angular"
},
{
"id": "backend",
"name": "Backend development",
"description": "Node/Python/Go"
}
],
"authentication": {
"schemes": ["Bearer", "OAuth2"]
}
}Deep Dive: HTTP + SSE Communication
POST /tasks/send HTTP/1.1
Host: agent-b.company.com
Content-Type: application/json
Authorization: Bearer {token}
{
"id": "task-001",
"message": {
"role": "user",
"parts": [{ "type": "text", "text": "Write a login endpoint" }]
}
}GET /tasks/task-001/sse HTTP/1.1
Authorization: Bearer {token}
event: progress
data: {"status": "processing", "progress": 50}
event: completed
data: {"status": "completed", "result": {...}}Deep Dive: A2A Core APIs
Deep Dive: Authentication
Authorization: Bearer sk-xxxxx
# or
Authorization: ApiKey sk-xxxxxAuthorization: Bearer {access_token}
# refresh token supported
POST /oauth/token
{
"grant_type": "refresh_token",
"refresh_token": "xxx"
}3.5 비유로 이해하기: 기업용 메신저
A2A는 마치 기업용 메신저와 같습니다:
- Agent Card: 각자의 명함, 이름, 부서, 직무 표시
- 작업 할당: @누군가, 작업 할당
- 채팅 소통: 작업 실행 중 언제든지 소통 가능
- 작업 추적: 작업 진행 상황과 상태 확인 가능
서로 다른 Agent는 서로 다른 동료와 같으며, A2A가 이들이 협업하여 복잡한 프로젝트를 완료할 수 있게 합니다.
3.6 A2A의 대표적 응용 시나리오
| 시나리오 | 설명 | 예시 |
|---|---|---|
| 소프트웨어 개발 | 여러 Agent 협업으로 개발 작업 완료 | 요구분석→코드→테스트→배포 |
| 기업 워크플로우 | 여러 부서 Agent 협업으로 업무 처리 | HR Agent + 재무 Agent + 법무 Agent |
| 지능형 고객 서비스 | 여러 전문 Agent 분업 처리 | 접수→답변→전환→기록 |
| 데이터 분석 | 여러 Agent 협업으로 데이터 분석 | 수집→정제→분석→시각화→보고 |
실제 사례:
- Google Agent Space: 기업 내 여러 Agent 협업으로 문서, 이메일, 일정 처리
- 소프트웨어 개발 팀: 요구사항 Agent → 코드 Agent → 테스트 Agent → 배포 Agent
- 지능형 고객 서비스 시스템: 접수 Agent → 전문 답변 Agent → 인공 전환 Agent
4. MCP vs A2A: 비교와 관계
4.1 핵심 차이
| 차원 | MCP | A2A |
|---|---|---|
| 제안 주체 | Anthropic (2024.11) | Google (2025.04) |
| 포지셔닝 | AI와 도구의 연결 | Agent와 Agent의 협업 |
| 통신 범위 | Client-Server | Peer-to-Peer |
| 데이터 형식 | JSON-RPC 2.0 | HTTP + JSON |
| 비유 | USB-C 인터페이스 | 기업용 메신저 |
4.2 양자의 관계
MCP와 A2A는 경쟁 관계가 아니라 상호 보완 관계입니다:
4.3 어떻게 선택할까?
| 시나리오 | 선택 |
|---|---|
| AI가 로컬 함수나 도구를 호출하게 하기 | Function Call |
| 서드파티 도구 사용(데이터베이스, API, 파일 시스템) | MCP |
| 다중 Agent 협업 시스템 구축 | A2A |
| 도구 통합과 다중 Agent 협업이 동시에 필요 | MCP + A2A |
5. 프로토콜의 미래 트렌드
5.1 생태계 발전
MCP 생태계(2025년 초 기준):
- 공식 제공 Server: 파일 시스템, SQLite, Git, PostgreSQL 등
- 커뮤니티 기여 Server: Slack, Notion, Figma, Stripe 등
- MCP 지원 애플리케이션: Claude Desktop, Cursor, Windsurf, Zed 등
A2A 생태계(출시 초기):
- Google 자체 Agent 제품이 최초 지원
- 오픈소스 커뮤니티에서 다양한 언어 SDK 개발 중
- 기업용 애플리케이션 탐색 중
5.2 표준화 과정
현재 Agent 프로토콜은 아직 "전국시대"라 할 수 있습니다:
- MCP와 A2A가 가장 주류인 두 가지
- ANP, AGP 등 기타 신흥 프로토콜도 존재
- 미래에는 융합되거나 통일될 가능성 있음
인터넷의 발전에 비유하면:
- 초기: 다양한 근거리 통신망 프로토콜이 공존
- 이후: TCP/IP가 표준으로 자리잡음
- 현재: Agent 프로토콜도 통일을 향해 갈 수 있음
6. 요약
핵심 포인트
| 프로토콜 | 한 줄 이해 | 발표 일자 | 제안 주체 | 적용 시나리오 |
|---|---|---|---|---|
| MCP | AI가 도구를 연결하는 "USB-C" | 2024.11 | Anthropic | 도구 통합, 데이터 소스 연결 |
| A2A | Agent 협업의 "기업용 메신저" | 2025.04 | 다중 Agent 협업, 작업 위임 |
핵심 인사이트:
- MCP는 "AI가 어떻게 외부 능력을 획득하는가"의 문제를 해결
- A2A는 "여러 AI가 어떻게 협업하는가"의 문제를 해결
- 양자는 상호 보완적이며, 미래에는 융합 사용될 가능성 있음
- 프로토콜 선택은 구체적 시나리오에 따라야 하며, 은탄환은 없음
참고 자료
- MCP 공식 문서: modelcontextprotocol.io
- MCP GitHub: github.com/modelcontextprotocol
- Anthropic 발표 블로그: "Introducing the Model Context Protocol" (2024-11-25)
- A2A 공식 문서: google.github.io/A2A
- A2A GitHub: github.com/google/A2A
- Google Cloud Blog: "Announcing the Agent-to-Agent Protocol" (2025-04-09)