Skip to content

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 간 어떻게 대화하는지"를 규정하는 표준화된 프로토콜이 필요합니다. 이것이 바로 MCPA2A의 탄생 배경입니다.


1. Agent 프로토콜의 계층

구체적 프로토콜을 깊이 이해하기 전에, Agent 생태계의 통신 계층을 살펴보겠습니다:

계층프로토콜해결하는 문제비유
1Function CallAI가 로컬 함수를 호출하는 방법뇌가 명령을 내림
2MCPAI가 외부 도구와 데이터 소스에 연결하는 방법USB-C 인터페이스
3A2AAgent 간 협업 통신 방법기업용 메신저

이 표를 한 줄씩 해석

제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
GitHubgithub.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란 무엇인가?

What is MCP?
MCP (Model Context Protocol) is a unified standard introduced by Anthropic in November 2024 for connecting AI with external tools. It lets AI applications call tools, read resources, and use predefined prompts, giving AI practical "hands" and "eyes".
Three Core Capabilities
Capability
English
Role
Example
Tools
Tools
Functions AI can call
Check weather, send email, call APIs
Resources
Resources
Data AI can read
File content, database records, configuration
Prompts
Prompts
Predefined prompt templates
Code review templates, writing templates
When should you use MCP?
When AI needs to perform real actions
AI should not only answer questions, but also send emails, operate files, and call third-party APIs.
When AI needs access to private data
Read local files, query databases, or access internal business systems.
When tool integration should be standardized
Build once and reuse across AI applications such as Claude, Cursor, and Windsurf.
How do you use MCP?
1
Develop an MCP Server
Implement a server that provides tools, resources, and prompts according to the MCP spec.
2
Configure the AI app connection
Add the MCP Server configuration to your AI app, either local or remote.
3
Let AI call it automatically
AI discovers and calls suitable tools or reads resources based on the task.

3대 핵심 능력:

능력영문역할예시
도구ToolsAI가 호출할 수 있는 기능날씨 조회, 이메일 발송
리소스ResourcesAI가 읽을 수 있는 데이터파일 내용, 데이터베이스 레코드
프롬프트Prompts사전 정의된 프롬프트 템플릿코드 리뷰 템플릿, 글쓰기 템플릿

2.4 MCP의 내부 구현

MCP InternalsCommunication details of the client-server architecture
Why is MCP so popular?

Before MCP, AI could only read and respond. With MCP, AI can finally take action by operating programs and helping with real work.

How do you use MCP?

Using MCP is simple: configure an mcp.json file, then your IDE can use MCP tools.

1
Find an MCP Server
Find the MCP Server you need from an MCP directory or GitHub.
2
Configure mcp.json
Find the MCP config location in your AI editor, such as Cursor or Claude Desktop, and add the server configuration.
{
  "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"
      }
    }
  }
}
3
Restart the IDE
After restart, AI discovers and loads MCP tools automatically, so you can ask it to use them.
Are Skills replacing MCP?
As Skills become more common, many scenarios are starting to use Skills instead of the MCP protocol. Skills are lighter and easier to write for common tasks. MCP remains better for complex tool integrations and reuse across multiple clients. For simple operations, consider Skills first.
Common mcp.json locations
Cursor~/.cursor/mcp.json
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
Windsurf~/.windsurf/mcp.json
How do you implement an MCP Server?

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:

weather-mcp-server.js
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)
stdio vs HTTP+SSE transport
stdio (local process)

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.

HTTP + SSE (remote service)

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.

Communication Flow (4 Steps)
1Handshake (initialize)
When the MCP Server starts, it sends an initialize request to the client and declares protocol version and capabilities.
Server → Client
// 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"
    }
  }
}
2List tools (tools/list)
3Call tool (tools/call)
4Return result
Deep Dive: JSON-RPC 2.0 Message Format
Request Message Structure
{
  "jsonrpc": "2.0",           // protocol version
  "id": 1,                     // request ID used to match response
  "method": "tools/call",      // method name
  "params": { ... }            // parameter object
}
Response Message Structure
// Successful response
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": { ... }
}

// Error response
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32600,
    "message": "Invalid Request"
  }
}
JSON-RPC 2.0 is stateless. Every request includes an id so the client can match the response.
Deep Dive: Two Transport Modes
stdio (local process)
Used for local tools through standard input and output.
// Start MCP Server as a child process
npx @modelcontextprotocol/server-filesystem ./project

// Communicate through stdio
// stdin: receive requests
// stdout: send responses
HTTP + SSE (remote)
Used for remote services with long-lived push connections.
// 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 updates
Deep Dive: MCP Core APIs
initializeInitialize
Server declares protocol version and capabilities to the client.
tools/listTool list
Get all available tools provided by the server.
tools/callCall tool
Call a specific tool and receive the result.
resources/listResource list
Get accessible resources such as files and databases.
resources/readRead resource
Read content from a specific resource.
prompts/listPrompt templates
Get predefined prompt templates.

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
제안 주체Google
발표 일자2025년 4월 9일
공식 문서google.github.io/A2A
오픈소스 라이선스Apache 2.0
GitHubgithub.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란 무엇인가?

What is A2A?
A2A (Agent-to-Agent Protocol) is a communication standard introduced by Google in April 2025 for collaboration between agents. It lets agents from different vendors and frameworks discover each other, assign tasks, and exchange information, like an intercom for the AI world.
Core Concepts
Agent Card
Public metadata for each agent, including capability descriptions, version, and endpoint.
Task
A work unit passed between agents. It can include multi-turn dialogue and file attachments.
Message
Communication content between agents, supporting text, files, audio, and other modalities.
SSE (Server-Sent Events)
A server push mechanism used for real-time task progress updates.
When should you use A2A?
When multiple agents need to complete a complex task
One agent analyzes requirements, another writes code, and another tests the result.
When integrating agents from different vendors
Agents from Google, Anthropic, OpenAI, and others need to collaborate.
When task delegation and progress tracking are needed
A main agent assigns work to expert agents and receives live progress updates.
How do you use A2A?
1
Publish an Agent Card
Expose the agent capability description at /.well-known/agent.json.
2
Discover agents
Use the agents/get API to fetch another agent card and inspect capabilities.
3
Send a task
Use the tasks/send API to send work, optionally receiving progress through SSE.
4
Fetch the result
After completion, use the tasks/get API to retrieve the final result.

3대 핵심 개념:

개념영문역할비유
Agent CardAgent 명함Agent의 능력 설명직원 사원증
Task작업실행할 작업 단위작업 티켓
Message메시지Agent 간 통신 내용채팅 기록

3.4 A2A의 내부 구현

A2A InternalsCommunication details of the peer-to-peer architecture
What can A2A do?

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.

How do you use A2A?

A2A is still early and mainly driven by Google. To try it, you need to develop an agent service that supports the A2A protocol.

1
Implement the Agent Card endpoint
Expose /.well-known/agent.json in your agent service and declare capabilities and version.
2
Implement A2A APIs
Implement core APIs such as agents/get, tasks/send, and tasks/get.
3
Deploy and register the agent
Deploy the agent to a server and register it so other agents can discover it.
Current Status
A2A was released in April 2025 and is still evolving quickly. Google provides reference implementations, while the ecosystem is still being built. Follow the official docs for current progress.
Communication Flow (5 Steps)
1Discovery (agents/get)
Agents fetch each other Agent Cards over HTTP to understand capabilities and versions.
HTTP request
// 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"}
  ]
}
2Send task (tasks/send)
3Process task
4Push updates (SSE)
5Return result (tasks/get)
Deep Dive: Agent Card Format
An Agent Card is a JSON file, usually hosted at /.well-known/agent.json.
Agent Card Example
{
  "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"]
  }
}
With Agent Cards, agents can discover each other, understand capabilities and versions, and interoperate.
Deep Dive: HTTP + SSE Communication
Task Send (HTTP POST)
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" }]
  }
}
Real-time Push (SSE)
GET /tasks/task-001/sse HTTP/1.1
Authorization: Bearer {token}

event: progress
data: {"status": "processing", "progress": 50}

event: completed
data: {"status": "completed", "result": {...}}
SSE (Server-Sent Events) lets the server push messages, which works well for long-running task status updates.
Deep Dive: A2A Core APIs
GETagents/get
Fetch the target agent Agent Card and inspect capabilities.
POSTtasks/send
Send a task to the target agent and wait synchronously for the result.
POSTtasks/sendSubscribe
Send a task and subscribe to SSE progress updates.
GETtasks/get
Fetch task status and result by task ID.
GETtasks/cancel
Cancel a running task.
Deep Dive: Authentication
API Key
Simple authentication for internal agent communication.
Authorization: Bearer sk-xxxxx
# or
Authorization: ApiKey sk-xxxxx
OAuth 2.0
Enterprise authentication with token refresh and permission control.
Authorization: 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 핵심 차이

차원MCPA2A
제안 주체Anthropic (2024.11)Google (2025.04)
포지셔닝AI와 도구의 연결Agent와 Agent의 협업
통신 범위Client-ServerPeer-to-Peer
데이터 형식JSON-RPC 2.0HTTP + JSON
비유USB-C 인터페이스기업용 메신저

4.2 양자의 관계

MCP와 A2A는 경쟁 관계가 아니라 상호 보완 관계입니다:

MCP vs A2APositioning differences between two major AI Agent protocols
Imagine a large shopping mall: MCP is like a unified outlet standard, so every tool can plug in; A2A is like an internal intercom system, so different agents can coordinate with each other.
MCPTool connection
Model Context Protocol
A protocol that connects AI applications with external tools and data sources, so tool builders can write once and support many AI apps.
InitiatorAnthropic
Released2024.11
ArchitectureClient-Server
Data formatJSON-RPC 2.0
AnalogyUSB-C: one interface for many devices
A2AAgent collaboration
Agent-to-Agent Protocol
A communication protocol that lets agents from different vendors and frameworks collaborate smoothly.
InitiatorGoogle
Released2025.04
ArchitecturePeer-to-Peer
Data formatHTTP + JSON
AnalogyWork chat: coworkers can assign tasks and talk
Core idea:MCP and A2A are complementary, not competing. MCP answers "how can AI access external capabilities"; A2A answers "how can multiple AI agents collaborate".

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. 요약

핵심 포인트

프로토콜한 줄 이해발표 일자제안 주체적용 시나리오
MCPAI가 도구를 연결하는 "USB-C"2024.11Anthropic도구 통합, 데이터 소스 연결
A2AAgent 협업의 "기업용 메신저"2025.04Google다중 Agent 협업, 작업 위임

핵심 인사이트:

  1. MCP는 "AI가 어떻게 외부 능력을 획득하는가"의 문제를 해결
  2. A2A는 "여러 AI가 어떻게 협업하는가"의 문제를 해결
  3. 양자는 상호 보완적이며, 미래에는 융합 사용될 가능성 있음
  4. 프로토콜 선택은 구체적 시나리오에 따라야 하며, 은탄환은 없음

참고 자료

  1. MCP 공식 문서: modelcontextprotocol.io
  2. MCP GitHub: github.com/modelcontextprotocol
  3. Anthropic 발표 블로그: "Introducing the Model Context Protocol" (2024-11-25)
  4. A2A 공식 문서: google.github.io/A2A
  5. A2A GitHub: github.com/google/A2A
  6. Google Cloud Blog: "Announcing the Agent-to-Agent Protocol" (2025-04-09)