AI 에이전트 개발 분야를 팔로우하고 있다면, LangChain, CrewAI, AutoGen 같은 이름을 반드시 들어봤을 것입니다. 하지만 2025년 Google이 오픈소스로 공개한 **ADK(Agent Development Kit)**가 게임의 규칙을 바꾸고 있습니다—MCP 프로토콜 네이티브 지원, 그래프 실행 엔진, Gemini와의 깊은 통합을 하나의 프레임워크로 구현한 최초의 존재입니다.
이것은 피상적인 기능 소개가 아닙니다. 실전 심층 리뷰입니다. MCP 도구 통합, 워크플로우 오케스트레이션, 동적 라우팅이라는 세 가지 핵심 기능에 초점을 맞추고, 실제 코드로 Google ADK가 기존 에이전트 프레임워크를 정말 대체할 수 있는지 검증합니다.
1. Google ADK란? 왜 주목해야 하는가?
Google ADK 2.0은 Google이 오픈소스화한 코드 우선(code-first) AI 에이전트 개발 프레임워크로, 순수 Python으로 에이전트의 동작, 도구 호출, 멀티 에이전트 오케스트레이션 로직을 정의합니다.
LangChain / CrewAI / AutoGen과의 본질적 차이
| 관점 | Google ADK 2.0 | LangChain | CrewAI | AutoGen |
|---|---|---|---|---|
| 설계 철학 | 코드 우선 + 그래프 실행 엔진 | 체인 호출 + YAML 설정 | 역할 놀이 + 작업 위임 | 멀티 에이전트 대화 |
| MCP 지원 | ✅ 네이티브 내장 | ⚠️ 서드파티 플러그인 필요 | ❌ 없음 | ❌ 없음 |
| 워크플로우 오케스트레이션 | ✅ 그래프 구조 (순차/병렬/루프/조건) | ⚠️ LangGraph 별도 사용 | ⚠️ 순차 실행 중심 | ⚠️ 대화 기반 |
| 모델 바인딩 | Gemini 우선, 임의 모델 지원 | 모델 독립적 | 모델 독립적 | 모델 독립적 |
| Google 생태계 | ✅ Vertex AI / Cloud Run / BigQuery 네이티브 | ❌ | ❌ | ❌ |
| 타입 안전성 | ✅ 완전한 Python 타입 힌트 | ⚠️ 부분적 | ⚠️ 약함 | ⚠️ 약함 |
| 학습 곡선 | 보통 (그래프 실행 모델 이해 필요) | 가파름 | 낮음 | 보통 |
한 마디로: 이미 Gemini를 주력 모델로 결정했거나, MCP 프로토콜로 외부 도구와 연결해야 한다면, Google ADK가 현재 가장 매끄러운 선택입니다. 모델 독립적 유연성이 필요하다면, LangChain이 여전히 더 성숙한 선택입니다.
2. 핵심 기능 심층 분석
2.1 MCP 프로토콜 네이티브 지원—접착 코드와 작별
MCP(Model Context Protocol)는 Anthropic이 제안한 오픈 프로토콜로, AI 모델이 표준화된 방식으로 외부 도구와 데이터 소스를 호출할 수 있게 합니다. Google ADK는 네이티브 내장 MCP 클라이언트를 가진 최초의 주류 프레임워크입니다.
전통적 방식(LangChain 등)에서는 직접 MCP 클라이언트를 작성하고, 프로토콜 핸드셰이크를 처리하고, 직렬화/역직렬화를 관리해야 합니다:
# ❌ 전통적 방식: MCP 수동 통합 (의사 코드)
from mcp_client import MCPClient
client = MCPClient("http://localhost:3000")
tools = await client.list_tools()
# 각 MCP 도구를 수동으로 LangChain Tool로 래핑
langchain_tools = []
for tool in tools:
langchain_tools.append(
StructuredTool.from_function(
func=lambda **kwargs: client.call_tool(tool.name, kwargs),
name=tool.name,
description=tool.description,
)
)
Google ADK 방식—단 한 줄의 코드로 임의의 MCP 서버에 연결:
from google.adk.tools.mcp_tools import MCPToolset
from google.adk import Agent
# ✅ ADK 방식: 한 줄로 MCP 서버 연결
mcp_tools = MCPToolset.from_url("http://localhost:3000")
agent = Agent(
name="mcp_agent",
model="gemini-2.5-flash",
instruction="당신은 외부 도구를 사용할 수 있는 어시스턴트입니다.",
tools=[mcp_tools],
)
이는 커뮤니티에 있는 수천 개의 기존 MCP 서버—파일 시스템, 데이터베이스, API 게이트웨이, 브라우저 자동화—에 어댑터 코드를 작성하지 않고도 직접 연결할 수 있음을 의미합니다.
2.2 워크플로우 오케스트레이션—그래프 실행 엔진
ADK 2.0의 가장 강력한 기능은 Workflow 클래스—그래프 구조 기반 실행 엔진으로, 네 가지 오케스트레이션 모드를 지원합니다:
순차 실행
from google.adk import Agent, Workflow
# 세 개의 전문 에이전트
researcher = Agent(
name="researcher",
model="gemini-2.5-flash",
instruction="사용자 질문에 대한 정보를 수집하고 핵심 사실을 반환하세요.",
)
writer = Agent(
name="writer",
model="gemini-2.5-flash",
instruction="제공된 사실을 기반으로 간결한 기사를 작성하세요.",
)
reviewer = Agent(
name="reviewer",
model="gemini-2.5-flash",
instruction="기사의 품질을 검토하고, 오류를 수정하고, 표현을 최적화하세요.",
)
# 순차 파이프라인: 조사 → 작성 → 검토
pipeline = Workflow(
name="content_pipeline",
edges=[("START", researcher, writer, reviewer)],
)
병렬 실행 (Fan-out / Fan-in)
# 여러 차원을 병렬로 분석한 후 집계
sentiment_agent = Agent(name="sentiment", instruction="감성 성향을 분석하세요.")
topic_agent = Agent(name="topic", instruction="핵심 주제를 추출하세요.")
entity_agent = Agent(name="entity", instruction="주요 엔티티를 식별하세요.")
summary_agent = Agent(name="summary", instruction="위 분석 결과를 집계하세요.")
parallel_workflow = Workflow(
name="parallel_analysis",
edges=[
("START", sentiment_agent, topic_agent, entity_agent), # 팬아웃
(sentiment_agent, topic_agent, entity_agent, summary_agent), # 팬인
],
)
조건부 라우팅
from google.adk import Agent, Workflow
def route_by_category(ctx):
"""분류 결과에 따라 다른 처리 에이전트로 라우팅"""
category = ctx.state.get("category", "general")
if category == "technical":
return "tech_expert"
elif category == "billing":
return "billing_expert"
return "general_expert"
tech = Agent(name="tech_expert", instruction="기술적 문제를 처리합니다.")
billing = Agent(name="billing_expert", instruction="청구 문제를 처리합니다.")
general = Agent(name="general_expert", instruction="일반 문제를 처리합니다.")
routed_workflow = Workflow(
name="smart_router",
edges=[
("START", "classifier"), # 먼저 분류
("classifier", route_by_category, [tech, billing, general]),
],
)
루프 실행
# 반복 개선: 생성 → 평가 → 불만족 시 재생성
generator = Agent(name="generator", instruction="응답을 생성하세요.")
evaluator = Agent(
name="evaluator",
instruction="응답 품질을 평가하고 1-10 점수로 매기세요. 7점 미만이면 재생성을 요청하세요.",
)
loop_workflow = Workflow(
name="iterative_refinement",
edges=[
("START", generator, evaluator),
(evaluator, "retry_check", [generator, "END"]), # 조건부 루프
],
max_iterations=3, # 최대 3회 반복
)
2.3 LLM 기반 동적 라우팅
하드코딩된 조건부 라우팅 외에도, ADK는 LLM이 다음에 어떤 에이전트를 호출할지 스스로 결정하도록 지원하는 것도 가능합니다:
from google.adk import Agent
# 코디네이터 에이전트가 동적으로 위임 대상 결정
coordinator = Agent(
name="coordinator",
model="gemini-2.5-flash",
instruction="""당신은 작업 코디네이터입니다. 사용자 요구에 따라 적절한 전문가에게 작업을 위임하세요:
- 데이터 분석 질문 → data_analyst
- 코드 관련 질문 → code_expert
- 문서 작성 요구 → writer
위임 대상과 그 이유를 직접 출력하세요.""",
sub_agents=[data_analyst, code_expert, writer],
)
이 하이브리드 모드—결정론적 워크플로우 + LLM 동적 의사결정—는 ADK의 가장 독특한 설계입니다. 중요한 경로에서는 그래프 구조로 예측 가능성을 보장하고, 유연성이 필요한 노드에서는 LLM이 판단하도록 할 수 있습니다.
3. 빠른 시작 튜토리얼
3.1 설치
# 가상 환경 생성
python3 -m venv adk-env && source adk-env/bin/activate
# ADK 설치 (CLI 도구 포함)
pip install "google-adk[cli]"
# Gemini API 키 설정
export GEMINI_API_KEY="your-key-here"
3.2 첫 번째 MCP 에이전트
# my_agent/__init__.py
from google.adk import Agent
from google.adk.tools.mcp_tools import MCPToolset
# 파일 시스템 MCP 서버에 연결
fs_tools = MCPToolset.from_command(
command=["npx", "-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
)
root_agent = Agent(
name="file_assistant",
model="gemini-2.5-flash",
instruction="사용자의 파일 관리를 도와줍니다. 파일 목록, 읽기, 생성이 가능합니다.",
tools=[fs_tools],
)
# 인터랙티브 테스트 시작
adk run my_agent
# 또는 Web UI 시작
adk web my_agent
3.3 실전: 멀티 스텝 워크플로우 에이전트 구축
다음은 완전한 “연구 보고서 생성” 워크플로우입니다—정보 검색부터 보고서 생성까지, 완전 자동화됩니다:
from google.adk import Agent, Workflow
from google.adk.tools.mcp_tools import MCPToolset
# MCP 도구: 검색 엔진에 연결
search_tools = MCPToolset.from_url("http://localhost:3001")
# 1단계: 정보 수집
collector = Agent(
name="collector",
model="gemini-2.5-flash",
instruction="사용자 주제에 따라 3-5개의 핵심 정보 포인트를 검색하여 JSON 리스트로 반환하세요.",
tools=[search_tools],
)
# 2단계: 심층 분석
analyst = Agent(
name="analyst",
model="gemini-2.5-flash",
instruction="수집된 정보를 분석하고 핵심 인사이트와 트렌드를 추출하세요.",
)
# 3단계: 보고서 작성
writer = Agent(
name="writer",
model="gemini-2.5-flash",
instruction="분석 결과를 요약, 본문, 결론을 포함한 구조화된 보고서로 정리하세요.",
)
# 4단계: 품질 검토
reviewer = Agent(
name="reviewer",
model="gemini-2.5-flash",
instruction="보고서를 검토하세요: 사실 정확성, 논리적 일관성, 언어 품질을 확인하세요. 수정 제안을 제공하세요.",
)
# 워크플로우 조립
root_agent = Workflow(
name="research_pipeline",
edges=[
("START", collector, analyst, writer, reviewer),
],
)
작동 방식: 사용자가 주제를 입력 → 자동 검색 → 분석 → 보고서 작성 → 검토 → 최종 결과 출력. 전체 과정에서 사람의 개입이 필요 없으며, 각 단계의 출력이 자동으로 다음 단계의 입력이 됩니다.
4. 경쟁 제품과의 상세 비교
4.1 vs LangChain + LangGraph
LangGraph는 LangChain 생태계의 워크플로우 솔루션으로, 기능적으로 ADK Workflow와 유사합니다. 핵심 차이점:
- ADK: 하나의 프레임워크로 Agent + 도구 + 워크플로우 + MCP 처리
- LangChain + LangGraph: 여러 패키지를 조합해야 하고, 설정이 더 복잡하지만, 생태계가 더 풍부함
이미 LangChain 생태계를 깊이 사용하고 있다면, ADK로의 마이그레이션 비용이 낮지 않습니다. 하지만 신규 프로젝트라면, ADK의 “올인원” 경험이 분명히 더 매끄럽습니다.
4.2 vs CrewAI
CrewAI는 “역할 놀이” 스타일의 멀티 에이전트 협력을 잘하며, 매우 빠르게 배울 수 있습니다. 하지만 다음 시나리오에서는 ADK에 미치지 못합니다:
- 결정론적 실행 흐름이 필요한 경우 (CrewAI의 실행 순서는 LLM에 의해 결정되며, 예측 불가능)
- MCP 도구 통합이 필요한 경우 (CrewAI는 지원하지 않음)
- 조건부 분기 및 루프가 필요한 경우 (CrewAI는 순차 실행만 지원)
4.3 vs AutoGen
AutoGen의 핵심은 멀티 에이전트 대화 패턴으로, “토론형” 의사결정이 필요한 시나리오에 적합합니다. ADK는 “파이프라인형” 작업 처리에 더 적합합니다. 두 제품은 설계 철학이 다르며, 절대적인 우열은 없습니다.
5. 적합한 시나리오와 한계
가장 적합한 시나리오
- Google Cloud 기술 스택: 이미 Vertex AI, Cloud Run, BigQuery를 사용하고 있다면, ADK의 네이티브 통합으로 많은 어댑터 작업을 절약할 수 있습니다
- MCP 도구 생태계: 많은 외부 도구를 연결하고, 표준화된 프로토콜로 관리하고 싶은 경우
- 예측 가능한 워크플로우: 고객 서비스 파이프라인, 데이터 처리 파이프라인, 콘텐츠 생성 체인—결정론적 실행 순서가 필요한 시나리오
- 하이브리드 오케스트레이션: 일부 단계는 결정론적(그래프 구조)이고, 일부 단계는 유연함(LLM 라우팅)이 필요한 경우
현재 한계
- Gemini 바인딩 경향: 다른 모델도 지원하지만, 최상의 경험에는 여전히 Gemini API가 필요합니다
- 커뮤니티 생태계가 아직 성장 중: LangChain의 수천 개 통합과 비교하면, ADK의 서드파티 도구는 아직 적습니다
- 문서가 충분히 완비되지 않음: 일부 고급 기능(커스텀 미들웨어, 플러그인 시스템)의 문서가 아직 보완 중입니다
- Python / Java / Go만 지원: JavaScript/TypeScript 버전은 막 시작되어, 프론트엔드 통합이 불편합니다
6. FAQ
Q1: Google ADK는 무료인가요?
A: ADK 프레임워크 자체는 완전히 무료이고 오픈소스입니다(Apache 2.0 라이선스). 하지만 Gemini 모델 사용에는 Google AI API 비용이 필요하며, 무료 사용량이 제공됩니다. 다른 모델을 연결하여 비용을 피할 수도 있습니다.
Q2: ADK는 어떤 LLM 모델을 지원하나요?
A: Gemini 2.5 시리즈(Flash / Pro)에 네이티브 최적화되어 있습니다. 커스텀 Model Provider를 통해 OpenAI GPT-4o, Anthropic Claude, 로컬 Ollama 모델 등도 연결 가능합니다. 하지만 일부 고급 기능(도구 호출의 구조화된 출력 등)은 Gemini에서 가장 잘 작동합니다.
Q3: MCP 도구는 어디서 찾을 수 있나요?
A: MCP 프로토콜에는 이미 수천 개의 커뮤니티 기여 서버 구현이 있습니다. MCP Servers GitHub에서 공식 저장소를 찾을 수 있으며, 파일 시스템, 데이터베이스, 브라우저 자동화, Slack, GitHub 등 일반적인 시나리오를 커버합니다.
Q4: ADK 워크플로우와 LangGraph의 차이점은 무엇인가요?
A: 기능적으로 유사하며, 둘 다 그래프 구조 실행 엔진입니다. 차이점은 ADK는 내장 기능(설정 제로)인 반면, LangGraph는 추가 설치와 설정이 필요하다는 점입니다. ADK의 API가 더 간결하고, LangGraph의 시각적 디버깅 도구가 더 성숙합니다.
Q5: 프로덕션 환경 배포는 어떤 방식을 추천하나요?
A: 가장 간단한 방법은 Docker + Cloud Run입니다. ADK는 HTTP 서비스를 시작하는 내장 Runner.serve() 메서드를 제공하며, Dockerfile과 함께 컨테이너화 배포가 가능합니다. 대규모 시나리오에서는 Vertex AI Agent Engine을 추천하며, 스케일링과 모니터링을 자동 처리합니다.
7. 총평
Google ADK 2.0은 현재 MCP 프로토콜 지원이 가장 우수한 에이전트 프레임워크이며, 다른 제품이 따라올 수 없습니다. 그 워크플로우 오케스트레이션 기능—순차, 병렬, 루프, 조건부 라우팅—은 복잡한 에이전트 파이프라인을 예측 가능하고 테스트 가능하게 만듭니다.
추천 지수: ⭐⭐⭐⭐ (4/5)
감점 항목: Gemini 외 모델에 대한 지원이 아직 매끄럽지 않으며, 커뮤니티 생태계가 LangChain에 비해 여전히 차이가 있습니다.
한 마디 추천: Gemini를 사용하고 + MCP가 필요하고 + 결정론적 워크플로우가 필요하다면, ADK가 현재 최적의 해결책입니다. 그렇지 않다면, LangChain이 여전히 더 보편적인 선택입니다.
관련 리소스:
더 읽어보기: