이 가이드에서는 다음을 확인할 수 있습니다:
- AI 에이전트 구축을 위한 Google ADK 라이브러리가 무엇인지.
- MCP에 대한 네이티브 지원이 특별한 이유.
- Bright Data 웹 MCP 서버와 통합하여 강력한 AI 에이전트를 구축하는 방법
자, 시작해 보겠습니다!
Google ADK란 무엇인가요?
Google ADK( Google Agent Development Kit)는 AI 에이전트를 구축하고 배포하기 위한 오픈소스 Python 프레임워크입니다. Gemini 및 더 넓은 Google 생태계에 최적화되어 있지만, 모델과 배포 방식에 구애받지 않습니다.
ADK는 개발자 경험을 중시하며, 강력한 다중 에이전트 시스템을 쉽게 구축할 수 있는 도구와 데이터 구조를 제공합니다. 이를 통해 추론하고, 협력하며, 도구와 통합을 통해 세상과 상호작용할 수 있는 AI 에이전트를 정의할 수 있습니다.
Google ADK의 궁극적 목표는 에이전트 개발을 기존 소프트웨어 개발과 유사하게 만드는 것입니다. 이는 에이전트 아키텍처 생성, 배포, 오케스트레이션 과정을 단순화함으로써 달성됩니다.
Google ADK의 차별화된 특징
다른 AI 에이전트 생성 라이브러리와 비교할 때 Google ADK는 MCP(Model Context Protocol)에 대한 내장 지원으로 두각을 나타냅니다. MCP가 익숙하지 않다면, 이는 AI 모델이 API, 데이터베이스, 파일 시스템과 같은 외부 도구 및 데이터 소스와 상호작용할 수 있는 표준화된 방식입니다.
간단히 말해, MCP는 Google ADK 에이전트가 MCP 호환 서버의 기능을 활용할 수 있게 합니다. 이는 플러그 앤 플레이 방식의 통합으로, 실제 데이터와 작업에 대한 접근 권한을 부여함으로써 AI 에이전트를 기반 LLM의 한계 너머로 확장해 줍니다.
이 옵션은 에이전트를 외부 기능과 연결하는 구조화되고 안전하며 확장 가능한 방식을 제공하며, 이러한 연결을 처음부터 구축할 필요가 없습니다. 특히 Bright Data 웹 MCP 서버와 같은 풍부한 MCP 서버와 통합될 때 MCP 통합은 더욱 매력적입니다.
해당 MCP 서버는 Node.js 기반으로 운영되며 Bright Data의 모든 강력한 AI 데이터 검색 도구와 원활하게 연결됩니다. 이러한 도구들을 통해 에이전트는 실시간 웹 데이터, 구조화된 데이터셋, 스크래핑 기능과 상호작용할 수 있습니다.
현재 지원되는 MCP 도구는 다음과 같습니다:
| 도구 | 설명 |
|---|---|
search_engine |
Google, Bing 또는 Yandex의 검색 결과를 스크래핑합니다. SERP 결과를 마크다운 형식(URL, 제목, 설명)으로 반환합니다. |
scrape_as_markdown |
단일 웹페이지를 스크랩하고 추출된 콘텐츠를 마크다운 형식으로 반환합니다. 봇으로 보호되거나 CAPTCHA로 보안된 페이지에서도 작동합니다. |
scrape_as_html |
위와 동일하지만, 원시 HTML 형식으로 콘텐츠를 반환합니다. |
session_stats |
현재 세션 동안의 도구 사용 요약 정보를 제공합니다. |
web_data_amazon_product |
/dp/ URL을 사용하여 구조화된 Amazon 제품 데이터를 검색합니다. 캐싱으로 인해 스크래핑보다 안정적입니다. |
web_data_amazon_product_reviews |
/dp/ URL을 사용하여 구조화된 Amazon 리뷰 데이터를 가져옵니다. 캐싱되어 안정적입니다. |
web_data_linkedin_person_profile |
구조화된 LinkedIn 프로필 데이터에 접근합니다. 일관성과 속도를 위해 캐싱됩니다. |
web_data_linkedin_company_profile |
구조화된 LinkedIn 회사 데이터에 접근합니다. 캐시된 버전으로 안정성 향상. |
web_data_zoominfo_company_profile |
구조화된 ZoomInfo 회사 데이터를 검색합니다. 유효한 ZoomInfo URL이 필요합니다. |
web_data_instagram_profiles |
구조화된 Instagram 프로필 데이터. 유효한 Instagram URL이 필요합니다. |
web_data_instagram_posts |
Instagram 게시물에 대한 구조화된 데이터를 검색합니다. |
web_data_instagram_reels |
인스타그램 릴즈에 대한 구조화된 데이터를 가져옵니다. |
web_data_instagram_comments |
인스타그램 댓글을 구조화된 데이터로 가져옵니다. |
web_data_facebook_posts |
Facebook 게시물에 대한 구조화된 데이터에 액세스합니다. |
web_data_facebook_marketplace_listings |
Facebook 마켓플레이스의 구조화된 목록을 가져옵니다. |
web_data_facebook_company_reviews |
Facebook 회사 리뷰를 검색합니다. 회사 URL과 리뷰 수가 필요합니다. |
web_data_x_posts |
X(구 트위터) 게시물의 구조화된 데이터를 가져옵니다. |
web_data_zillow_properties_listing |
구조화된 Zillow 리스팅 데이터에 접근합니다. |
web_data_booking_hotel_listings |
Booking.com에서 구조화된 호텔 목록을 검색합니다. |
web_data_youtube_videos |
구조화된 YouTube 동영상 데이터. 유효한 동영상 URL이 필요합니다. |
scraping_browser_navigate |
스크래핑 브라우저를 새로운 URL로 이동합니다. |
scraping_browser_go_back |
이전 페이지로 돌아갑니다. |
scraping_browser_go_forward |
브라우저 기록에서 앞으로 이동합니다. |
scraping_browser_click |
페이지의 특정 요소를 클릭합니다. 요소 선택기가 필요합니다. |
scraping_browser_links |
현재 페이지의 모든 링크와 해당 선택기 및 텍스트를 가져옵니다. |
scraping_browser_type |
입력 필드에 텍스트를 입력하는 것을 시뮬레이션합니다. |
scraping_browser_wait_for |
특정 요소가 표시될 때까지 기다립니다. |
scraping_browser_screenshot |
현재 페이지의 스크린샷을 찍습니다. |
scraping_browser_get_html |
현재 페이지의 전체 HTML을 가져옵니다. 전체 페이지 콘텐츠가 필요하지 않은 경우 주의해서 사용하십시오. |
scraping_browser_get_text |
현재 페이지의 가시적인 텍스트 콘텐츠를 가져옵니다. |
다른 통합 방법에 대해서는 MCP 서버를 사용한 웹 스크래핑에 관한 당사의 문서를 참조하십시오.
참고: Bright Data 웹 MCP 서버에는 새로운 도구가 정기적으로 추가되어 시간이 지남에 따라 점점 더 강력해지고 기능이 풍부해집니다.
Google ADK로 이러한 도구를 활용하는 방법을 확인하세요!
Google ADK를 Bright Data MCP 서버에 통합하는 방법
이 튜토리얼 섹션에서는 Google ADK를 사용하여 강력한 AI 에이전트를 구축하는 방법을 배울 수 있습니다. 이 에이전트는 Bright Data Web MCP 서버가 제공하는 실시간 스크래핑, 데이터 검색 및 변환 기능을 갖추게 됩니다.
이 설정은 Meir Kadosh가 처음 구현한 것이므로, 그의 원본 GitHub 저장소를 꼭 확인해 보세요.
구체적으로 AI 에이전트는 다음을 수행할 수 있습니다:
- 검색 엔진에서 URL을 검색합니다.
- 해당 웹 페이지에서 텍스트를 스크래핑합니다.
- 추출된 데이터를 활용하여 출처 기반 답변 생성
참고: 코드 내 프롬프트를 변경함으로써 AI 에이전트를 다른 시나리오나 사용 사례에 쉽게 적용할 수 있습니다.
Python으로 Bright Data MCP 기반 Google ADK 에이전트를 구축하려면 아래 단계를 따르세요!
필수 조건
이 튜토리얼을 따라하려면 다음이 필요합니다:
- 로컬에 설치된Python 3.9 이상
- 로컬에 설치된Node.js.
- Linux 또는 macOS와 같은 UNIX 기반 시스템, 또는 WSL(Windows Subsystem for Linux).
참고: Google ADK와 Bright Data Web MCP 서버의 통합은 현재 Windows에서 기본적으로 작동하지 않습니다. 실행을 시도하면 다음 코드 섹션에서 NotImplementedError가 발생할 수 있습니다:
transport = await self._make_subprocess_transport(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
protocol, popen_args, False, stdin, stdout, stderr,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
bufsize, **kwargs)
^^^^^^^^^^^^^^^^^^
raise NotImplementedError
이러한 이유로 튜토리얼에서는 Linux, macOS 또는 WSL을 사용한다고 가정합니다.
또한 다음이 필요합니다:
- Bright Data 계정
- Gemini API 키
이 튜토리얼은 필요할 때 Gemini와 Bright Data 자격 증명을 모두 설정하는 방법을 안내합니다. 따라서 지금 당장 걱정하지 마세요.
필수 사항은 아니지만, 다음 사항을 알고 계시면 튜토리얼을 최대한 활용하는 데 도움이 됩니다:
- MCP(마이크로 컨트롤러 프로그래머)의 작동 방식에 대한 기본적인 이해.
- Google ADK 작동 방식에 대한 기본적인 이해.
- Bright Data 웹 MCP 서버 및 제공되는 도구에 대한 친숙함.
- Python에서의 비동기 프로그래밍 경험.
1단계: 프로젝트 설정
터미널을 열고 스크래핑 에이전트를 위한 새 폴더를 생성하세요:
mkdir google_adk_mcp_agent
google_adk_mcp_agent 폴더에는 Python AI 에이전트의 모든 코드가 포함됩니다.
다음으로 프로젝트 폴더로 이동하여 가상 환경을 생성합니다:
cd google_adk_mcp_agent
python3 -m venv .venv
선호하는 Python IDE에서 프로젝트 폴더를 엽니다. Python 확장 기능이 설치된 Visual Studio Code 또는 PyCharm Community Edition 사용을 권장합니다.
google_adk_mcp_agent 내부에 web_search_agent라는 하위 폴더를 생성합니다. 이 하위 폴더에는 에이전트의 핵심 로직이 포함되며 다음 두 파일을 포함해야 합니다:
__init__.py:agent.py의 로직을 내보냅니다.agent.py: Google ADK 에이전트 정의를 포함합니다.
Google ADK 라이브러리가 정상적으로 작동하기 위해 필요한 폴더 구조는 다음과 같습니다:

이제 __init__.py 파일을 다음 줄로 초기화하세요:
from . import agent
대신 agent.py는 곧 AI 에이전트 로직으로 정의될 예정입니다.
IDE 터미널에서 가상 환경을 활성화하세요. Linux 또는 macOS에서는 다음 명령을 실행하세요:
./.venv/bin/activate
Windows에서는 동일하게 다음을 실행하세요:
.venv/Scripts/activate
이제 준비가 완료되었습니다! Google ADK와 Bright Data Web MCP 서버를 사용하여 AI 에이전트를 구축할 수 있는 Python 환경이 마련되었습니다.
2단계: 환경 변수 설정
프로젝트는 Gemini 및 Bright Data와 같은 타사 서비스와 상호작용합니다. API 키와 인증 비밀번호를 Python 코드에 직접 하드코딩하기보다는 환경 변수에서 불러오는 것이 권장되는 방법입니다.
이를 간소화하기 위해 python-dotenv 라이브러리를 사용하겠습니다. 가상 환경을 활성화한 상태에서 다음 명령을 실행하여 설치하세요:
pip install python-dotenv
agent.py 파일에서 라이브러리를 임포트하고 load_dotenv()로 환경 변수를 로드하세요:
from dotenv import load_dotenv
load_dotenv()
이를 통해 로컬 .env 파일에서 변수를 읽을 수 있습니다. 따라서 중첩된 에이전트 디렉터리에 .env 파일을 추가하세요:

이제 코드에서 환경 변수를 다음과 같이 읽을 수 있습니다:
env_value = os.getenv("<ENV_NAME>")
Python 표준 라이브러리에서 os 모듈을 반드시 임포트하세요:
import os
훌륭합니다! 이제 외부 서비스와 안전하게 연동하기 위해 환경 변수에서 비밀 정보를 읽을 준비가 되었습니다.
3단계: Google ADK 시작하기
가상 환경을 활성화한 상태에서 다음 명령을 실행하여 Google ADK Python 라이브러리를 설치하세요:
pip install google-adk==0.5.0
그런 다음 agent.py 파일을 열고 다음 임포트를 추가하세요:
from google.adk.agents import Agent, SequentialAgent
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, StdioServerParameters
다음 단계에서 Google ADK 통합에 사용됩니다.
Google ADK는 AI 공급자와의 통합이 필요합니다. 여기서는 Google의 AI 모델에 최적화된 라이브러리인 Gemini를 사용할 것입니다.
아직 API 키를 발급받지 않았다면 Google 공식 문서를 따르세요. Google 계정에 로그인하여 Google AI Studio에 접속합니다. 그런 다음 “API 키 받기” 섹션으로 이동하면 다음과 같은 모달이 표시됩니다:

“API 키 가져오기” 버튼을 클릭하세요. 다음 화면에서 “API 키 생성” 버튼을 누르세요:

생성되면 키가 모달에 표시됩니다:

키를 복사하여 안전한 곳에 보관하세요. 동일한 키로 Gemini를 이용한 웹 스크래핑도 수행할 수 있습니다.
참고: 본 튜토리얼에는 무료 Gemini 요금제로 충분합니다. 더 높은 속도 제한이 필요하거나 프롬프트 및 응답이 Google 제품 개선에 활용되는 것을 원치 않는 경우에만 유료 요금제가 필요합니다. Gemini 요금 페이지를 참조하세요.
이제 .env 파일을 다음 환경 변수로 초기화하세요:
GOOGLE_GENAI_USE_VERTEXAI="False"
GOOGLE_API_KEY="<YOUR_GEMINI_API_KEY>"
<YOUR_GEMINI_API_KEY> 를 방금 생성한 실제 키로 교체하세요. google-adk 라이브러리가 자동으로 GOOGLE_API_KEY 환경 변수를 찾으므로 agent.py에 추가 코드가 필요하지 않습니다.
마찬가지로 GOOGLE_GENAI_USE_VERTEXAI 설정은 Google ADK가 Vertex AI와 통합할지 여부를 결정합니다. 대신 Gemini API를 직접 사용하려면 "False" 로 설정하세요.
대단합니다! 이제 Google ADK에서 Gemini를 사용할 수 있습니다. 통합에 필요한 타사 솔루션의 초기 설정을 계속 진행해 보겠습니다.
4단계: Bright Data MCP 서버 설정
아직 계정이 없다면 [Bright Data 계정 생성](https://brightdata.com/)하세요. 이미 계정이 있다면 로그인하세요.
다음으로 공식 지침에 따라 다음을 수행하세요:
- Bright Data API 토큰을 가져옵니다.
- MCP 통합을 위해 Web Unlocker 및 Scraping Browser를 구성하세요.
결과적으로 다음을 얻게 됩니다:
- Bright Data API 토큰.
- 웹 언락커 영역 (여기서는 기본 이름인
mcp_unlocker를사용한다고 가정합니다). - 다음 형식의 스크래핑 브라우저 인증 자격 증명:
<BRIGHT_DATA_SB_USERNAME>:<BRIGHT_DATA_SB_PASSWORD>.
이제 Node.js 환경에 Bright Data Web MCP 서버를 전역 설치할 준비가 되었습니다:
npm install -g @brightdata/mcp
그런 다음 @brightdata/mcp npm 패키지를 통해 MCP 서버를 실행합니다:
API_TOKEN="<YOUR_BRIGHT_DATA_API_TOKEN>"
BROWSER_AUTH="<BRIGHT_DATA_SB_USERNAME>:<BRIGHT_DATA_SB_PASSWORD>"
npx -y @brightdata/mcp
위 명령어는 필수 환경 변수(API_TOKEN 및 BROWSER_AUTH)를 설정하고 로컬에서 MCP 서버를 시작합니다. 모든 설정이 올바르게 완료되면 서버가 성공적으로 실행 중임을 나타내는 출력이 표시됩니다:
필요한 영역 확인 중...
필요한 영역 "mcp_unlocker"가 이미 존재합니다
서버 시작 중...
훌륭합니다! Bright Data 웹 MCP 서버가 완벽하게 작동합니다.
Google ADK 프로젝트 루트 디렉토리의 .env 파일에 다음 환경 변수를 추가하세요:
BRIGHT_DATA_API_TOKEN="<YOUR_BRIGHT_DATA_API_TOKEN>"
BRIGHT_DATA_BROWSER_AUTH="<BRIGHT_DATA_SB_USERNAME>:<BRIGHT_DATA_SB_PASSWORD>"
자리 표시자를 실제 값으로 대체하세요.
다음으로 코드에서 해당 환경 변수를 읽어오려면:
BRIGHT_DATA_API_TOKEN = os.getenv("BRIGHT_DATA_API_TOKEN")
BRIGHT_DATA_BROWSER_AUTH = os.getenv("BRIGHT_DATA_BROWSER_AUTH")
완벽합니다! 이제 Bright Data 웹 MCP 서버를 Google ADK와 통합하기 위한 모든 설정이 완료되었습니다. 하지만 먼저 AI 에이전트를 정의할 차례입니다.
단계 #5: 에이전트 정의
소개에서 언급했듯이, MCP 기반 Google ADK 에이전트는 콘텐츠 요약 에이전트 역할을 합니다. 주요 목표는 사용자의 입력을 받아 고품질의 출처가 명확한 요약본을 반환하는 것입니다.
자세한 작업 흐름은 다음과 같습니다:
- 사용자의 요청을 해석하고 Google 스타일 검색 쿼리로 분해합니다.
- 서브 에이전트를 사용하여 검색 쿼리를 처리합니다:
- Bright Data Web MCP 서버의
search_engine도구를 활용하여 SERP API를 통해 Google 검색 결과 페이지(SERP)에서 관련 링크를 검색합니다. - 가장 관련성 높은 URL을 Scraping Browser로 전달하여 해당 페이지로 이동하고 텍스트 콘텐츠를 추출합니다.
- 추출된 콘텐츠에서 핵심 인사이트를 추출하고 이해합니다.
사용자의 원래 쿼리에 대한 응답으로 마크다운 보고서를 생성합니다. 이 프로세스는 새로 수집한 콘텐츠를 소스로 사용하고 추가 읽을거리를 위한 링크를 포함합니다.
- Bright Data Web MCP 서버의
- 사용자의 원본 쿼리에 대한 응답으로 마크다운 보고서를 생성합니다. 이 프로세스는 새로 수집한 콘텐츠를 소스로 사용하고 추가 읽을거리를 위한 링크를 포함합니다.
이 프로세스는 자연스럽게 세 가지 단계로 구분되므로, 최상위 AI 에이전트를 세 개의 하위 에이전트로 분할하는 것이 합리적입니다:
- 플래너: 복잡한 주제를 잘 구성된 검색 쿼리로 변환합니다.
- 리서처: 검색을 실행하고 결과 웹 페이지에서 의미 있는 정보를 추출합니다.
- 출판자: 연구 결과를 잘 작성되고 구조화된 문서로 종합합니다.
다음 Python 코드를 사용하여 Google ADK에서 이 세 에이전트를 구현하세요:
- Planner:
def create_planner_agent():
return Agent(
name="planner",
model="gemini-2.0-flash",
description="사용자 입력을 연구 목적의 집중된 검색 쿼리로 분해합니다.",
instruction="""
당신은 연구 계획 보조입니다. 당신의 임무는 다음과 같습니다:
1. 사용자의 입력 주제나 질문을 분석합니다.
2. 주제를 포괄하는 3~5개의 집중적이고 다양한 검색 엔진 스타일 쿼리로 분해합니다.
3. 다음 형식의 JSON 객체로 출력을 반환합니다:
{
"queries": ["query1", "query2", "query3"]
}
중요:
- 검색어는 검색 엔진에 입력하는 것처럼 표현해야 합니다.
""",
output_key="search_queries"
)
- Researcher:
def create_researcher_agent(mcp_tools):
return Agent(
name="researcher",
model="gemini-2.0-flash",
description="웹 검색을 수행하고 구성된 도구를 사용하여 웹 페이지에서 핵심 인사이트를 추출합니다.",
instruction="""
당신은 웹 연구 에이전트입니다. 당신의 임무는 다음과 같습니다:
1. 플래너 에이전트로부터 검색어 목록을 수신합니다.
2. 각 검색어에 대해 `search_engine` 도구를 적용하여 Google 검색 결과를 얻습니다.
3. 전체 결과에서 가장 관련성 높은 상위 3개 URL을 선택합니다.
4. 각 URL을 `scraping_browser_navigate` 도구에 전달합니다.
5. 각 페이지에서 `scraping_browser_get_text` 도구를 사용하여 주요 페이지 콘텐츠를 추출합니다.
6. 추출된 텍스트를 분석하고 주요 인사이트를 다음 JSON 형식으로 요약합니다:
[
{
"url": "https://example.com",
"insights": [
"주요 인사이트 1",
"주요 인사이트 2"
]
},
...
]
중요:
- 다음 도구만 사용 가능합니다: `search_engine`, `scraping_browser_navigate`, `scraping_browser_get_text`.
""",
tools=mcp_tools
)
참고: mcp_tools 입력 인수는 에이전트가 상호작용할 수 있는 MCP 도구를 지정하는 목록입니다. 다음 단계에서는 Bright Data Web MCP 서버에서 제공하는 도구를 사용하여 이 목록을 채우는 방법을 확인할 수 있습니다.
- Publisher:
def create_publisher_agent():
return Agent(
name="publisher",
model="gemini-2.0-flash",
description="연구 결과를 종합적이고 체계적인 최종 문서로 합성합니다.",
instruction="""
당신은 전문 작가입니다. 스크레이퍼 에이전트로부터 구조화된 연구 결과를 받아 명확하고 통찰력 있으며 체계적인 보고서를 작성하는 것이 당신의 임무입니다.
지침:
- 적절한 마크다운(Markdown) 형식 구조를 사용하세요: 제목(#), 부제목, 서론, 장(##), 소장(###), 결론(##).
- 연구자 에이전트 출력물의 URL을 활용하여 (필요한 경우) 맥락적 링크를 통합하십시오.
- 전문적이고 객관적이며 정보성 있는 어조를 유지하십시오.
- 단순한 결과 재진술을 넘어 정보를 종합하고 아이디어를 연결하여 일관된 서사로 제시하십시오.
"""
)
각 AI 에이전트 프롬프트는 전체 3단계 워크플로우의 특정 단계에 해당합니다. 즉, 각 하위 에이전트는 프로세스 내 고유한 작업을 담당합니다.
단계 #6: MCP 통합 추가
이전 단계에서 언급했듯이, 연구 에이전트는 Bright Data 웹 MCP 서버에서 내보낸 도구에 의존합니다. 다음 함수로 이를 가져옵니다:
async def initialize_mcp_tools():
print("Bright Data MCP에 연결 중...")
tools, exit_stack = await MCPToolset.from_server(
connection_params=StdioServerParameters(
command='npx',
args=["-y", "@brightdata/mcp"],
env={
"API_TOKEN": BRIGHT_DATA_API_TOKEN,
"BROWSER_AUTH": BRIGHT_DATA_BROWSER_AUTH,
}
)
)
print(f"{len(tools)}개의 도구로 MCP 툴셋 생성 성공")
tool_names = [tool.name for tool in tools]
print(f"사용 가능한 도구: {', '.join(tool_names)}")
print("MCP 초기화 완료!")
return tools, exit_stack
MCP 도구를 로드하기 위해 Google ADK는 MCPToolset.from_server() 함수를 제공합니다. 이 메서드는 MCP 서버를 시작하는 데 사용된 명령어와 필요한 환경 변수를 함께 받아들입니다. 이 경우 코드에 구성된 명령어는 4단계에서 로컬에서 MCP 서버를 테스트할 때 사용한 명령어와 일치합니다.
⚠️ 경고: MCP 도구를 구성하고 에이전트 프롬프트에 언급한다고 해서 라이브러리가 실제로 해당 도구를 사용한다는 보장은 없습니다. 해당 도구가 작업 수행에 필요한지 여부는 궁극적으로 LLM이 결정합니다. Google ADK의 MCP 통합은 아직 초기 단계이며 항상 예상대로 동작하지 않을 수 있음을 유의하십시오.
잘하셨습니다! 이제 남은 작업은 이 함수를 호출하고 결과로 생성된 도구를 서브 에이전트를 순차적으로 실행하는 에이전트에 통합하는 것입니다.
7단계: 루트 에이전트 생성
Google ADK는 여러 유형의 에이전트를 지원합니다. 이 경우 워크플로가 명확한 단계 순서를 따르므로 루트 순차 에이전트가 적합합니다. 다음과 같이 정의할 수 있습니다:
async def create_root_agent():
# MCP 도구 로드
mcp_tools, exit_stack = await initialize_mcp_tools()
# 구성된 하위 에이전트를 순차적으로 적용하는 에이전트 정의
root_agent = SequentialAgent(
name="web_research_agent",
description="웹에서 주제를 조사하고 종합 보고서를 생성하는 에이전트.",
sub_agents=[
create_planner_agent(),
create_researcher_agent(mcp_tools),
create_publisher_agent(),
]
)
return root_agent, exit_stack
이 기능을 사용하려면 Google ADK는 agent.py 파일에 root_agent 변수를 정의할 것을 요구합니다. 다음 코드로 구현하세요:
root_agent = create_root_agent()
참고: 여기서 await 없이 비동기 함수를 호출하는 것에 대해 걱정하지 마세요. 이는 공식 Google ADK 문서에서 권장하는 접근 방식입니다. 따라서 프레임워크가 비동기 실행을 처리해 줍니다.
잘하셨습니다! Bright Data 웹 MCP 서버와 Google ADK 간의 통합이 이제 완료되었습니다.
8단계: 모든 것 통합하기
이제 agent.py 파일에는 다음 내용이 포함되어야 합니다:
from dotenv import load_dotenv
import os
from google.adk.agents import Agent, SequentialAgent
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, StdioServerParameters
# .env 파일에서 환경 변수 불러오기
load_dotenv()
# Bright Data 웹 MCP 서버 연동을 위한 환경 변수 읽기
BRIGHT_DATA_API_TOKEN = os.getenv("BRIGHT_DATA_API_TOKEN")
BRIGHT_DATA_BROWSER_AUTH = os.getenv("BRIGHT_DATA_BROWSER_AUTH")
# 필요한 하위 에이전트 생성을 위한 함수 정의
def create_planner_agent():
return Agent(
name="planner",
model="gemini-2.0-flash",
description="사용자 입력을 연구 목적으로 집중된 검색 쿼리로 분해합니다.",
instruction="""
당신은 연구 계획 보조원입니다. 당신의 임무는 다음과 같습니다:
1. 사용자의 입력 주제 또는 질문을 분석합니다.
2. 주제를 포괄하는 3~5개의 집중적이고 다양한 검색 엔진 스타일의 쿼리로 분해합니다.
3. 출력을 다음 형식의 JSON 객체로 반환합니다:
{
"queries": ["query1", "query2", "query3"]
}
중요:
- 쿼리는 검색 엔진에 입력하는 것처럼 표현해야 합니다.
""",
output_key="search_queries"
)
def create_researcher_agent(mcp_tools):
return Agent(
name="researcher",
model="gemini-2.0-flash",
description="웹 검색을 수행하고 구성된 도구를 사용하여 웹 페이지에서 핵심 인사이트를 추출합니다.",
instruction="""
당신은 웹 연구 에이전트입니다. 당신의 임무는 다음과 같습니다:
1. 플래너 에이전트로부터 검색 쿼리 목록을 수신합니다.
2. 각 검색어에 대해 `search_engine` 도구를 적용하여 Google 검색 결과를 얻습니다.
3. 전체 결과에서 가장 관련성이 높은 상위 3개 URL을 선택합니다.
4. 각 URL을 `scraping_browser_navigate` 도구로 전달합니다.
5. 각 페이지에서 `scraping_browser_get_text` 도구를 사용하여 주요 페이지 콘텐츠를 추출합니다.
6. 추출된 텍스트를 분석하고 주요 인사이트를 다음 JSON 형식으로 요약합니다:
[
{
"url": "https://example.com",
"insights": [
"주요 인사이트 1",
"주요 인사이트 2"
]
},
...
]
중요:
- 다음 도구만 사용 가능합니다: `search_engine`, `scraping_browser_navigate`, `scraping_browser_get_text`.
""",
tools=mcp_tools
)
def create_publisher_agent():
return Agent(
name="publisher",
model="gemini-2.0-flash",
description="연구 결과를 종합적이고 체계적인 최종 문서로 합성합니다.",
instruction="""
당신은 전문 작가입니다. 스크레이퍼 에이전트로부터 구조화된 연구 결과를 받아 명확하고 통찰력 있으며 체계적인 보고서를 작성하는 것이 당신의 임무입니다.
지침:
- 적절한 마크다운 형식 구조를 사용하세요: 제목 (#), 부제목, 서론, 장(##), 소장(###), 결론(##).
- 연구자 에이전트 출력의 URL을 활용하여 필요한 경우 컨텍스트 링크를 통합하세요.
- 전문적이고 객관적이며 정보성 있는 어조를 유지하세요.
- 단순한 결과 재진술을 넘어 정보를 종합하고 아이디어를 연결하여 일관된 서사로 제시하십시오.
"""
)
# Bright Data 웹 MCP 서버에서 노출된 MCP 도구 로드
async def initialize_mcp_tools():
print("Bright Data MCP에 연결 중...")
tools, exit_stack = await MCPToolset.from_server(
connection_params=StdioServerParameters(
command="npx",
args=["-y", "@brightdata/mcp"],
env={
"API_TOKEN": BRIGHT_DATA_API_TOKEN,
"BROWSER_AUTH": BRIGHT_DATA_BROWSER_AUTH,
}
)
)
print(f"{len(tools)}개의 도구로 MCP 툴셋 생성 성공")
tool_names = [tool.name for tool in tools]
print(f"사용 가능한 도구: {", ".join(tool_names)}")
print("MCP 초기화 완료!")
return tools, exit_stack
# Google ADK 시작에 필요한 루트 에이전트 정의
async def create_root_agent():
# MCP 도구 로드
mcp_tools, exit_stack = await initialize_mcp_tools()
# 구성된 서브 에이전트를 순차적으로 적용하는 에이전트 정의
root_agent = SequentialAgent(
name="web_research_agent",
description="웹에서 주제를 조사하고 종합 보고서를 생성하는 에이전트.",
sub_agents=[
create_planner_agent(),
create_researcher_agent(mcp_tools),
create_publisher_agent(),
]
)
return root_agent, exit_stack
# Google ADK는 웹 UI 또는 CLI에서 루트 에이전트를 로드합니다
root_agent = create_root_agent()
프로젝트의 루트 폴더에서 가상 환경을 활성화한 상태로 다음 명령어로 웹 UI에서 AI 에이전트를 실행하세요:
adk web
다음 애플리케이션이 http://localhost:8000에서 시작됩니다:

첫 번째 요청 실행 후 Google ADK 라이브러리가 root_agent 변수에 접근을 시도합니다. 이로 인해 create_root_agent() 함수가 트리거되며, 해당 함수는 initialize_mcp_tools()를 호출합니다.
결과적으로 터미널에 다음과 같은 메시지가 표시됩니다:
Bright Data MCP에 연결 중...
필수 영역 확인 중...
필수 영역 "mcp_unlocker"가 이미 존재합니다
서버 시작 중...
MCP 툴셋이 30개 도구로 성공적으로 생성되었습니다
사용 가능한 도구: search_engine, scrape_as_markdown, scrape_as_html, session_stats, web_data_amazon_product, web_data_amazon_product_reviews, web_data_linkedin_person_profile, web_data_linkedin_company_profile, web_data_zoominfo_company_profile, web_data_instagram_profiles, web_data_instagram_posts, web_data_instagram_reels, web_data_instagram_comments, web_data_facebook_posts, web_data_facebook_marketplace_listings, web_data_facebook_company_reviews, 웹_데이터_엑스_게시물, 웹_데이터_질로우_부동산_목록, 웹_데이터_부킹_호텔_목록, 웹_데이터_유튜브_동영상, 스크래핑_브라우저_탐색, 스크래핑_브라우저_뒤로_가기, 스크래핑_브라우저_앞으로_가기, 스크래핑_브라우저_링크, 스크래핑_브라우저_클릭, 스크래핑_브라우저_타입, 스크래핑_브라우저_대기, 스크래핑_브라우저_스크린샷, 스크래핑_브라우저_텍스트_추출, 스크래핑_브라우저_HTML_추출
MCP 초기화 완료!
보시다시피 Google ADK가 30개의 Bright Data MCP 도구를 올바르게 로드했습니다.
이제 채팅에 요청을 입력하면 AI 에이전트가 다음과 같은 작업을 수행합니다:
- 사용자의 요청을 검색 엔진 스타일의 키워드로 변환합니다.
- 해당 키워드를
search_engineMCP 도구로 전송하여:- 해당 키워드에 대한 상위 랭킹 페이지를 검색합니다.
- 가장 관련성이 높은 상위 3개 결과를 선별합니다.
scraping_browser_navigate도구를 사용하여 해당 URL을 방문합니다.scraping_browser_get_text를사용하여 해당 콘텐츠를 추출하십시오.- 추출된 텍스트를 핵심적이고 실행 가능한 인사이트로 요약하세요.
- 해당 통찰력을 바탕으로 문맥에 맞는 기사나 보고서를 생성하여 질의에 답변하십시오.
6단계에서 언급한 바와 같이, Gemini(또는 다른 LLM)는 때때로 MCP 도구를 완전히 건너뛸 수 있습니다. 이는 코드에 구성되어 있고 서브 에이전트 프롬프트에 명시적으로 언급된 경우에도 마찬가지입니다. 구체적으로, 권장되는 MCP 도구 없이 직접 응답을 반환하거나 서브 에이전트를 실행할 수 있습니다.
이러한 부작용을 방지하려면 서브 에이전트 프롬프트를 신중하게 조정하세요. 또한 Google ADK의 MCP 통합은 여전히 발전 중이며 항상 예상대로 동작하지 않을 수 있음을 기억하십시오. 따라서 라이브러리가 최신 상태인지 확인하세요.
이제 최근 선출된 교황의 약력을 알고 싶다고 가정해 보겠습니다. 일반적으로 대규모 언어 모델(LLM)은 시사 관련 질의에 어려움을 겪습니다. 하지만 Bright Data의 SERP API와 웹 스크래핑 기능 덕분에 AI 에이전트는 실시간 정보를 손쉽게 수집하고 요약할 수 있습니다:

자, 이제 완료되었습니다!
결론
이 블로그 포스트에서는 Google ADK 프레임워크와 Bright Data MCP를 결합하여 Python으로 강력한 AI 에이전트를 구축하는 방법을 배웠습니다.
시연된 바와 같이, 기능이 풍부한 MCP 서버와 Google ADK를 결합하면 웹에서 실시간 데이터를 검색하는 등 다양한 기능을 갖춘 AI 에이전트를 만들 수 있습니다. 이는 Bright Data의 도구와 서비스가 어떻게 고급 AI 기반 자동화를 가능하게 하는지 보여주는 한 예에 불과합니다.
이것은 테스트 인용문입니다
AI 에이전트 개발을 위한 당사의 솔루션을 살펴보세요:
- 자율 AI 에이전트: 강력한 API 세트를 활용하여 모든 웹사이트를 실시간으로 검색, 접근 및 상호작용합니다.
- 수직 AI 애플리케이션: 산업별 소스에서 웹 데이터를 추출하기 위한 안정적이고 맞춤형 데이터 파이프라인 구축.
- 파운데이션 모델: 사전 훈련, 평가 및 미세 조정을 위한 규정 준수 웹 규모 데이터셋에 접근하세요.
- 다중 모드 AI: AI에 최적화된 세계 최대 규모의 이미지, 동영상, 오디오 저장소를 활용하세요.
- 데이터 공급자: 신뢰할 수 있는 공급자와 연결하여 대규모로 고품질의 AI 활용 가능한 데이터셋을 확보하세요.
- 데이터 패키지: 선별되고 즉시 사용 가능한 구조화, 보강 및 주석이 달린 데이터 세트를 확보하세요.
자세한 내용은 AI 허브를 살펴보세요.
Bright Data 계정을 생성하고 AI 에이전트 개발을 위한 모든 제품과 서비스를 체험해 보세요!