위대한 AI 에이전트 프로토콜 경쟁: Function Calling vs. MCP vs. A2A
최근 AI 개발 세계를 주시해 왔다면, 아마 한 가지를 눈치챘을 것입니다: 이제 모두가 AI Agents에 대해 이야기하고 있습니다 — 단순히 똑똑한 챗봇이 아니라, 도구를 사용하고, API를 호출하며, 심지어 서로 협업할 수 있는 완전한 자율 프로그램을 말이죠. LangChain과 OpenAI는 “AI Agents”의 정의를 두고 논쟁까지 벌였습니다.
하지만 본격적인 AI Agent 시스템을 구축하기 시작하는 순간, 큰 골칫거리가 닥칩니다: Agents가 도구와 — 또는 서로와 — 함께 작동하는 명확하고 보편적인 방식이 없다는 것입니다.
현재 AI agent 아키텍처의 미래를 정의하기 위해 세 가지 주요 접근 방식이 경쟁하고 있습니다:
Function Calling: OpenAI의 선구적인 접근 방식 — LLM에게 주니어 개발자처럼 API 호출을 하도록 가르치는 것
MCP (Model Context Protocol): 모델과 서비스 전반에 걸쳐 표준 툴킷 인터페이스를 만들려는 Anthropic의 시도.
A2A (Agent-to-Agent Protocol): 서로 다른 Agents가 서로 대화하고 팀처럼 협업할 수 있게 해 주는 Google의 완전히 새로운 사양.
모든 주요 AI 플레이어 — OpenAI, Anthropic, Google — 는 이 표준을 정의하는 쪽이 미래 agent 생태계를 형성할 것이라고 조용히 베팅하고 있습니다.
기본적인 챗봇을 넘어서는 것을 구축하는 개발자에게 이러한 프로토콜을 이해하는 것은 단순히 흐름을 따라가는 문제가 아니라 — 앞으로 고통스러운 재작성을 피하는 문제입니다.
이 글에서 다룰 내용은 다음과 같습니다:
Function Calling이란 무엇인가 왜 도구 사용을 가능하게 했는가 — 하지만 왜 그것만으로는 충분하지 않은가.
MCP가 도구와 모델을 위한 진짜 프로토콜을 만들어 혼란을 해결하려는 방식.
A2A가 Agents를 외톨이가 아니라 팀처럼 함께 일하게 만들어 추가하는 것.
여러분이 실제로 그것들을 사용하는 것에 대해 어떻게 생각해야 하는지 (과장된 hype를 쫓느라 시간을 낭비하지 않으면서).
Function Calling: 성장통을 겪는 선구자
OpenAI가 대중화했고 이제 Meta, Google 및 다른 곳에서도 채택한 Function Calling은 LLM을 외부 도구와 연결하는 최초의 주류 접근 방식이었습니다. 이를 자연어 요청을 기반으로 API 호출을 작성하도록 LLM에게 가르치는 것으로 생각하면 됩니다.
Figure 1- Function calling workflow (Credit @Google Cloud)
그림 1: Function calling workflow (Credit @Google Cloud)
워크플로는 간단합니다:
사용자가 질문합니다("시애틀 날씨는 어때?")
LLM이 외부 데이터가 필요하다는 것을 인식합니다
미리 정의된 목록에서 적절한 함수를 선택합니다
JSON Schema에 따라 매개변수를 형식화합니다: 5
{
"location": "Seattle",
"unit": "celsius"
}
애플리케이션이 실제 API 호출을 실행합니다
LLM이 반환된 데이터를 응답에 통합합니다
개발자에게 Function Calling은 AI에게 따라 할 수 있는 API 레시피 요리책을 주는 것처럼 느껴집니다. 단일 모델을 사용하는 간단한 애플리케이션에서는 거의 플러그 앤 플레이에 가깝습니다. 애플리케이션 구축에 function calling을 사용하는 방법을 더 알아보려면 다음 글을 확인하세요:
하지만 확장할 때는 상당한 단점이 있습니다: 모델 간 일관성이 없다는 것입니다. 각 LLM 제공업체는 function calling을 서로 다르게 구현합니다. Claude와 GPT를 모두 지원하고 싶으신가요? 별도의 function 정의를 유지하고 서로 다른 응답 형식을 처리해야 합니다.
이는 주방의 각 셰프에게 레스토랑 주문을 서로 다른 언어로 다시 써야 하는 것과 같습니다. 이 M×N 문제는 더 많은 모델과 도구를 추가할수록 빠르게 다루기 어려워집니다.
Function Calling은 또한 다단계 함수 체인에 대한 네이티브 지원이 부족합니다. 한 함수의 출력이 다른 함수의 입력으로 들어가야 한다면, 그 오케스트레이션은 직접 처리해야 합니다.
MCP (Model Context Protocol): AI와 도구를 위한 범용 번역기
MCP (Model Context Protocol)는 바로 이러한 확장성 문제를 해결합니다. Anthropic의 지원을 받고 Claude, GPT, Llama 등 다양한 모델 전반에서 지원이 확대되고 있는 MCP는 LLM이 외부 도구 및 데이터 소스와 상호작용하는 표준화된 방식을 도입합니다.
MCP의 작동 방식
MCP를 "AI 도구를 위한 USB 표준"이라고 생각해 보세요 — 호환성을 보장하는 범용 인터페이스입니다:
도구는 표준화된 형식을 사용해 자신의 기능을 알리며, 사용 가능한 작업, 필요한 입력, 예상 출력을 설명합니다
AI 모델은 이러한 설명을 읽고 도구를 사용하는 방법을 자동으로 이해할 수 있습니다
애플리케이션은 한 번만 통합하면 AI 생태계 전반에서 호환성을 확보합니다
MCP는 복잡한 M×N 통합 문제를 더 관리하기 쉬운 M+N 문제로 바꿉니다.
MCP 아키텍처
MCP는 네 가지 핵심 구성 요소를 갖춘 클라이언트-서버 모델을 사용합니다:
Figure 2- The MCP architecture (Credit @Anthropic)
Figure 2: MCP 아키텍처 (Credit @Anthropic)
MCP Hosts: 사용자가 AI와 상호작용하는 애플리케이션(예: Claude Desktop 또는 AI 강화 코드 에디터)
MCP Clients: 호스트와 서버 간 통신을 관리하는 커넥터
MCP Servers: MCP 표준을 통해 기능을 노출하는 도구 구현체
Data Sources: 정보를 제공하는 기반 파일, 데이터베이스, API 및 서비스
Function Calling이 여러 셰프에게 각기 다른 언어로 말해야 하는 것과 같다면, MCP는 주방에 범용 번역기를 두는 것과 같습니다. 도구를 한 번 정의하면, MCP 호환 모델이라면 어떤 모델이든 커스텀 코드 없이 사용할 수 있습니다. 이는 애플리케이션에 새 모델이나 도구를 추가하는 한계 비용을 극적으로 줄여 줍니다. 통합 문제로 골머리를 앓아 본 사람으로서, 이건 제 귀에 음악처럼 들립니다.
A2A (Agent-to-Agent Protocol): AI 에이전트를 위한 팀 코디네이터
Function Calling과 MCP가 모델-도구 상호작용에 집중하는 반면, Google이 도입한 A2A (Agent-to-Agent Protocol)는 다른 과제를 다룹니다: 여러 전문 에이전트가 효과적으로 협업하게 하려면 어떻게 해야 할까요?
AI 에이전트 아키텍처가 더 복잡해질수록, 단일 에이전트가 모든 것을 처리해서는 안 된다는 점이 금방 분명해집니다. 문서 요약에 특화된 에이전트, 데이터베이스 쿼리에 특화된 에이전트, 사용자 상호작용에 특화된 에이전트를 각각 둘 수 있습니다.
A2A는 서로 다른 Agents가 다음을 수행할 수 있게 해주는 경량의 개방형 프로토콜을 정의합니다:
서로를 발견하고 자신의 기능을 알리기,
가장 적합한 Agent에게 작업을 동적으로 위임하기,
진행 상황을 조율하고 실시간 업데이트를 안전하게 공유하기.
Figure 3- How A2A works (credit @Google)
Figure 3: A2A의 작동 방식 (credit @Google)
A2A는 작업을 관리하는 "클라이언트" 에이전트와 이를 실행하는 "원격" 에이전트 간의 통신을 촉진합니다. Function Calling이 에이전트에게 도구 접근 권한을 준다면, A2A는 에이전트들이 효과적인 팀을 구성할 수 있게 해줍니다.
소프트웨어 엔지니어를 채용하는 상황을 생각해 보세요: 채용 관리자는 자신의 에이전트에게 특정 기준에 맞는 후보자를 찾도록 지시할 수 있습니다. 그러면 이 에이전트는 전문 에이전트들과 협업해 후보자를 소싱하고, 인터뷰 일정을 잡고, 신원 조회를 지원합니다 — 이 모든 것이 통합 인터페이스를 통해 이루어집니다.
간단 비교: Function Calling vs MCP vs A2A
이 프로토콜들을 경쟁자로 보고 싶을 수 있지만, 실제로는 에이전트 생태계 퍼즐의 서로 다른 조각을 해결합니다:
Function Calling은 모델을 개별 도구에 연결합니다(제한적이지만 단순함)
MCP는 서로 다른 모델 전반에서 도구 접근을 표준화합니다(더 확장 가능)
A2A는 독립 에이전트 간 협업을 가능하게 합니다(더 높은 수준의 오케스트레이션)
| Function Calling | MCP | A2A | |
|---|---|---|---|
| 해결하는 문제 | 모델 → API 호출 | 모델 → 도구 접근, 표준화됨 | 에이전트 → 에이전트 협업 |
| 적합한 용도 | 간단한 실시간 쿼리 | 확장 가능한 도구 생태계 | 분산형 멀티 에이전트 워크플로 |
| 문제점 | 표준 없음, 복잡한 멀티 모델 지원 | 서버를 설정해야 함 | 아직 초기 단계, 제한적인 지원 |
| 실제 비유 | AI에게 전화 거는 법을 가르치는 것 | 어떤 스마트 앱이든 어떤 데이터베이스/API에도 쉽게 접근하는 것 | 봇 팀들이 동료처럼 함께 일하는 것 |
아키텍처 관점에서 MCP는 "내 에이전트가 어떤 도구를 사용할 수 있는가?"에 답하는 반면, A2A는 "내 에이전트들이 어떻게 함께 일할 수 있는가?"를 처리합니다.
이는 우리가 복잡한 소프트웨어를 구조화하는 방식과 닮아 있습니다. 잘 정의된 인터페이스를 가진 개별 컴포넌트들이 더 큰 시스템으로 조합되는 방식입니다. 효과적인 에이전트 생태계에는 도구 인터페이스(Function Calling/MCP)와 에이전트 간 통신(A2A)이 모두 필요합니다.
이것이 개발자에게 의미하는 것
그렇다면 AI로 개발하는 개발자로서, 이러한 경쟁 표준들을 어떻게 다뤄야 할까요?
간단한 애플리케이션의 경우: Function Calling은 특히 하나의 모델 제공업체만 사용한다면 LLM 애플리케이션에 도구 사용을 추가하는 가장 빠른 경로로 남아 있습니다.
교차 모델 호환성의 경우: 통합 작업을 중복하지 않고 더 넓은 모델 지원을 제공하는 MCP 도입을 고려하세요.
복잡한 멀티 에이전트 시스템의 경우: 에이전트 생태계가 성숙해짐에 따라 중요해질 수 있는 A2A를 주시하세요.
현명한 전략은 이러한 접근 방식을 계층화하는 것일 수 있습니다. 빠른 프로토타이핑에는 Function Calling을 사용하되, 더 나은 확장성을 위해 MCP 어댑터를 구현하고, 멀티 에이전트 워크플로에는 A2A 오케스트레이션을 사용하는 것입니다.
앞으로의 길
무엇이 "AI Agent"를 만드는지에 대한 논의는 여전히 진화 중입니다 — 때로는 OpenAI, Anthropic, LangChain 같은 회사들 사이에서도 논쟁이 벌어집니다.
하지만 정의와 관계없이 한 가지는 분명합니다. Function Calling, MCP, A2A 같은 표준들은 차세대 AI 애플리케이션의 기반을 마련하고 있습니다.
개발자에게 이러한 패턴을 일찍 이해하는 것은 작업을 미래에 대비시키는 투자입니다. 이것이 우리가 장난감 같은 데모에서 프로덕션 준비가 된 시스템으로 나아가는 방식입니다 — 대규모로 실제 문제를 해결하는 그런 시스템 말입니다. 에이전트 생태계는 빠르게 발전하고 있으며, 지금 이러한 프로토콜을 기반으로 구축한다는 것은 앞으로 다가올 것에 대비해 애플리케이션을 포지셔닝한다는 뜻입니다.
어떻게 생각하시나요? AI 프로젝트에서 어떤 프로토콜을 사용하고 계신가요? 하나의 표준이 승리할 것이라고 보시나요, 아니면 멀티 프로토콜의 미래를 준비하고 계신가요?
추가 자료
계속 읽기

Zilliz Cloud Now Available in AWS Asia Pacific (Seoul)
Zilliz Cloud is now available in AWS Seoul — low-latency vector search, in-country data residency, and one-step migration for Korean AI teams. 31 regions across 5 clouds.

Build for the Boom: Why AI Agent Startups Should Build Scalable Infrastructure Early
Explore strategies for developing AI agents that can handle rapid growth. Don't let inadequate systems undermine your success during critical breakthrough moments.

What is the K-Nearest Neighbors (KNN) Algorithm in Machine Learning?
KNN is a supervised machine learning technique and algorithm for classification and regression. This post is the ultimate guide to KNN.



