---
title: "AIエージェント開発のためのGoogle ADKとMCPサーバーの統合"
slug: google-adk-with-bright-data-mcp-server
date: 2025-05-13T08:59:31+00:00
modified: 2025-11-04T08:50:51+00:00
permalink: https://brightdata.jp/blog/ai/google-adk-with-bright-data-mcp-server
type: blog
---

[ ブログ ](https://brightdata.jp/blog "ブログ") / [AI](https://brightdata.jp/blog/ai)







 [AI](https://brightdata.jp/blog/ai)

# AIエージェント開発のためのGoogle ADKとMCPサーバーの統合

Google ADKとBright Data MCPを使用してAIエージェントを作成し、PythonでWebデータのライブ検索とインテリジェントな自動化を実現する方法をご紹介します。

 9 分読





 [ ![Antonello Zanini](https://media.brightdata.jp/2022/12/Antonello-Zanini-2-50x50.jpg) ](https://brightdata.com/blog/authors/antonello-zanini)

 [Antonello Zanini

Technical Writer

 ](https://brightdata.com/blog/authors/antonello-zanini)





 ![Google ADK × Bright Data MCP blog image](https://media.brightdata.jp/2025/05/Google-ADK%E2%80%AF%C3%97%E2%80%AFBright%E2%80%AFData-MCP.svg)





このガイドの中で、あなたは見ることができる：

- AIエージェントを構築するためのGoogle ADKライブラリとは？
- なぜMCPへのネイティブ・サポートが特別なのか。
- Bright Data MCPサーバーと統合して非常に強力なAIエージェントを構築する方法

さあ、飛び込もう！

## Google ADKとは？

Google[ADK（Google Agent Development Kitの](https://google.github.io/adk-docs/)略）は、AIエージェントの構築とデプロイのためのオープンソースのPythonフレームワークである。Gemini とより広範な Google エコシステムに最適化されているが、モデルにとらわれず、デプロイにとらわれない。

ADKは開発者の体験を重視し、強力なマルチエージェントシステムを簡単に構築できるツールとデータ構造を提供します。ツールや統合により、推論、コラボレーション、世界との対話が可能なAIエージェントを定義することができます。

Google ADKの究極のゴールは、エージェント開発を従来のソフトウェア開発のように感じられるようにすることだ。それは、エージェントアーキテクチャの作成、デプロイ、オーケストレーションのプロセスを単純化することで達成される。

## グーグルADKの特徴

他のAIエージェント作成ライブラリと比較して、Google ADKは[MCP（Managed Connectivity Platform）のビルトインサポートで際立って](https://google.github.io/adk-docs/tools/mcp-tools/)いる。MCPとは、AIモデルが外部のツールやデータソース（API、データベース、ファイルシステムなど）とやり取りするための標準化された方法である。

簡単に言うと、MCPによってGoogle ADKエージェントはMCP互換サーバーの機能を活用できるようになります。実世界のデータやアクションにアクセスできるようにすることで、基礎となるLLMの制限を越えてAIエージェントを拡張するプラグアンドプレイ統合と考えてください。

このオプションは、エージェントと外部機能を接続するための、構造化された、安全で、拡張可能な方法を提供します。MCPの統合は、[Bright Data MCPサーバーの](https://docs.brightdata.com/api-reference/MCP-Server)ようなリッチなMCPサーバーと統合されると、特に説得力が増します。

このMCPサーバーはNode.js上で動作し、[Bright Dataの](/ai)すべての[強力なAIデータ検索ツールに](/ai)シームレスに接続します。これらのツールにより、エージェントはライブウェブデータ、構造化データセット、スクレイピング機能と対話することができます。

この記事を書いている時点で、サポートされている[MCPツールは](https://github.com/luminati-io/brightdata-mcp/blob/main/assets/Tools.md)以下の通り：

**工具****説明**`検索エンジン`Google、Bing、Yandexの検索結果をスクレイピング。SERPの結果をマークダウン形式で返します（URL、タイトル、説明）。`scrape_as_markdown`1つのウェブページをスクレイピングし、抽出したコンテンツをMarkdown形式で返します。ボットで保護されたページやCAPTCHAで保護されたページでも動作します。`scrape_as_html`上記と同じですが、コンテンツを生のHTMLで返します。`セッション統計`現在のセッションにおけるツールの使用状況の概要を提供する。`ウェブ_データ_アマゾン_商品`構造化されたAmazon商品データを`/dp/`URLを使って取得する。キャッシュによりスクレイピングよりも信頼性が高い。`web_data_amazon_product_reviews``dp/`URLを使用して構造化されたAmazonレビューデータを取得します。キャッシュされ、信頼できる。`web_data_linkedin_person_profile（ウェブデータ・リンケディン・パーソン・プロフィール`構造化されたLinkedInプロフィールデータにアクセス。一貫性とスピードのためにキャッシュされます。`web_data_linkedin_会社概要`LinkedInの構造化された企業データにアクセス。キャッシュバージョンで信頼性が向上。`web_data_zoominfo_会社概要`構造化された ZoomInfo 企業データを取得します。有効な ZoomInfo URL が必要です。`ウェブ_データ_インスタグラム_プロフィール`構造化されたインスタグラムのプロフィールデータ。有効なInstagramのURLが必要です。`ウェブ_データ_インスタグラム_投稿`Instagramの投稿の構造化データを取得する。`ウェブ_データ_インスタグラム_リール`インスタグラムのリールの構造化データを取得する。`ウェブ_データ_インスタグラム_コメント`インスタグラムのコメントを構造化データとして取得する。`ウェブデータ_facebook_posts`Facebook投稿の構造化データにアクセス`ウェブデータ_facebook_マーケットプレイス_リスティング`Facebook Marketplaceから構造化されたリストを取得します。`web_data_facebook_企業レビュー`Facebookの企業レビューを取得する。会社のURLとレビュー数が必要です。`web_data_x_posts`X（旧Twitter）の投稿から構造化データを取得する。`ウェブデータ_ジロー物件リスト`構造化されたZillowの物件データにアクセス。`web_data_booking_hotel_listings`Booking.comから構造化されたホテルのリストを取得します。`web_data_youtube_videos`構造化されたYouTube動画データ。有効な動画 URL が必要です。`スクレイピング_ブラウザ_ナビゲート`スクレイピング・ブラウザを新しいURLに移動する。`スクレイピング_ブラウザ_ゴーバック`前のページに戻る。`スクレイピング_ブラウザ_ゴーフォワード`ブラウザの履歴を進む。`スクレイピング_ブラウザ_クリック`ページ上の特定の要素をクリックする。要素セレクタが必要です。`スクレイピング_ブラウザリンク`現在のページにあるすべてのリンクを、セレクタとテキストとともに取得する。`スクレイピング・ブラウザ・タイプ`入力フィールドにテキストを入力するシミュレーション。`スクレイピング・ブラウザ・ウェイト・フォー`特定の要素が見えるようになるのを待つ。`スクレイピング_ブラウザ_スクリーンショット`現在のページのスクリーンショットを撮る。`スクレイピング_ブラウザ_get_html`現在のページの完全なHTMLを取得する。ページ全体のコンテンツが不要な場合は、注意して使用すること。`スクレイピング_ブラウザ_テキスト取得`現在のページの可視テキストコンテンツを取得する。もう一つの可能性のある統合については、[MCPサーバーを使ったウェブスクレイピングの](/blog/ai/web-scraping-with-mcp)記事を参照してください。

**注**：Bright Data MCPサーバーには定期的に新しいツールが追加され、時間の経過とともにますます強力で豊富な機能を備えています。

Google ADKでこれらのツールを活用する方法をご覧ください！

## Google ADKとBright Data MCPサーバーを統合する方法

このチュートリアルでは、Google ADKを使用して強力なAIエージェントを構築する方法を学びます。このチュートリアルでは、Bright Data MCPサーバーが提供するライブスクレイピング、データ検索、変換機能を装備します。

この設定はMeir Kadoshが最初に実装したものなので、[彼のオリジナルのGitHubリポジトリを](https://github.com/MeirKaD/MCP_ADK)ぜひ[チェックして](https://github.com/MeirKaD/MCP_ADK)ほしい。

具体的には、AIエージェントは以下のことができる：

1. 検索エンジンからURLを取得する。
2. ウェブページからテキストをスクレイピングする。
3. 抽出されたデータを使用して、ソースベースの回答を生成します。

**注**：コード内のプロンプトを変更することで、AIエージェントを[他のシナリオやユースケースに](/use-cases)簡単に適応させることができます。

以下の手順に従って、PythonでBright Data MCPを搭載したGoogle ADKエージェントを構築してください！

### 前提条件

このチュートリアルに従うには

- [Python 3.9](https://www.python.org/downloads/release/python-390/)以上をローカルにインストール。
- [Node.jsを](https://nodejs.org/en/download)ローカルにインストール。
- LinuxやmacOSなどのUNIXベースのシステム、またはWSL[（Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/install)）。

**注意**：Google ADKとBright Data MCPサーバーの統合は、現在Windowsではネイティブに動作しません。実行しようとすると、この部分のコードで[`NotImplementedErrorが`](https://docs.python.org/3/library/exceptions.html#NotImplementedError)発生する可能性があります：

```none
transport = await self._make_subprocess_transport(
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        protocol, popen_args, False, stdin, stdout, stderr,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        bufsize, **kwargs)
        ^^^^^^^^^^^^^^^^^^
    raise NotImplementedError
```

このため、このチュートリアルでは、Linux、macOS、またはWSLを使用していることを前提としている。

これも必要だ：

- ブライトデータのアカウント
- ジェミニAPIキー

このチュートリアルでは、必要に応じてGeminiとBright Dataの両方の認証情報を設定する方法を説明します。ですから、今は心配しないでください。

必須ではありませんが、以下はこのチュートリアルを最大限に活用するのに役立ちます：

- MCPの機能についての一般的な考え方。
- [Google ADKの](https://google.github.io/adk-docs/get-started/)仕組みについての基本的な理解。
- Bright Data MCPサーバーとその利用可能なツールに精通していること。
- [Pythonでの非同期プログラミングの](https://docs.python.org/3/library/asyncio.html)経験。

### ステップ1：プロジェクトのセットアップ

ターミナルを開き、スクレイピング・エージェント用の新しいフォルダを作成する：

```none
mkdir google_adk_mcp_agent
```

`google_adk_mcp_agent`フォルダには、Python AIエージェントのすべてのコードが格納されます。

次に、プロジェクトフォルダーに移動し、その中に[仮想環境を](https://docs.python.org/3/library/venv.html)作成する：

```none
cd google_adk_mcp_agent
python3 -m venv .venv
```

お好みのPython IDEでプロジェクトフォルダを開きます。[Python拡張機能付きのVisual Studio Code](https://code.visualstudio.com/docs/languages/python)または[PyCharm Community Editionを](https://www.jetbrains.com/pycharm/download/#section=windows)使用することを推奨します。

`google_adk_mcp_agent の`中に、`web_search_agent` というサブフォルダを作成します。このサブフォルダには、エージェントのコアロジックが含まれ、以下の2つのファイルが必要です：

- `__init__.py`：`agent.pyから`ロジックをエクスポートします。
- `agent.py`: Google ADKエージェントの定義が含まれています。

これは、[Google ADKライブラリが正しく機能するために必要なフォルダ構造](https://google.github.io/adk-docs/get-started/quickstart/#project-structure)です：

![GOOGLE_ADK_MCP_AGENT'という名前のPythonプロジェクトのファイル構造で、仮想環境ディレクトリ'.venv'と2つのPythonファイルを含むサブディレクトリ'web_search_agent'があります：'__init__.py'と'agent.py'です。](https://media.brightdata.com/2025/05/The-file-structure-of-the-Google-ADK-agent-project.png)次に、`__init__.py`ファイルを以下の行で初期化します：

```none
from . import agent
```

その代わりに、`agent.pyは`エージェントAIのエージェントロジックで定義されます。

IDEのターミナルで、仮想環境を有効にします。LinuxまたはmacOSでは、このコマンドを実行する：

```none
./.venv/bin/activate
```

同様に、Windowsでは、起動します：

```none
.venv/Scripts/activate
```

これで準備完了です！これで、Google ADKとBright Data MCPサーバーを使ってAIエージェントを構築するためのPython環境が整いました。

### ステップ2：環境変数の設定 読み込み

あなたのプロジェクトはGeminiやBright Dataのようなサードパーティのサービスとやり取りします。Pythonのコードに直接APIキーや認証の秘密をハードコーディングするのではなく、環境変数から読み込むのがベストプラクティスです。

この作業を簡単にするために、[`python-dotenv`](https://pypi.org/project/python-dotenv/)ライブラリを使います。仮想環境を起動した状態で、python-dotenv ライブラリをインストールします：

```none
pip install python-dotenv
```

`agent.py`ファイルで、ライブラリをインポートし、`load_dotenv()` で環境変数をロードします：

```none
from dotenv import load_dotenv

load_dotenv()
```

これにより、ローカルの`.env`ファイルから変数を読み込むことができます。したがって、ネストしたエージェントディレクトリに`.env`ファイルを追加します：

![.env設定ファイルは、仮想環境フォルダと関連するPythonファイルを含む'GOOGLE_ADK_MCP_AGENT'という名前のプロジェクトのディレクトリ構造内で強調表示されます。](https://media.brightdata.com/2025/05/The-.env-file-in-your-nested-agent-folder.png)このコードで、コード中の環境変数を読み取ることができる：

```none
env_value = os.getenv("<ENV_NAME>")
```

Python標準ライブラリから[`os`](https://docs.python.org/3/library/os.html)モジュールをインポートすることを忘れないでください：

```none
import os
```

素晴らしい！これで、サードパーティ・サービスと安全に統合するための秘訣を読む準備ができた。

### ステップ #3: Google ADKを使い始める

起動した仮想環境で、[Google ADK Pythonライブラリを](https://github.com/google/adk-python)インストールしてください：

```none
pip install google-adk
```

次に、`agent.pyを`開き、以下のインポートを追加します：

```none
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の公式ドキュメントに従って](https://ai.google.dev/gemini-api/docs/api-key)ください。Googleアカウントにログインし、Google AI Studioにアクセスします。その後、[“Get API Key](https://aistudio.google.com/app/apikey)” セクションに移動すると、このようなモーダルが表示されます：

![It's time to build」と題されたポップアップウィンドウには、Google AI Studioの使用とGemini APIのAPIキー取得のオプションが表示され、「Try Gemini」と「Get API key」と書かれた2つの青いボタンが表示される。](https://media.brightdata.com/2025/05/Note-the-Get-API-key-button.png)Get API key “ボタンをクリックします。次の画面で「APIキーを作成」ボタンを押します：

![Gemini APIのAPIキーを生成するためのインターフェースを表示したスクリーンショット。curlを使用してPOSTリクエストを行うためのコードスニペットと、APIキーを作成するためのハイライトされたボタンが含まれている。](https://media.brightdata.com/2025/05/Note-the-Create-API-key-button.png)生成されると、キーがモーダルに表示されます：

![APIキーが生成されました」という通知ダイアログが表示され、APIキーを安全に使用し、公に共有しないよう指示がある。ボックス内に表示された不明瞭なAPIキーと「コピー」ボタン。](https://media.brightdata.com/2025/05/Copying-the-Gemini-API-key.png)キーをコピーして安全な場所に保管してください。同じキーがあれば、[Geminiでウェブスクレイピングを](/blog/ウェブデータ/web-scraping-with-gemini)行うことができます。

**注**: このチュートリアルでは、無料の Gemini ティアで十分です。有料レベルは、より高いレート制限が必要な場合、またはプロンプトと回答をGoogle製品の改善に使用したくない場合にのみ必要です。[Gemini 課金ページを](https://ai.google.dev/gemini-api/docs/api-key)参照してください。

次に、`.env`ファイルを以下の環境変数で初期化する：

```none
GOOGLE_GENAI_USE_VERTEXAI="False"
GOOGLE_API_KEY="<YOUR_GEMINI_API_KEY>"
```

を ``を先ほど生成した実際のキーに置き換えてください。`google-adk`ライブラリは[自動的に環境変数`GOOGLE_API_KEYを`探すので](https://googleapis.github.io/python-genai/#create-a-client)、`agent.pyに`追加のコードは必要ありません。

同様に、`GOOGLE_GENAI_USE_VERTEXAI`設定は、Google ADKが[Vertex AIと](https://cloud.google.com/vertex-ai)統合すべきかどうかを決定する。代わりにGemini APIを直接使用するには、`"False "`に設定する。

驚いた！これでGoogle ADKでGeminiが使えるようになった。それでは、統合に必要なスレイドパーティソリューションの初期設定を続けよう。

### ステップ#4: Bright Data MCPサーバーのセットアップ

まだの方は、\[ブライト・データのアカウントを作成してください\]().すでにお持ちの場合は、[ログインして](/cp/start)ください。

次に、[公式の指示に従って](https://github.com/luminati-io/brightdata-mcp?tab=readme-ov-file#-account-setup)次のことを行う：

1. Bright Data API トークンを取得します。
2. ウェブアンロッカーとスクレイピングブラウザをMCP統合用に設定する。

結局、あなたはこうなる：

- Bright Data APIトークン。
- Web Unlockerゾーン（ここでは、デフォルトの名前を`mcp_unlockerと`する）。
- `<BRIGHT_DATA_SB_USERNAME>:<BRIGHT_DATA_SB_PASSWORD>の`形式でブラウザ認証情報をスクレイピングする。

これで、Node.js環境に[Bright Data MCPサーバーを](https://github.com/luminati-io/brightdata-mcp)グローバルにインストールする準備が整いました：

```none
npm install -g @brightdata/mcp
```

次に、[`@brightdata/mcp`](https://www.npmjs.com/package/@brightdata/mcp)npmパッケージを使ってMCPサーバーを起動する：

```none
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サーバーを起動する。すべてが正しく設定されていれば、サーバーが正常に実行されていることを示す出力が表示されるはずです：

```none
Checking for required zones...
Required zone "mcp_unlocker" already exists
Starting server...
```

素晴らしい！Bright DataのMCPサーバーは魅力的な働きをしてくれます。

これらの環境変数をGoogle ADKプロジェクトのルートにある`.env`ファイルに追加します：

```none
BRIGHT_DATA_API_TOKEN="<YOUR_BRIGHT_DATA_API_TOKEN>"
BRIGHT_DATA_BROWSER_AUTH="<BRIGHT_DATA_SB_USERNAME>:<BRIGHT_DATA_SB_PASSWORD>"
```

プレースホルダーを実際の値に置き換える。

次に、これらのenvをコードで読み込む：

```none
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エージェントは、コンテンツ要約エージェントとして機能する。その主な目的は、ユーザーの入力を受け取り、高品質でソースのしっかりした要約を返すことである。

詳細には、エージェントはこのワークフローに従う：

1. ユーザーのリクエストを解釈し、Googleスタイルの検索クエリに分解する。
2. ```
    ポリラング・プレースホルダーは変更しない
    ```

    。
3. ユーザーのオリジナル・クエリに対してMarkdownレポートを生成する。このプロセスでは、収集されたばかりのコンテンツをソースとして使用し、さらに読むためのリンクが含まれます。

プロセスは自然に3つの段階に分かれるので、トップレベルのAIエージェントを3つのサブエージェントに分けるのは理にかなっている：

- **プランナー**複雑なトピックを整形式の検索クエリに変換します。
- **リサーチャー**：検索を実行し、結果のウェブページから意味のある情報を抽出する。
- **出版社**研究をよく練り上げ、構成された文書にまとめる。

以下のPythonコードを使って、Google ADKにこれら3つのエージェントを実装する：

- プランナー

```none
def create_planner_agent():
    return Agent(
        name="planner",
        model="gemini-2.0-flash",
        description="Breaks down user input into focused search queries for research purposes.",
        instruction="""
        You are a research planning assistant. Your task is to:
        1. Analyze the user's input topic or question.
        2. Break it down into 3 to 5 focused and diverse search engine-like queries that collectively cover the topic.
        3. Return your output as a JSON object in the following format:

        {
            "queries": ["query1", "query2", "query3"]
        }

        IMPORTANT:
        - The queries should be phrased as if typed into a search engine.
        """,
        output_key="search_queries"
    )
```

- 研究者：

```none
def create_researcher_agent(mcp_tools):
    return Agent(
        name="researcher",
        model="gemini-2.0-flash",
        description="Performs web searches and extracts key insights from web pages using the configured tools.",
        instruction="""
        You are a web research agent. Your task is to:
        1. Receive a list of search queries from the planner agent.
        2. For each search query, apply the `search_engine` tool to get Google search results.
        3. From the global results, select the top 3 most relevant URLs.
        4. Pass each URL to the `scraping_browser_navigate` tool.
        5. From each page, use the `scraping_browser_get_text` tool to extract the main page content.
        6. Analyze the extracted text and summarize the key insights in the following JSON format:
        [
            {
                "url": "https://example.com",
                "insights": [
                    "Main insight one",
                    "Main insight two"
                ]
            },
            ...
        ]

        IMPORTANT:
        - You are only allowed to use the following tools: `search_engine`, `scraping_browser_navigate`, and `scraping_browser_get_text`.
        """,
        tools=mcp_tools
    )
```

**注意**:`mcp_tools`入力引数は、[エージェントが対話できる MCP ツールを](https://modelcontextprotocol.io/docs/concepts/tools)指定するリストです。次のステップでは、Bright Data MCP サーバが提供するツールを使用して、このリストに入力する方法を説明します。

- 出版社
    “python
    def create\_publisher\_agent()：
    return Agent(
    name=”publisher”、
    model=”gemini-2.0-flash”、
    description=”研究成果を包括的で構造化された最終文書にまとめる””、
    instruction=””
    あなたはライターのエキスパートです。あなたの仕事は、スクレイパーエージェントから構造化された研究成果を受け取り、明確で洞察に満ちた、よく整理されたレポートを作成することです。`タイトル(#)、サブタイトル、イントロダクション、章(##)、サブチャプター(###)、結論(##)。- リサーチャー・エージェントの出力から URL を使用し、（必要な場合は）文脈リンクを統合する。- 専門的、客観的、有益な論調を維持する。- 調査結果の再記述にとどまらず、情報を合成し、アイデアをつなげ、首尾一貫した物語として提示する。"""`)

```none
Note that each AI agent prompt corresponds to one specific step in the overall 3-step workflow. In other words, each sub-agent is responsible for a distinct task within the process.

### Step #6: Add the MCP Integration
As mentioned in the previous step, the `reasearch` agent depends on the tools exported by the Bright Data MCP server. Retrieve them with this function:
```

python
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 “MCP Toolset created successfully with {len(tools)} tools”)
tool\_names = \[tool.name for tool in tools\] (ツール内のツールに対するツール名)
print(f “Available tools include：{‘、’.join(tool\_names)}”)

```none
print("MCP initialization complete!")

return tools, exit_stack
```

MCPツールをロードするために、Google ADKは[`MCPToolset.from_server()`](https://google.github.io/adk-docs/tools/mcp-tools/)関数を提供します。このメソッドには、MCPサーバーの起動に使用したコマンドと、必要な環境変数を指定します。この場合、コードに設定されているコマンドは、ステップ#4でMCPサーバーをローカルでテストするために使用したコマンドに対応します。

⚠️**警告**：警告: MCPツールを設定し、エージェントのプロンプトに記載しても、ライブラリが実際にそ れらを使用することを*保証するものではありません*。タスクを達成するためにそれらのツールが必要かどうかを決定するのは、最終的にはLLM次第です。Google ADKのMCP統合はまだ初期段階であり、必ずしも期待通りに動作するとは限らないことを覚えておいてください。

よくやった！あとはこの関数を呼び出して、出来上がったツールをサブエージェントを順次実行するエージェントに統合するだけだ。

### ステップ#7: ルートエージェントの作成

Google ADK は、いくつかのタイプのエージェントをサポートしています。この場合、ワークフローは明確な一連のステップに従うので、[ルートシーケンシャルエージェントが](https://google.github.io/adk-docs/agents/workflow-agents/sequential-agents/)正しい選択です。このように定義できます：

```none
async def create_root_agent():
    # Load the MCP tools
    mcp_tools, exit_stack = await initialize_mcp_tools()

    # Define an agent that applies the configured sub-agents sequentially
    root_agent = SequentialAgent(
        name="web_research_agent",
        description="An agent that researches topics on the web and creates comprehensive reports.",
        sub_agents=[
            create_planner_agent(),
            create_researcher_agent(mcp_tools),
            create_publisher_agent(),
        ]
    )

    return root_agent, exit_stack
```

これを動作させるために、Google ADKは`agent.py`ファイルに`root_agent`変数を定義することを期待します。そのためには

```none
root_agent = create_root_agent()
```

**注意**：ここで`awaitを`使わずに`非同期`関数を呼び出すことは気にしないでください。これはGoogle ADKの公式ドキュメントで推奨されている方法です。このように、フレームワークがあなたの代わりに非同期実行を処理します。

よくやった！Bright Data MCPサーバーとGoogle ADKの統合が完了しました。

### ステップ8：すべてをまとめる

これで、`agent.py`ファイルには

```none
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

# Load the environment variables from the .env file
load_dotenv()

# Read the envs for integration with the Bright Data MCP server
BRIGHT_DATA_API_TOKEN = os.getenv("BRIGHT_DATA_API_TOKEN")
BRIGHT_DATA_BROWSER_AUTH = os.getenv("BRIGHT_DATA_BROWSER_AUTH")

# Define the functions for the creation of the required sub-agents
def create_planner_agent():
    return Agent(
        name="planner",
        model="gemini-2.0-flash",
        description="Breaks down user input into focused search queries for research purposes.",
        instruction="""
        You are a research planning assistant. Your task is to:
        1. Analyze the user"s input topic or question.
        2. Break it down into 3 to 5 focused and diverse search engine-like queries that collectively cover the topic.
        3. Return your output as a JSON object in the following format:

        {
            "queries": ["query1", "query2", "query3"]
        }

        IMPORTANT:
        - The queries should be phrased as if typed into a search engine.
        """,
        output_key="search_queries"
    )

def create_researcher_agent(mcp_tools):
    return Agent(
        name="researcher",
        model="gemini-2.0-flash",
        description="Performs web searches and extracts key insights from web pages using the configured tools.",
        instruction="""
        You are a web research agent. Your task is to:
        1. Receive a list of search queries from the planner agent.
        2. For each search query, apply the `search_engine` tool to get Google search results.
        3. From the global results, select the top 3 most relevant URLs.
        4. Pass each URL to the `scraping_browser_navigate` tool.
        5. From each page, use the `scraping_browser_get_text` tool to extract the main page content.
        6. Analyze the extracted text and summarize the key insights in the following JSON format:
        [
            {
                "url": "https://example.com",
                "insights": [
                    "Main insight one",
                    "Main insight two"
                ]
            },
            ...
        ]

        IMPORTANT:
        - You are only allowed to use the following tools: `search_engine`, `scraping_browser_navigate`, and `scraping_browser_get_text`.
        """,
        tools=mcp_tools
    )

def create_publisher_agent():
    return Agent(
        name="publisher",
        model="gemini-2.0-flash",
        description="Synthesizes research findings into a comprehensive, well-structured final document.",
        instruction="""
        You are an expert writer. Your task is to take the structured research output from the scraper agent and craft a clear, insightful, and well-organized report.

        GUIDELINES:
        - Use proper Markdown-like structure: title (#), subtitle, introduction, chapters (##), subchapters (###), and conclusion (##).
        - Integrate contextual links (where needed) using the URLs from the output of the researcher agent.
        - Maintain a professional, objective, and informative tone.
        - Go beyond restating findings—synthesize the information, connect ideas, and present them as a coherent narrative.
        """
    )

# To load the MCP tools exposed by the Bright Data MCP server
async def initialize_mcp_tools():
    print("Connecting to 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"MCP Toolset created successfully with {len(tools)} tools")
    tool_names = [tool.name for tool in tools]
    print(f"Available tools include: {", ".join(tool_names)}")

    print("MCP initialization complete!")

    return tools, exit_stack

# Define the root agent required by Google ADK to start
async def create_root_agent():
    # Load the MCP tools
    mcp_tools, exit_stack = await initialize_mcp_tools()

    # Define an agent that applies the configured sub-agents sequentially
    root_agent = SequentialAgent(
        name="web_research_agent",
        description="An agent that researches topics on the web and creates comprehensive reports.",
        sub_agents=[
            create_planner_agent(),
            create_researcher_agent(mcp_tools),
            create_publisher_agent(),
        ]
    )

    return root_agent, exit_stack

# Google ADK will load the root agent in the web UI or CLI
root_agent = create_root_agent()
```

プロジェクトのルートフォルダで、仮想環境を有効にして、ウェブUIでAIエージェントを起動します：

```none
adk web
```

`http://localhost:800`0、以下のアプリケーションが起動する`：`

![左サイドバーには、イベント、ステート、アーティファクト、セッション、評価のタブがあり、中央には「会話なし」を示すエリアと、下部に「メッセージを入力...」と書かれたテキスト入力エリア、マイクとビデオオプションのアイコンがある。](https://media.brightdata.com/2025/05/The-Google-ADK-web-platform.png)最初のリクエストを実行すると、Google ADK ライブラリは`root_agent`変数にアクセスしようとする。これは`create_root_agent()`関数をトリガーし、次に`initialize_mcp_tools() を`呼び出す。

その結果、ターミナルにはこう表示される：

```none
Connecting to Bright Data MCP...
Checking for required zones...
Required zone "mcp_unlocker" already exists
Starting server...
MCP Toolset created successfully with 30 tools
Available tools include: 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, web_data_x_posts, web_data_zillow_properties_listing, web_data_booking_hotel_listings, web_data_youtube_videos, scraping_browser_navigate, scraping_browser_go_back, scraping_browser_go_forward, scraping_browser_links, scraping_browser_click, scraping_browser_type, scraping_browser_wait_for, scraping_browser_screenshot, scraping_browser_get_text, scraping_browser_get_html
MCP initialization complete!
```

ご覧のように、Google ADKは30個のBright Data MCPツールを正しくロードしました。
これで、チャットにリクエストを入力すると、AIエージェントが

1. リクエストを検索エンジン風のキーワードに変換します。
2. これらのキーワードを`search_engine`MCPツールに送る ```
    。
    ```
3. これらの洞察に基づいて、文脈に関連した記事やレポートを作成し、クエリに回答します。

ステップ#6で述べたように、Gemini（または他のLLM）はMCPツールを完全にスキップする場合があることに注意してください。それは、たとえそれらがコード内で設定され、サブエージェントのプロンプトで明示的に言及されていたとしても同様です。詳細には、推奨されるMCPツールを使用せずに、直接応答を返したり、サブエージェントを実行したりすることがあります。

この副作用を避けるには、サブエージェントのプロンプトを慎重に調整してください。また、Google ADKのMCP統合はまだ進化しており、必ずしも期待通りに動作するとは限らないことを覚えておいてほしい。したがって、ライブラリが最新であることを確認してください。

さて、最近選出されたローマ法王の経歴を知りたいとする。通常、LLMは時事的なクエリに苦労するでしょう。しかし、Bright DataのSERP APIとウェブスクレイピング機能のおかげで、AIエージェントはリアルタイムの情報を簡単に取得し、要約することができます：

![AIエージェントが、実際の検証可能な情報源に裏打ちされた結果を提供していることに注目してください。](https://media.brightdata.com/2025/05/Notice-how-the-AI-agent-provides-a-result-backed-by-real-verifiable-sources.png)やった！ミッション完了。

## 結論

このブログポストでは、Google ADKフレームワークをBright Data MCPと組み合わせて使用し、Pythonで強力なAIエージェントを構築する方法を学びました。

このように、機能豊富なMCPサーバーとGoogle ADKを組み合わせることで、ウェブからリアルタイムのデータを取得できるAIエージェントを作成することができます。これは、ブライト・データのツールやサービスが、AI主導の高度なオートメーションにどのように力を与えることができるかの一例に過ぎません。

AIエージェント開発のためのソリューションをご覧ください：

- [**自律型AIエージェント**](/ai/data-for-ai-agents)：強力なAPIセットを使って、あらゆるウェブサイトをリアルタイムで検索、アクセス、対話。
- [**業種別AIアプリ**](/ai/data-for-vertical-ai-solutions)：信頼性の高いカスタムデータパイプラインを構築し、業種固有のソースからウェブデータを抽出します。
- [**基礎モデル**](/ai/data-for-llms-and-foundation-models)：ウェブスケールのデータセットにアクセスし、事前学習、評価、微調整を行うことができます。
- [**マルチモーダルAI**](/ai)：AIに最適化された世界最大の画像、動画、音声のリポジトリを利用できます。
- [**データプロバイダー**](/blog/ウェブデータ/best-b2b-data-providers)：信頼できるプロバイダーと接続し、高品質でAIに対応したデータセットを大規模に調達。
- [**データパッケージ**](/ai/data-packages-for-ai)：キュレーションされた、すぐに使える、構造化された、エンリッチされた、注釈付きのデータセットを入手。

詳しくは[AIハブを](/ai)ご覧ください。

ブライトデータのアカウントを作成し、AIエージェント開発のためのすべての製品とサービスをお試しください！



お問い合わせ無料トライアル![google social icon](/wp-content/themes/brightdata/assets/images/ic_google.svg)









 目次







日本企業向けデータソリューション

日本のトップ企業が信頼するスケーラブルなウェブデータプラットフォーム。日本語24時間サポート、GDPR・個人情報保護法準拠、日本企業20社以上の導入実績。

[詳細を見る](https://brightdata.jp/solutions/data-solutions-for-japanese-companies "詳細を見る")







 [ ](https://news.ycombinator.com/submitlink?t=AI%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E9%96%8B%E7%99%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEGoogle+ADK%E3%81%A8MCP%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E7%B5%B1%E5%90%88&u=https://brightdata.jp/blog/ai/google-adk-with-bright-data-mcp-server) [ ](https://www.linkedin.com/shareArticle?mini=true&title=AI%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E9%96%8B%E7%99%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEGoogle+ADK%E3%81%A8MCP%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E7%B5%B1%E5%90%88&url=https://brightdata.jp/blog/ai/google-adk-with-bright-data-mcp-server) [ ](http://www.reddit.com/submit?title=AI%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E9%96%8B%E7%99%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEGoogle+ADK%E3%81%A8MCP%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E7%B5%B1%E5%90%88&url=https://brightdata.jp/blog/ai/google-adk-with-bright-data-mcp-server)







##  あなたは下記にもご興味がおありかもしれません

 [ ![OpenHuman with Bright Data](https://media.brightdata.jp/2026/09/OpenHuman-with-Bright-Data.png) ](https://brightdata.jp/blog/ai/openhuman-with-bright-data "Bright Data CLIを通じたOpenHumanにおける本番対応ウェブアクセス")

 [AI



 ![Antonello Zanini](https://media.brightdata.jp/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Bright Data CLIを通じたOpenHumanにおける本番対応ウェブアクセス

Bright Data CLIをOpenHumanに統合して、AIエージェント向けの本番対応ウェブアクセスとデータ収集を実現します。



 09-Sep-2026

 3 分読

 ](https://brightdata.jp/blog/ai/openhuman-with-bright-data)

 [ ![Multimodal Web Scraping with MiniMax](https://media.brightdata.jp/2026/09/Multimodal-Web-Scraping-with-MiniMax.png) ](https://brightdata.jp/blog/%e3%82%a6%e3%82%a7%e3%83%96%e3%83%87%e3%83%bc%e3%82%bf/multimodal-web-scraping-with-minimax "MiniMaxによるマルチモーダルウェブスクレイピング")

 [ウェブデータ



 ![Antonello Zanini](https://media.brightdata.jp/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### MiniMaxによるマルチモーダルウェブスクレイピング

Bright Data Web UnlockerとMiniMax M3ビジョンを組み合わせて、画像やウェブページのスクリーンショットから構造化データを抽出します。



 09-Sep-2026

 1 分読

 ](https://brightdata.jp/blog/%e3%82%a6%e3%82%a7%e3%83%96%e3%83%87%e3%83%bc%e3%82%bf/multimodal-web-scraping-with-minimax)

 [ ![The 10 Best CLI Tools for Codex in 2026](https://media.brightdata.jp/2026/08/The-10-Best-CLI-Tools-for-Codex-in-2026.png) ](https://brightdata.jp/blog/ai/best-cli-tools-for-codex "2026年版 Codex向けCLIツール10選 – テスト＆ランキング")

 [AI



 ![Daniel Shashko](https://media.brightdata.jp/2022/04/Daniel-Shashko-2-50x50.png)

Daniel Shashko

Web Data &amp; AI Expert





### 2026年版 Codex向けCLIツール10選 – テスト＆ランキング

Codexをより速く、より有能にする10のCLIツール。サンドボックス内から実際のウェブアクセスを提供するBright Data CLIから始まります。



 06-Sep-2026

 4 分読

 ](https://brightdata.jp/blog/ai/best-cli-tools-for-codex)
