Google의 Agent Development Kit (ADK)는 코드 우선(code-first) 프레임워크입니다. 개발자가 Python 모듈을 작성하고, Agent를 선언하며, 도구(tools)를 부여한 다음, 이를 실행하는 방식으로 작동합니다. 이는 한 명의 개발자가 하나의 에이전트를 소유할 때는 훌륭합니다. 하지만 팀이 수십 개의 에이전트를 필요로 하고, 매주 지침을 변경하며, 누가 어떤 모델로 몇 토큰을 사용했는지 추적하고 싶어 할 때는 난이도가 높아집니다.
apowerb는 바로 그러한 두 번째 경우를 위해 우리가 구축한 오픈 소스(Apache-2.0) 플랫폼입니다. 에이전트는 데이터베이스 레코드로 저장되며, 웹 UI나 REST API를 통해 생성되고, apowerb가 ADK 객체를 대신 구축해 줍니다. 이 게시물에서는 HTTP 호출만을 사용하여 MCP 서버가 연결된 ADK 에이전트를 생성하는 과정과 실제 실행 결과를 보여드리겠습니다.
레코드에서 ADK 에이전트로
각 에이전트는 하나의 행(row)입니다: 이름, 지침, 모델 문자열, 도구 목록, 선택적 서브 에이전트 및 MCP 서버로 구성됩니다. to_agent()라는 함수는 이 행을 ADK 객체로 변환합니다:
llm 에이전트는 LlmAgent가 되고; sequential, parallel, loop 에이전트는 각각 SequentialAgent, ParallelAgent, 또는 LoopAgent가 되며, 서브 에이전트들은 재귀적으로 구축됩니다.
- 모델 문자열은 ADK의
LiteLlm 모델로 래핑되므로 어떤 LiteLLM 제공업체도 작동합니다. Gemini 모델은 gemini/ 접두사를 사용합니다.
mcp_servers의 각 항목은 ADK McpToolset가 됩니다.
에이전트가 변경되면, apowerb는 해당 ADK 모듈을 재생성하고, apowerb 내부에 마운트된 ADK FastAPI 앱이 이를 감지합니다. 실행 과정은 표준 ADK 러너를 거치므로, 세션(sessions), 이벤트(events), 추적(traces) 모두 순수한 ADK 형식으로 처리됩니다.
1. 토큰 가져오기
import requests
BASE_URL =
원격 서버는 기본적으로 `http` 전송 방식을 사용합니다. `stdio` 전송 방식은 로컬 명령을 실행하므로, 운영자가 `MCP_STDIO_ENABLED=1`로 설정하지 않는 한 비활성화되어 있으며 관리자만 사용할 수 있습니다.
## 3. 실행하기
result = requests.post(
f"{BASE_URL}/api/adk/run",
headers=HEADERS,
...
응답은 해당 턴에 대한 ADK 이벤트 목록입니다. 실제 실행에서는 이벤트에 MCP 도구 `ask_wiki_question`을 호출하는 `functionCall`이 포함되었고, 그 뒤에 모델의 답변이 이어졌습니다:
> The google/adk-python repository contains the Agent Development Kit (ADK), an open-source, code-first Python framework designed for building, evaluating, and deploying sophisticated AI agents.