Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第164回 雲勉 Agent Development Kit と MCP Toolbox fo...

第164回 雲勉 Agent Development Kit と MCP Toolbox for Databases で MCP 連携してみた

下記、勉強会での資料です。
https://youtu.be/u4TQpM_NAxw

Avatar for iret.kumoben

iret.kumoben

June 20, 2025
Tweet

More Decks by iret.kumoben

Other Decks in Technology

Transcript

  1. 第164回 雲勉 Agent Development Kit と 
 MCP Toolbox for

    Databasesで 
 MCP 連携してみた 

  2. 講師自己紹介 2
 ▪ 山際 哲哉
 • DX開発事業部 モダンエンジニアリングセクション
 • 2025年2月

    アイレットに入社
 • 2025年5月に Google Cloud 資格全冠しました!
 • ご質問は YouTubeのコメント欄で受け付けております。
 後日回答させていただきます!
 

  3. 1.本日のゴール 
 5
 ▪ Agent Development Kit
 ◦ AI エージェントとは何か


    ◦ Agent Development Kit とは何か 
 ▪ MCP Toolbox for Databases 
 ◦ MCP とは何か
 ▪ これらのツールを Google Cloud にデプロイし、動作確認を行う
 

  4. 2.AI エージェントと MCP 
 7
 ▪ AI エージェント
 • 目標を達成するために、必要なタスクを自律的に思考、アクション、観察を繰り返す

    AI のこ と
 • Tools を使用して外部データやサービスと連携可能
 会話
 AI エージェント 
 思考 アクション 観察 Tools Tool 1 Tool 2
  5. 2.AI エージェントと MCP 
 8
 ▪ Agent Development Kit (ADK)

    • Google Cloud が提供する AI エージェントを構築するための Python ライブラリ
 • 特徴
 
 https://google.github.io/adk-docs/ 
 マルチエージェント設計 複数の専門化されたエージェントを階層的に構成し、複雑な連携と 委任が可能 豊富なモデルエコシステム Gemini や Vertex AI Model Garden のモデルや Anthropic、Meta、etc 多様なツールエコシステム 検索、コード実行などの事前構築済みツール、 MCP ツール、etc 組み込みのストリーミング機能 双方向のオーディオおよびビデオストリーミング 統合された開発者体験 CLI や Web UI により、開発、テスト、デバッグが容易
  6. 2.AI エージェントと MCP 
 9
 
 
 MCP サーバー 


    MCP サーバー 
 MCP サーバー 
 MCP ホスト 
 データソース 
 データソース 
 インターネット 
 Web API 
 ▪ MCP (Model Context Protocol) • LLM が外部アプリやデータソースやツールと通信する方法を標準化した仕組み

  7. 2.AI エージェントと MCP 
 10
 ▪ MCP Toolbox for Databases

    • DB 用のオープンソース MCP サーバー
 • エージェントが DB にアクセスできるように
 するツール
 • Google Cloud の DB サービスにも対応 
 https://github.com/googleapis/genai-toolbox 

  8. 3.実践
 12
 ▪ 構築する AI エージェント
 • 架空のホテル の検索と詳細を質問できる
 


    
 
 ルート
 エージェント 
 検索
 エージェント 
 詳細
 エージェント 
 BigQuery Vertex AI Search
  9. 3.実践
 13
 ▪ MCP クライアント
 • ADK で構築したエージェント
 ▪ MCP

    サーバー
 • MCP Toolbox for Databases で構築したサーバー
 ▪ DB • BigQuery ▪ 非構造化データ検索
 • Vertex AI Search 
 
 

  10. 3.実践
 14
 ▪ アーキテクチャ
 Architecture: Agent Development Kit &MCP Toolbox

    for Databases Direct VPC Egress 許可された Google 
 アカウントのみアクセス許可 
 上り(内向き)の制御:内部 

  11. 3.実践
 16
 ▪ MCP Toolbox for Databases の記載
 ◦ yaml

    で Tools を定義する
 
 ▪ sources
 ◦ 操作するデータソース
 ▪ tools
 ◦ エージェントが使用するツール
 ▪ toolsets
 ◦ ツールグループ
 ◦ 異なるエージェントやアプリ毎に異なる
 セットを定義するのに役立つ
 
 
 sources: my-bigquery-source: kind: "bigquery" project: "PROJECT_ID" tools: search-hotels-by-location: kind: bigquery-sql source: my-bigquery-source description: | Search for hotels based on location. Example: {{ "location": "東京", }} parameters: - name: location type: string description: The location of the hotel. statement: SELECT * FROM `DATASET.hotels` WHERE location = @location; toolsets: my_first_toolset: - search-hotels-by-name - search-hotels-by-location - search-hotels-by-booked
  12. 3.実践
 17
 ▪ MCP Toolbox for Databases を Cloud Run

    にデプロイ
 ◦ gcloud コマンド or コンソール上からデプロイする
 ◦ サービスアカウントには、以下ロールを付与
 ▪ Secret Manager のシークレット アクセサー
 ▪ BigQuery データ閲覧者
 ▪ BigQuery ユーザー
 
 
 
 
 gcloud run deploy toolbox \ --image $IMAGE \ --service-account toolbox-service-account \ --region asia-northeast1 \ --set-secrets "/app/tools.yaml=tools:latest" \ --args="--tools_file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \ –ingress "internal"
  13. 3.実践
 18
 ▪ ADK でエージェントの構築
 ▪ 検索エージェントの定義
 ◦ ToolboxTool を使用して、


    tools をエージェントに渡す
 
 
 
 from google.adk.agents import Agent from google.adk.tools.toolbox_tool import ToolboxTool toolbox = ToolboxTool("TOOLBOX_URL") tools = toolbox.get_toolset(toolset_name="my_first_toolset") bq_agent = Agent( model="gemini-2.0-flash", name="bq_agent", description=("都市内のホテルやホテル名、予約状況に関する質問に答えるエージェン ト。"), instruction=( "あなたは、特定の都市にあるホテルやホテル名、予約状況に関するユーザーの質問に 答えられる、役立つエージェントです。ツールを使って質問に答えましょう。" ), tools=tools, )
  14. 3.実践
 19
 ▪ ADK でエージェントの構築
 ▪ 詳細エージェントの定義
 ◦ VertexAiSearchTool を使用して、


    tools をエージェントに渡す
 
 
 
 from google.adk.agents import Agent from google.adk.tools import VertexAiSearchTool vertex_search_tool = VertexAiSearchTool( data_store_id="DATA_STORE_ID" ) info_agent = Agent( model="gemini-2.0-flash", name="info_agent", description=("札幌ガーデンホテルの情報に関するユーザーの質問に答えるエージェント。"), instruction=( "あなたは札幌ガーデンホテルの情報に関するユーザーの質問に答えられる、役立つエージェ ントです。ツールを使って質問に答えましょう。" ), tools=[vertex_search_tool], )
  15. 3.実践
 20
 ▪ ADK でエージェントの構築
 ▪ ルートエージェントの定義
 ◦ Agent as

    a Tool として定義した
 Agent を Tool に渡す
 
 ▪ Agent as a Tool
 ◦ Agent AがAgent Bを道具として
 使い、Bの回答をAが受け取って
 ユーザーに応答
 ▪ サブエージェント
 ◦ Agent AがAgent Bに処理を任せ、
 ユーザーへの応答責任は完全にBに移る
 
 from google.adk.agents import Agent from google.adk.tools.agent_tool import AgentTool root_agent = Agent( model="gemini-2.0-flash", name="hotel_agent", description=("ホテルに関する質問に答えるエージェント。"), instruction=( "あなたはホテルに関するユーザーの質問に答えられる、役立つエージェントです。\n" "都市内のホテルやホテル名、予約状況に関する質問は bq_agent を使用します。\n" "札幌ガーデンホテルの情報に関する質問は info_agent を使用します。" ), tools=[AgentTool(agent=bq_agent), AgentTool(agent=info_agent)], )
  16. 3.実践
 21
 ▪ ADK を Cloud Run にデプロイ (Vertex AI

    Agent Engine でも可)
 ◦ adk コマンドが用意されている
 ◦ サービスアカウントには、以下ロールを付与
 ▪ Cloud Run サービス起動元
 ▪ Vertex AI ユーザー
 ▪ ディスカバリー エンジン ユーザー
 
 
 
 
 
 ◦ Artifact Registry に push され、Cloud Run にサービスがデプロイされる
 adk deploy cloud_run \ --project=$GOOGLE_CLOUD_PROJECT \ --region=$GOOGLE_CLOUD_LOCATION \ --service_name=$SERVICE_NAME \ --app_name=$APP_NAME \ --with_ui \ $AGENT_PATH
  17. 3.実践
 28
 ▪ 評価
 ▪ Tool の使用や最終応答の評価を行うことができる
 ▪ Json 形式でテストファイルを記述

    
 
 
 
 [ { "name": "東京のホテル検索", "data": [ { "query": "東京のホテルを検索してください", "expected_tool_use": [{"tool_name": "bq_agent", "tool_input": {"request": "東京のホテルを検索してください"}}], "expected_intermediate_agent_responses": [], "reference": "デザイナーズホテル東京とホテル東京駅前と東 京ベイホテルがあります。" } ], "initial_session": { "state": {}, "app_name": "hotels", "user_id": "user" } ]
  18. 4.まとめ 
 31
 ▪ Agent Development Kit を使用すると、簡単に AI エージェントを構築できる


    ◦ Cloud Run や Vertex AI Agent Engine にデプロイできる
 
 ▪ MCP Toolbox for Databases を使用すると、簡単に DB の操作ができる MCP 
 サーバーを構築できる
 
 ▪ これらのツールを Google Cloud にデプロイし、動作確認ができる