ADK(Agent Development Kit) 관련

ADK Tool - MCP

alienbuddy 2025. 7. 7. 09:26

MCP(Model Context Protocol)와 ADK 통합 요약

🔎 MCP란?

MCP (Model Context Protocol) 는 LLM이 외부 시스템(도구, API, 파일 등)과 표준화된 방식으로 통신할 수 있게 도와주는 프로토콜입니다.

  • Client-Server 구조
    • MCP 서버: 도구와 프롬프트를 등록
    • MCP 클라이언트: 도구를 요청하고 실행
  • ADK에서는 MCP 서버의 도구를 직접 사용할 수 있고,
    반대로 ADK 자체 도구를 MCP 서버로 노출할 수도 있음.

🧩 ADK와 MCP 통합 방식 두 가지

1. 기존 MCP 서버를 ADK Agent에서 사용하는 경우

ADK Agent가 MCP 클라이언트 역할

🔧 사용 도구: MCPToolset

  • 외부 MCP 서버에 연결하여 툴을 탐색하고, ADK 툴로 래핑하여 사용 가능하게 함.

✅ 특징

  • 연결 자동 관리 (StdioServerParameters 또는 SseServerParams)
  • 툴 자동 탐색 (list_tools)
  • 툴 호출 중계 (call_tool)
  • 선택적 필터링 가능: tool_filter 사용

📌 예제

  • 파일 시스템 MCP 서버: 로컬 폴더 내 파일 읽기/목록 확인 등
  • Google Maps MCP 서버: 경로 안내, 장소 검색 등 (Google API 키 필요)

2. ADK 툴을 MCP 서버로 노출하는 경우

ADK가 MCP 서버 역할

🧱 구성 요소

  • FunctionTool(load_web_page) 등 ADK 툴을 래핑
  • @app.list_tools(): ADK 툴을 MCP 포맷으로 변환하여 공개
  • @app.call_tool(): 툴 호출 요청을 받아 실제 ADK 툴을 실행
  • MCP Tool 포맷 변환: adk_to_mcp_tool_type 유틸리티 사용

📌 예제

  • load_web_page 툴을 외부 MCP 클라이언트에서 호출 가능하도록 MCP 서버로 구성

🛠 비 adk web 환경에서 MCP 사용하는 경우

자체 UI 또는 독립 실행 환경에서 ADK + MCP 통합

주요 변경 사항

  • MCP Toolset은 비동기 초기화 필요
  • exit_stack 또는 명시적 .close()로 연결 종료 처리 필수
  • get_agent_async() 함수 구조로 비동기 agent 생성 필요

3. MCP 통합 시 주의사항

항목                                      설명

도구 호출 구조 ADK Agent → MCPToolset → MCP Server (→ ADK Tool)
비동기 처리 MCPToolset 및 Server 핸들러는 async def 필수
지속 연결 관리 MCP는 상태 유지형 (stateless REST API와 다름)
서버 배포 시 주의 서버 세션 지속 → 부하 분산/세션 유지 고려 필요
Stdio vs Sse 로컬은 StdioServerParameters, 원격은 SseServerParams 사용
종료 처리 MCPToolset .close() 반드시 호출하여 자원 반환 필요

🔐 MCP 관련 고려사항 요약

항목설명
ADK Tool vs MCP Tool ADK는 로컬 Python 객체, MCP는 프로토콜 기반 원격 호출 도구
비동기 기반 MCP/ADK 둘 다 asyncio 기반 구조 필수
상태 유지 MCP는 지속적인 연결 유지 필요 (REST API와 달리)
배포 시 고려사항 서버 세션 유지, 부하 분산 등 인프라 고려 필요
Tool 호출 흐름 Agent → MCPToolset → MCP 서버 (→ ADK Tool)

'ADK(Agent Development Kit) 관련' 카테고리의 다른 글

ADK Tool - 인증 도구  (1) 2025.07.09
ADK Tool - OpenAPI  (2) 2025.07.08
ADK Tool - Google Cloud Tools  (0) 2025.07.05
ADK Tool - Third-Party Tool  (1) 2025.07.04
ADK Tool - Built-in Tools  (1) 2025.07.03