エージェントを作り上げるツール: ADK を使用してゼロからアシスタントを作成

Jack Wotherspoon
Developer Advocate
Megan O'Keefe
Developer Advocate
【Next Tokyo ’25】
【Next Tokyo】120 以上のセッションをアーカイブ公開中。話題の Gemini、生成 AI、AI エージェントなどの Google Cloud のアップデートや顧客事例をチェックしましょう。
視聴はこちら※この投稿は米国時間 2025 年 6 月 27 日に、Google Cloud blog に投稿されたものの抄訳です。
あなたは、世界的なコーヒー メーカー企業である QuantumRoast のプロジェクト マネージャーです。


広大なエンジニアリング ロードマップの遂行、急な戦略変更(抹茶の取り扱いを開始)、24 時間 365 日顧客から届くあらゆる受信チケット(請求書システムのバグからコーヒー メーカーから発せられる高音ノイズまで)の対応など、チームメンバーの取り組みをサポートしています。
社内のチケット発行システム、メール、チャット、GitHub、Google 検索、StackOverflow など、50 個近くのブラウザタブを開いている日もめずらしくありません。仕事もチームメンバーも好きですが、やることの多さにどうしたらいいかわからなくなるような日があります。


ソフトウェア チケットの作成やトリアージ、問題のデバッグを手伝ってくれるヘルパーを構築できたらいいと思いませんか?これを可能にするのが、AI エージェントです。
ツールの入門ガイド
AI エージェントが他のソフトウェア システムと異なる点は何でしょうか。「AI Agents in a Nutshell(AI エージェントの概要)」の投稿では、AI エージェントが、ハードコードされたロジックだけでなくモデルを使用して問題を解決する方法について説明しました。しかし、AI エージェントができるのは LLM ベースの推論だけではありません。外部データを収集し、ユーザーに代わって対処するという独自の能力を備えています。AI エージェントは、問題解決の方法を教えてくれるだけでなく、実際に解決するのを手伝ってくれるのです。そのために、ツールがあります。


AI エージェントが世界とやり取りするのに役立つ機能がツールです。インライン関数、ホストされたデータベース、サードパーティの API、さらには別のエージェントなど、ほとんどすべてがツールとなり得ます。エージェント開発キット(ADK)などの AI エージェント フレームワークは、ツールの組み込みサポートを備えており、さまざまな種類のツールをサポートしています。これらのツールについては、後ほど説明します。
とはいえ、特定のツールを呼び出すタイミングだけでなく、これらを呼び出す方法まで、エージェントはどのように把握するのでしょうか。 エージェントのモデルが、ここでいくつかの重要な役割を果たしています。


1 つ目はツールの選択です。エージェントに提供するのは、ツールのリストと、それらの使用方法に関する指示です。ユーザーがエージェントにプロンプトを入力すると、エージェントのモデルが、そのユーザーを支援するために呼び出すツールとその理由を判断します。
2 つ目の重要なステップは関数呼び出しです。「関数呼び出し」といっても、文字通りの意味とは少し違います。モデルが実際にツールを呼び出すのではなく、フレームワークがツールを呼び出すために使用するリクエストの本文をフォーマットして、呼び出しの準備をします。
最後に、モデルは、そのツールからのレスポンスを解釈します。たとえば、データベースから公開されているバグのリストが返された場合、モデルは、さらなるアクションを実行するか、その情報をユーザーに返答するかを決定します。
実際にこれらがどのように機能するかを確認するため、ADK Python を使用して QuantumRoast のバグ アシスタント エージェントを構築してみましょう。
関数ツール
最もシンプルな ADK ツールは関数ツールです。これは、計算やアルゴリズムを実行できるインライン関数です。たとえば、今日の日付を取得する関数ツールを作成できます。
このようにすることで、「先週」報告されたバグについてユーザーが質問した場合に、モデルは IT チケット データベースを呼び出すときに、リクエストの本文に追加する必要がある特定の日付を把握できるようになります。実際の動作は次のようになります。




サードパーティ API ツール
バグ エージェントを StackOverflow の強力な Q&A データに接続するために、LangChain の豊富なツール ライブラリから、具体的には StackExchange API ラッパーツールを pull できます。ADK は LangChain を介してサードパーティ製ツールをサポートしているため、このツールを ADK エージェントに追加するために必要なコードは、わずか 2 行です。


サードパーティの API ツールを導入すると、既存のツールを再利用できるため便利です。しかし、エージェントと統合したい独自の内部 API やサードパーティ API がたくさんある場合はどうでしょうか(GitHub など)。標準的なソフトウェア アプリケーションでは、GitHub の API を呼び出すために独自のコードを記述する必要がありますが、GitHub の API は膨大です。GitHub を使用するすべてのエージェント デベロッパーが独自の GitHub ツールを実装しなければならないとしたら、重複作業が大量に発生します。
そこで MCP というプロトコルの出番です。
MCP ツール(API)
MCP は Model Context Protocol の略です。2024 年に Anthropic が導入したオープンツール プロトコルです。MCP は、AI エージェントとツールの「バックエンド」(API、データベース)の間に抽象化レイヤを提供します。


MCP には独自の仕様があります。標準の HTTP とは異なり、MCP はクライアントとサーバー間のステートフルな双方向接続を提供します。MCP は、ツールとツール固有のエラー メッセージを独自の方法で定義します。ツール プロバイダは、API の上に MCP サーバーを構築し、デベロッパーやユーザー向けに 1 つ以上の事前構築済みツールを公開できます。その後、エージェント フレームワークはエージェント アプリケーション内で MCP クライアントを初期化し、これらのツールを検出して呼び出すことができます。
GitHub は 2025 年にまさにこれを行いました。リモート MCP サーバーを作成し、AI コーディング アシスタントからカスタム エージェントまで、さまざまな種類の AI アプリケーションで GitHub の API を簡単に呼び出せるようにしました。GitHub MCP サーバーは、問題や pull リクエストから、通知やコードのセキュリティまで、GitHub のさまざまな機能を公開しています。ここでは、ADK の MCPToolset を使用して GitHub リモート MCP サーバーを呼び出します。


バグ アシスタントについては、読み取り専用の GitHub ツールをいくつか公開し、QuantumRoast の従業員がオープンソースの依存関係に関連する問題を見つけられるようにします。これにより、社内のチケット発行システムで確認されているバグの根本原因を特定できるかどうかを確認します。この設定には、tool_filter
を使用した ADK の MCPToolset
を使用します。tool-filter
は、必要な GitHub ツールのみを表示します。これにより、ユーザーにアクセスさせたくないツール(機密性の高いリポジトリ アクションなど)を非表示にできるだけでなく、エージェントのモデルがジョブに適したツールを選択しようとするときに過負荷になるのを防ぐこともできます。
また、コードで標準の API クライアントを設定するときに認証トークンを指定するのと同じように、GitHub の個人アクセス トークン(PAT)を MCPToolset
定義に指定する必要があります。この PAT は、機密性の高いユーザーやリポジトリのアクションに関するスコープはなく、公開リポジトリのデータにのみアクセスできるようスコープが設定されています。
これで、エージェントが呼び出すことができる GitHub MCP ツールのセットができました。たとえば、QuantumRoast のサービスの一つが、データ圧縮ツールである XZ ユーティリティに依存しているとします。社内のバグチケット発行システムでは、昨年の CVE(セキュリティ脆弱性)が追跡されており、StackOverflow と Google 検索ツールを使用して、XZ Utils GitHub リポジトリまで遡ることができます。次に、GitHub の MCP ツールの一つである search_issues を使用することで、その CVE がいつ、どのようにパッチ適用されたかの判断を可能にします。


MCP ツール(データベース)
最後に紹介するツールは、QuantumRoast の社内バグチケット データベースです。これは Google Cloud SQL で実行される PostgreSQL データベースです。バグが記載されたテーブルがあり、各テーブルには ticket_id
、title
、description
、assignee
などのフィールドがあります。


ORM(sqlalchemy など)を使用して独自の Python コードを記述し、SQL データベースを呼び出す(例: ID でチケットを取得
)こともできます。その後、get_current_date()
と同じように、そのコードを関数ツールでラップできます。しかし、これではコード行数が増えるだけでなく、データベースの接続ロジックの記述や、独自の認証処理が必要となり、トイルが増えてしまいます。
そこで、代わりに、GitHub API で使用したのと同様に、MCP を使用します。今回も事前構築済みの MCP サーバーを使用しますが、ツール「バックエンド」は独自のデータベースになります。Google が構築したオープンソースの MCP サーバーであるデータベース向け MCP ツールボックスを pull します。このサーバーは、さまざまなデータソースの認証などの本番環境レベルの機能とコネクタを BigQuery から Redis に提供します。


MCP ツールボックスを Cloud SQL に接続するには、データベースの場所と作成するツールを Toolbox MCP サーバーに伝える tools.yaml
構成ファイルを作成します。たとえば、バグの説明
列を検索可能なベクトル エンベディングに変換して、エージェント内でファジーな search-tickets
ツールを有効にできます。
create-new-ticket
や update-ticket-status
などの他のツールも、 tools.yaml
ファイルで定義できます。そこから、ツールボックス MCP サーバーをローカルで実行できます。
最後に、バグ アシスタント エージェントを MCP ツールボックス サーバーに接続します。
そこから、エージェントはこれらのすべての SQL データベース ツールにアクセスし、QuantumRoast チケット データベースでバグの作成とトリアージを行えます。


まとめ
FunctionTools
のようなシンプルなものから、サードパーティの LangChain ツール、強力な MCP ツールまで、5 種類の ADK ツールを見てきました。
これで、多忙なプロジェクト マネージャーが日々の業務を進めるうえで役に立つ、QuantumRoast のバグ アシスタント エージェントを構築できました。


これを行うために、ADK Python を使用して 1 つの LLMAgent を作成します。この LLMAgent は、Gemini 2.5 Flash(推論モデル)を搭載しています。
root_agent
に指示を与えます。エージェントに実行してほしいプロセスの概要を以下のように記述します。
システム指示内では、すべてのツールに関する詳細とコンテキストも提供しています。これは、モデルがいつ、どのツールを呼び出すべきかを把握するのに役立ちます。
エージェント コードの準備ができたので、この設定全体を Google Cloud にデプロイできます。Cloud Run でエージェントと MCP ツールボックス サーバー、Cloud SQL でバグチケット データベース、Vertex AI で Gemini 2.5 Flash を実行します。デプロイ手順はこちらをご覧ください。


エージェント ツールを使ってみる
まとめると、ツールは「エージェントを作り上げる」ものです。ツールがあることで、AI が何をすべきかを教えてくれるだけでなく、実際にそれを行うのを手伝ってくれます。
AI エージェントとツールを初めて使用する場合は、小規模なものから始めましょう。まずは、インライン関数を使用して基本的な ADK エージェントを記述してみてください。次に、API として OpenAPI ツール、あるいは YouTube などのサードパーティの LangChain ツールを組み込むことを検討します。その後、まずはデータベース向け MCP ツールボックスなどの既製の MCP サーバーを使用して、MCP の世界に足を踏み入れましょう。その後で、独自のツール バックエンド用に独自の MCP サーバーを構築することを検討します。
今すぐ利用を開始するには、以下のリンクをご覧ください。最後までお読みいただきありがとうございました。
ー デベロッパー アドボケイト、Jack Wotherspoon
ー デベロッパー アドボケイト、Megan O'Keefe