700 以上のラボとコースにアクセス

ADK エージェントで Model Context Protocol(MCP)ツールを使用する

ラボ 1時間 universal_currency_alt クレジット: 7 show_chart 上級
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
700 以上のラボとコースにアクセス

GENAI124

概要

このラボでは、外部のサービス、データソース、ツール、アプリケーションをシームレスに統合できるオープン スタンダードである Model Context Protocol(MCP)について確認します。既存の MCP サーバーが提供するツールを使用して MCP を ADK エージェントに統合し、ADK ワークフローを強化する方法を学びます。さらに、カスタム構築の MCP サーバーを通じて load_web_page などの ADK ツールを公開し、MCP クライアントとの統合を拡大する方法も紹介します。

Model Context Protocol(MCP)とは

Model Context Protocol(MCP)は、Gemini や Claude などの大規模言語モデル(LLM)が外部のアプリケーション、データソース、ツールと通信する方法を標準化するために設計されたオープン標準です。LLM がコンテキストを取得し、アクションを実行し、さまざまなシステムとやり取りする方法を簡素化する、ユニバーサルな接続メカニズムと考えてください。

MCP はクライアント / サーバー アーキテクチャに従っており、データ(リソース)、インタラクティブ テンプレート(プロンプト)、アクション可能な関数(ツール)が MCP サーバーによって公開され、MCP クライアント(LLM ホスト アプリケーションまたは AI エージェント)によって使用される方法を定義します。

このラボでは、2 つの主要な統合パターンについて説明します。

  • ADK 内で既存の MCP サーバーを使用する: ADK エージェントは MCP クライアントとして機能し、外部の MCP サーバーが提供するツールを活用します。
  • MCP サーバーを介して ADK ツールを公開する: ADK ツールをラップする MCP サーバーを構築し、あらゆる MCP クライアントがアクセスできるようにします。

目標

このラボでは、次の方法について学びます。

  • ADK エージェントを MCP クライアントとして使用して、既存の MCP サーバーのツールとやり取りする。
  • 独自の MCP サーバーを構成してデプロイし、ADK ツールを他のクライアントに公開する。
  • 標準化された MCP 通信を通じて、ADK エージェントを外部ツールに接続する。
  • Model Context Protocol を使用して、LLM とツール間のシームレスなインタラクションを実現する。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は制限されており、一時停止することはできません。[ラボを開始] ボタンをクリックするとタイマーが開始され、Cloud リソースを利用できる時間が表示されます。

この Qwiklabs ハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。一時的な認証情報が新しく提供されるため、ラボ受講中の Google Cloud Platform へのログインおよびアクセスにはその認証情報を使用してください。

前提条件

このラボを完了するには、次のものが必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)。
  • ラボを完了するために必要な時間。

注: すでに個人の GCP アカウントやプロジェクトをお持ちの場合でも、そのアカウントやプロジェクトはラボでは使用しないでください。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの詳細] ペインでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] ペインでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニュー アイコンと検索フィールド

タスク 1. ADK をインストールして環境を設定する

注: ほとんどの Qwiklabs では、Qwiklabs 受講者アカウントと Google Cloud にログインしている他のアカウントとの混同を避けるために、ブラウザのシークレット ウィンドウを使用することをおすすめします。Chrome を使用している場合は、シークレット ウィンドウをすべて閉じてから、このラボの上部にある [Google Cloud コンソールを開く] ボタンを右クリックし、[シークレット ウィンドウでリンクを開く] を選択するのが最も簡単な方法です。

推奨 API を有効にする

  1. このラボ環境では、Vertex AI API、Routes API、Directions API が有効になっています

Cloud Shell エディタタブを準備する

  1. Google Cloud コンソール ウィンドウを選択した状態で、キーボードの G キーを押してから S キーを押して、Cloud Shell を開きます。または、Cloud コンソールの右上にある「Cloud Shell をアクティブにする」ボタン Cloud Shell をアクティブにする をクリックします。

  2. [続行] をクリックします。

  3. Cloud Shell を承認するよう求められたら、[承認] をクリックします。

  4. Cloud Shell ターミナル パネルの右上にある「新しいウィンドウで開く」ボタン(「新しいウィンドウで開く」ボタン)をクリックします。

  5. Cloud Shell ターミナルで、次のコマンドを入力して Cloud Shell エディタをホーム ディレクトリで開きます。

    cloudshell workspace ~
  6. 画面の右側に表示される追加のチュートリアルや Gemini のパネルを閉じると、コードエディタのウィンドウをより広く使用できます。

  7. このラボの残りの部分では、このウィンドウを Cloud Shell エディタと Cloud Shell ターミナルを備えた IDE として使用できます。

このラボの ADK とコードサンプルをダウンロードしてインストールする

  1. Cloud Shell ターミナルで次のコマンドを実行して、ADK をインストールします。

    注: インストールする ADK のバージョンが、このラボで使用されるバージョンと一致するように、バージョンを指定します。最新のバージョン番号とリリースノートは、adk-python リポジトリで確認できます。 sudo python3 -m pip install google-adk==1.5.0
  2. 次のコマンドを Cloud Shell ターミナルに貼り付けて、Cloud Storage バケットからファイルをコピーして解凍し、このラボのコードを含むプロジェクト ディレクトリを作成します。

    gcloud storage cp gs://{{{project_0.project_id| YOUR_GCP_PROJECT_ID}}}-bucket/adk_mcp_tools.zip . unzip adk_mcp_tools.zip
  3. 次のコマンドでラボの追加要件をインストールします。

    python3 -m pip install -r adk_mcp_tools/requirements.txt

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ADK をインストールして環境を設定する

タスク 2. adk ウェブで ADK エージェント(MCP クライアントとしての ADK)とともに Google マップ MCP サーバーを使用する

このセクションでは、外部の Google マップ MCP サーバーのツールを ADK エージェントに統合する方法を説明します。これは、ADK エージェントが MCP インターフェースを公開する既存のサービスが提供する機能を使用する必要がある場合に最も一般的な統合パターンです。MCPToolset クラスをエージェントの tools リストに直接追加することで、MCP サーバーへのシームレスな接続やツールの検出を可能にし、エージェントがツールを使用できるようにする方法を確認します。これらの例は、主に adk web 開発環境内でのやり取りに焦点を当てています。

MCPToolset

MCPToolset クラスは、MCP サーバーのツールを統合するための ADK の主要なメカニズムです。エージェントの tools リストに MCPToolset インスタンスを含めると、指定された MCP サーバーとのやり取りが自動的に処理されます。仕組みは次のとおりです。

  • 接続管理: 初期化時に、MCPToolset は MCP サーバーへの接続を確立して管理します。これは、ローカル サーバー プロセス(標準入出力経由の通信に StdioServerParameters を使用)またはリモート サーバー(サーバー送信イベントに SseServerParams を使用)にできます。また、エージェントまたはアプリケーションが終了すると、この接続の正常なシャットダウンも処理されます。
  • ツールの検出と適応: 接続が確立されると、MCPToolset は MCP サーバーに利用可能なツールを問い合わせます(list_tools MCP メソッドを使用)。その後、検出された MCP ツールのスキーマを ADK 互換の BaseTool インスタンスに変換します。
  • エージェントへの公開: これらの適応されたツールは、ネイティブの ADK ツールであるかのように、LlmAgent で使用できるようになります。
  • ツール呼び出しのプロキシ: LlmAgent がこれらのツールのいずれかを使用することを決定すると、MCPToolset は(call_tool MCP メソッドを使用して)呼び出しを MCP サーバーに透過的にプロキシし、必要な引数を送信して、サーバーのレスポンスをエージェントに返します。
  • フィルタリング(省略可): MCPToolset を作成する際に tool_filter パラメータを使用すると、MCP サーバーから特定のツールのサブセットを選択できます。これにより、すべてのツールをエージェントに公開する必要がなくなります。

API キーを取得して API を有効にする

このサブセクションでは、GOOGLE_MAPS_API_KEY という名前の新しい API キーを生成します。

  1. Google Cloud コンソールが表示されているブラウザタブを開きます(Cloud Shell エディタではありません)。

  2. このブラウザタブで Cloud Shell ターミナル ペインを閉じて、コンソール領域を広げます。

  3. ページ上部の検索バーで「認証情報」を検索します。検索結果から選択します。

    [認証情報] ページ

  4. [認証情報] ページで、ページ上部にある [+ 認証情報の作成] をクリックし、[API キー] を選択します。

    [作成された API キー] ダイアログに、新しく作成された API キーが表示されます。このキーをローカルに保存して、ラボで後ほど使用できるようにします。

  5. ダイアログ ボックスで [閉じる] をクリックします。

    新しく作成されたキーは、デフォルトで「API キー 1」という名前になります。キーを選択し、名前を GOOGLE_MAPS_API_KEY に変更して、[保存] をクリックします。

    Google マップキー

Google マップの MCPToolset を使用してエージェントを定義する

このサブセクションでは、Google マップの MCPToolset を使用するようにエージェントを構成し、ルートや位置情報をシームレスに提供できるようにします。

  1. Cloud Shell エディタのファイル エクスプローラ ペインで、adk_mcp_tools フォルダを見つけます。クリックして開きます。

  2. ディレクトリ adk_mcp_tools/google_maps_mcp_agent に移動します。

  3. 次のコマンドをプレーン テキスト ファイルに貼り付け、YOUR_ACTUAL_API_KEY の値を、前の手順で生成して保存した Google Maps API キーに更新します。

    cd ~/adk_mcp_tools cat << EOF > google_maps_mcp_agent/.env GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT={{{project_0.project_id | Project }}} GOOGLE_CLOUD_LOCATION={{{ project_0.default_region | Region}}} GOOGLE_MAPS_API_KEY="YOUR_ACTUAL_API_KEY" EOF
  4. 更新されたコマンドをコピーして Cloud Shell ターミナルに貼り付け、実行して .env ファイルを書き込みます。このファイルには、このエージェント ディレクトリの認証の詳細が記載されます。

  5. 次のコマンドを実行して、.env ファイルをこのラボで使用する他のエージェント ディレクトリにコピーします。

    cp google_maps_mcp_agent/.env adk_mcp_server/.env
  6. 次に、agent.py ファイルの指定された場所に次のコードを追加して、Google マップツールをエージェントに追加します。これにより、エージェントは Google マップの MCPToolset を使用して、経路や位置情報を提供できるようになります。

    tools=[ MCPToolset( connection_params=StdioConnectionParams( server_params=StdioServerParameters( command='npx', args=[ "-y", "@modelcontextprotocol/server-google-maps", ], env={ "GOOGLE_MAPS_API_KEY": google_maps_api_key } ), timeout=15, ), ) ],
  1. adk_mcp_tools プロジェクト ディレクトリから、次のコマンドで Agent Development Kit 開発 UI を起動します。

    adk web

    出力:

    INFO: Started server process [2434] INFO: Waiting for application startup. +----------------------------------------------------+ | ADK Web Server started | | | | For local testing, access at http://localhost:8000.| +----------------------------------------------------+ INFO: Application startup complete. INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
  2. ウェブ インターフェースを新しいタブで表示するには、ターミナルの出力にある http://127.0.0.1:8000 リンクをクリックします。

  3. 新しいブラウザタブが開き、ADK 開発 UI が表示されます。左側の [エージェントを選択] プルダウンから、[google_maps_mcp_agent] を選択します。

  4. エージェントとの会話を開始し、次のプロンプトを実行します。

    Googleplex から SFO までの経路を教えて。 注: API を初めて使用するときにタイムアウトした場合は、ADK 開発 UI の右上にある [+ 新しいセッション] をクリックして、もう一度お試しください。 フランスのパリからドイツのベルリンまでのルートを教えて。

    出力:

    エージェントの回答

  1. 稲妻のマークが表示されたエージェントのチャットバブルの横のエージェントのアイコンをクリックします。これは関数呼び出しを示しています。このイベントのイベント インスペクタが開きます。

    ADK のツール呼び出し
  2. エージェント グラフには、レンチの絵文字(🔧)で示されているように、いくつかの異なるツールが表示されていますMCPToolset を 1 つだけインポートしましたが、このツールセットには、maps_place_detailsmaps_directions など、ここにリストされているさまざまなツールが付属しています。

    エージェントのグラフには複数のツールが示されている
  3. [リクエスト] タブでは、リクエストの構造を確認できます。イベント インスペクタの上部にある矢印を使用して、エージェントの思考、関数呼び出し、レスポンスを閲覧できます。

  4. このエージェントへの質問が終わったら、開発 UI のブラウザタブを閉じます。

  5. Cloud Shell ターミナル パネルに戻り、Ctrl+C キーを押してサーバーを停止します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 API キーを作成し、ADK エージェントをデプロイする

タスク 3. ADK ツールを使用して MCP サーバーを構築する(ADK を公開する MCP サーバー)

このセクションでは、カスタム構築の MCP サーバーを介して ADK load_web_page ツールを公開する方法を学びます。このパターンを使用すると、既存の ADK ツールをラップして、標準の MCP クライアント アプリケーションからアクセスできるようにすることができます。

MCP サーバー スクリプトを作成し、サーバー ロジックを実装する

  1. Cloud Shell エディタのタブに戻り、adk_mcp_tools/adk_mcp_server ディレクトリを選択します。

  2. adk_server.py という名前の Python ファイルが用意されており、コメントが追加されています。時間を取ってそのファイルを確認し、コメントを読んで、コードがツールをラップして MCP サーバーとして提供する方法を理解してください。MCP クライアントが利用可能なツールを一覧表示できるだけでなく、ADK ツールを非同期で呼び出して、MCP 準拠の形式でリクエストとレスポンスを処理できることに注目してください。

ADK エージェントでカスタム MCP サーバーをテストする

  1. adk_mcp_server ディレクトリの agent.py ファイルをクリックします。

  2. adk_server.py ファイルへのパスを更新します。

    /home/{{{project_0.startup_script.updated_lab_username | Username}}}/adk_mcp_tools/adk_mcp_server/adk_server.py
  3. 次に、agent.py ファイルの指定された場所に次のコードを追加して、エージェントに MCPToolset を追加します。ADK エージェントは MCP サーバーのクライアントとして機能します。この ADK エージェントは MCPToolset を使用して adk_server.py スクリプトに接続します。

    tools=[ MCPToolset( connection_params=StdioConnectionParams( server_params=StdioServerParameters( command="python3", # MCP サーバー スクリプトを実行するコマンド args=[PATH_TO_YOUR_MCP_SERVER_SCRIPT], # 引数はスクリプトのパス ), timeout=15, ), tool_filter=['load_web_page'] # 省略可: 特定のツールのみが読み込まれるようにする ) ],
  4. MCP サーバーを実行するには、Cloud Shell ターミナルで次のコマンドを実行して adk_server.py スクリプトを起動します。

    python3 ~/adk_mcp_tools/adk_mcp_server/adk_server.py

    出力:

    MCP サーバー

  5. Cloud Shell ターミナル ウィンドウの上部にある セッションを追加するボタン ボタンをクリックして、新しい Cloud Shell ターミナルタブを開きます。

  6. Cloud Shell ターミナルで、adk_mcp_tools プロジェクト ディレクトリから次のコマンドで Agent Development Kit 開発 UI を起動します。

    cd ~/adk_mcp_tools adk web
  7. ウェブ インターフェースを新しいタブで表示するには、ターミナルの出力にある http://127.0.0.1:8000 リンクをクリックします。

  8. 左側の [エージェントを選択] プルダウンから、[adk_mcp_server] を選択します。

  9. エージェントに次のクエリを実行します。

    https://example.com からコンテンツを読み込む。

    出力:

    エージェントの応答

    ここでは次のことが行われます。

    1. ADK エージェント(web_reader_mcp_client_agent)は MCPToolset を使用して adk_server.py に接続します。
    2. MCP サーバーは call_tool リクエストを受信し、ADK load_web_page ツールを実行して結果を返します。
    3. ADK エージェントがこの情報を中継します。 Cloud Shell ターミナルのタブで、ADK ウェブ UI(およびそのターミナル)と adk_server.py ターミナルの両方からのログが表示されます。

    これは、ADK ツールを MCP サーバー内にカプセル化して、ADK エージェントを含む幅広い MCP 準拠クライアントからアクセスできるようにできることを示しています。

お疲れさまでした

このラボを終えると、MCPToolset クラスを使用して、外部の Model Context Protocol(MCP)ツールを ADK エージェントに統合する方法を理解できます。

MCP サーバーに接続し、エージェント内でそのツールを使用する方法、カスタム MCP サーバーを介して load_web_page などの ADK ツールを公開する方法を学びました。

これらのスキルにより、強力な外部サービスで ADK エージェントを拡張し、ウェブ開発ワークフローを強化できます。

マニュアルの最終更新日: 2025 年 9 月 3 日

ラボの最終テスト日: 2025 年 9 月 3 日

Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。