Maps Experience エージェント ツール

Maps Experience エージェント ツール(旧称 Maps Grounding Lite)は、Model Context Protocol(MCP)をサポートする Google Maps Platform サービスです。Google マップの信頼できる地理空間データを使用して AI アプリケーションをグラウンディングできます。MCP サーバーは、LLM が場所、天気、ルートのデータにアクセスできるようにするツールを提供します。他のツールは、場所の名前と Google マップの URL をプレイス ID に解決します。Maps Experience エージェント ツールを試すには、MCP サーバーをサポートするツールで有効にします。

Maps Experience Agent ツールは、Essentials と Pro の 2 つの SKU を持つ 1 つのプロダクトです。Pro オプションを使用しない限り、すべてのリクエストは Essentials で課金されます。Pro オプションでは、拡張された Place Details、検索あたりの場所数の増加、ルートあたりの経由地数の増加、リアルタイムの交通情報を使用したルート設定が追加されます。制限付き GA の期間中、Pro オプションは Pro 許可リストに登録されているプロジェクトでのみ利用できます。どちらの SKU も同じ MCP サーバー、ツール、認証情報を使用します。詳しくは、Essentials と Pro をご覧ください。

ツール

Maps Experience エージェント ツールを使用すると、LLM は次の Google マップ機能にアクセスできます。

  • 場所を検索する: 場所に関する情報をリクエストし、AI 生成の概要を取得します。レスポンスには、概要の各場所のプレイス ID、座標、Google マップのリンクも含まれます。プレイス ID と座標を他の Google Maps Platform API と組み合わせて使用すると、地図上に場所を表示できます。Pro では、クチコミからの分析情報など、拡張された場所の詳細をリクエストできます。1 回のリクエストで最大 10 か所までリクエストできます。
  • 天気の検索: 天気に関する情報をリクエストし、現在の状況、1 時間ごとの天気予報、1 日の天気予報を返します。
  • ルートを計算する: 出発地と目的地の間のルート(必要に応じて中間地点を経由するルート)をリクエストし、ルートの距離と所要時間を返します。Pro では、ルートでリアルタイムの交通状況を考慮し、より多くの中間地点を含めることができます。

  • 名前を解決する、マップ URL を解決する: 場所の名前、住所、Google マップの URL をプレイス ID に解決します。詳細については、Resolution API をご覧ください。

MCP サーバーを有効にすると、LLM はそのツールを呼び出して、これらのデータ型のグラウンディング情報を取得できます。LLM はこの情報をコンテキストに使用できます。ただし、最終的な回答には、MCP サーバーから返された正確な情報が含まれていない場合があります。生成された回答の正確性を確認する必要があります。

Essentials と Pro

Essentials と Pro は同じプロダクトの 2 つの SKU であり、別々のプロダクトやプランではありません。Pro オプションを使用すると、リクエストは Pro で課金されます。その他のリクエストは Essentials で課金されます。Pro オプションはツール リクエストの通常のフィールドであるため、LLM はユーザーに代わってそれらを使用できます。エージェントは、同じ会話で両方の SKU を使用することもできます。たとえば、エージェントは Essentials を使用して、ランドマークの近くのコーヒー ショップを見つけることができます。その後、Pro を使用して、看板メニューのドリンクや座席に関するフォローアップの質問に回答します。Pro 用の個別の MCP サーバー、エンドポイント、認証情報はありません。

Essentials、Pro、Google マップによるグラウンディングの比較

Google マップによるグラウンディングは別のプロダクトです。これは、Gemini API、Google AI Studio、Gemini Enterprise Agent Platform の Gemini モデルに組み込まれています。モデルは、Google マップにクエリを実行するタイミングを決定し、引用を含むグラウンディングされた回答を返します。Gemini で構築し、モデルでグラウンディングを処理する場合は、Google マップによるグラウンディングを選択します。他のモデルやエージェント フレームワーク、または各ツール呼び出しを直接制御する場合は、Maps Experience エージェント ツールを選択します。

Maps Experience エージェント ツール Google マップによるグラウンディング
Essentials SKU
(旧称: Maps Grounding Lite)
Pro SKU
リクエストの課金方法 Pro オプションを使用しない各ツール リクエスト include_extended_details、5 を超える page_size、ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL、10 を超える中間ウェイポイントなど、Pro オプションを使用する各ツール リクエスト Google マップのクエリまたはグラウンディングされたプロンプトごと(プラットフォームとモデルによって異なる)
モデルとプラットフォーム MCP をサポートするモデルまたはエージェント フレームワーク。1 つの MCP サーバー、1 つのツールセット、両方の SKU で同じ認証情報 Gemini API、Google AI Studio、Gemini Enterprise Agent Platform の Gemini モデル
ツールが返す内容 コア情報: 検索ごとに最大 5 か所の Place Details、リアルタイムの交通情報を含まないルートの距離と所要時間、現在の天気と天気予報 Essentials のすべての機能に加えて、拡張された Place Details(クチコミからの分析情報など)、1 回の検索につき最大 10 か所の場所、リアルタイムの交通情報を含むルート、最大 25 か所の中間経由地 クチコミに基づく Place Details と分析情報、リアルタイム交通情報を反映したルート情報
リクエストの例 事実やロジスティクスに関する質問: 店舗やビジネスの検索、営業時間、住所、距離や移動時間の見積もり 主観的な質問や幅広い質問: 雰囲気、看板メニュー、訪問者向けのヒント、6 ~ 10 か所の比較、現在の交通状況での移動時間 Gemini での会話形検索、旅行プランの作成、地域の情報検索
Places UI キットの可視化 エージェント型データ可視化トークン(プレビュー版)に追加料金なしで含まれています 別途請求
1 か月あたりの無料使用量 10,000 件のリクエスト 5,000 リクエスト プラットフォームとモデルによって異なります。たとえば、Gemini API では、Gemini 3 以降のモデルに、1 か月あたり 5,000 件の無料検索クエリが含まれています。それ以降は、検索クエリ 1,000 件あたり 14 ドルが課金されます。
従量課金制料金 リクエスト 1,000 件あたり $7.00(ボリューム ディスカウントあり) リクエスト 1,000 件あたり $14.00。大量使用時の料金設定については営業担当にお問い合わせください。
サブスクで節約 Essentials プランと Pro プランに含まれています 含まれていません 利用不可
始める 両方の SKU に 1 つの設定: MCP サーバーを使用するように LLM を構成するをご覧ください。制限付き一般提供期間中は、Pro オプションを使用するには、Pro 許可リストにプロジェクトを登録する必要があります。 Gemini API または Agent Platform

これらのオプションは、移動手段、出発時刻と到着時刻、代替ルート、ルート ポリライン、天気検索、Resolution API のいずれの SKU でも同じように機能します。リクエストの請求対象となる SKU は変更されません。

Pro SKU で請求されるもの

ツール 能力 Essentials Pro
場所を検索する リクエストあたりのプレイス数 最大 5 個 6 ~ 10(page_size、6 ~ 10)
検索サマリーの拡張された Place Details(クチコミからの分析情報、メニューのハイライト、雰囲気、混雑状況、訪問者のヒント、近接クエリの距離または移動時間) 利用不可 include_extended_details で利用可能
ルートを計算する ルーティング設定 リアルタイムの交通情報は考慮されない ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL を使用して、リアルタイムの交通状況、または交通機関のルートのリアルタイムの交通機関データを考慮します。
ルートあたりの中間ウェイポイント 最大 10 人 11 ~ 25(10 を超える intermediate_waypoints)
天気情報検索と Resolution API Pro オプションはありません。すべてのリクエストは Essentials SKU で課金されます。

各機能を有効にするリクエスト オプションについては、場所を検索するとルートを計算するをご覧ください。

制限付き一般提供中の Pro オプション

制限付き GA の期間中、Pro オプションは Pro 許可リストに登録されている Google Cloud プロジェクトでのみ使用できます。アクセス権をリクエストするには、営業担当者にお問い合わせください。プロジェクトが許可リストに登録されると、そのプロジェクト内のすべての API キーと OAuth クライアントで Pro オプションを使用できるようになります。

プロジェクトがまだ許可リストに登録されていない場合、Pro オプションを使用するリクエストは次のように処理されます。

  • 場所を検索: include_extended_details は無視され、page_size をより高い値に設定しても、レスポンスには最大 5 件の場所が含まれます。リクエストは Essentials SKU で課金されます。
  • ルートを計算する: ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL は ROUTING_PREFERENCE_TRAFFIC_UNAWARE として扱われ、リクエストは Essentials SKU で課金されます。10 個を超える中間地点を含むリクエストは、INVALID_ARGUMENT エラーを返します。

プロジェクトが許可リストに登録されているかどうかを確認するには、page_size を 10 に設定して search_places リクエストを送信します。restaurants in Chicago などの広範なクエリを使用します。許可リストに登録されているプロジェクトは、Pro SKU で請求される 5 つ以上の場所を返すことができます。その他のプロジェクトでは、最大 5 件の場所が返されます。

Pro の使用を管理する

Pro オプションはデフォルトでオフになっています。LLM は、ユーザーのリクエストでパラメータが必要とされ、ツールスキーマまたは指示で許可されている場合に、パラメータを設定します。ツールスキーマには、最大 5 つの page_size 値と最大 10 個の中間ウェイポイントが記述されています。そのため、モデルは、指示で要求された場合にのみ、より高い Pro の上限を使用します。費用を管理するには:

  • Pro オプションが適切な場合をモデルに伝えます。例: 「ユーザーがレビュー、メニュー、雰囲気について尋ねた場合にのみ、include_extended_details を設定します。」または、「ユーザーが現在の移動時間を尋ねた場合にのみ ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL を使用する」などです。
  • エージェントを Essentials SKU に維持するには、Pro オプションを使用しないようにモデルに指示します。Pro のオプションは、include_extended_details、5 を超える page_size、ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL、10 を超える中間ウェイポイントです。MCP クライアントがツール引数を制限できる場合は、ツールの構成でそれらの値をブロックすることもできます。
  • 請求レポートで使用状況をモニタリングし、予算アラートを設定します。

Resolution API

Maps Experience エージェント ツールは、Resolution API を提供します。自由形式の場所テキストと URL を、構造化された Google マップの場所識別子に解決します。Resolution API は、REST メソッドとして、また MCP サーバーのツールとして利用できます。

  • 名前を解決する(REST、MCP): 場所の名前または住所のバッチを、Google マップ上の特定の場所エンティティに解決します。これは、非構造化ユーザー クエリを安定したプレイス ID にグラウンディングする場合に便利です。
  • マップ URL を解決する(REST、MCP): Google マップの URL のバッチを特定の場所エンティティに解決します。サポートされている形式には、標準の場所の URL と短縮 URL があります。

返されたプレイス ID は、他の Google Maps Platform API で使用できます。各レスポンスには、解決された場所を Google マップにリストとして保存するリンクも含まれています。

詳細については、Maps Tools Resolution API をご覧ください。

サンプルアプリを試す(新しいタブで開く)

課金と割り当て

請求方法

Google Maps Platform の従量課金制の料金モデルでは、Maps Experience エージェント ツールの使用量はリクエストごとに計算されます。各リクエストは 1 つの課金イベントを表します。使用量はサービス SKU ごとにトラッキングされます。請求書には、合計料金に加えて、各 SKU の広告申込情報が表示されます。詳しくは、レポートの概要をご覧ください。

Search places、Compute routes、Lookup weather の各リクエストは、Essentials または Pro のいずれか 1 つの SKU で課金されます。Pro オプションを使用するリクエストは、Pro SKU で課金されます。両方の SKU で請求されることはありません。また、Pro オプションの数によって料金が変わることもありません。SKU は次のオプションによって決まります。

ツール Essentials Pro
search_places Pro オプションのないリクエスト: page_size が 5 以下、include_extended_details が未設定または false include_extended_details が true に設定されている、または page_size が 6 ~ 10
compute_routes Pro オプションのないリクエスト: routing_preference が未設定または ROUTING_PREFERENCE_TRAFFIC_UNAWARE、中間地点が 10 個以下、任意の移動手段 routing_preference が ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL に設定されている、または 11 ~ 25 個の中間地点
lookup_weather すべてのリクエスト —

Essentials の料金については、Essentials SKU の詳細をご覧ください。Pro リクエストは、毎月最初の 5,000 件のリクエスト以降、1,000 件のリクエストあたり $14.00 で請求されます。使用量に応じた料金をお問い合わせください。

制限付き一般提供期間中、Pro オプションは Pro の許可リストに登録されているプロジェクトにのみ適用されます。詳細については、制限付き GA の Pro オプションをご覧ください。

料金の詳細については、メインの料金表とインドの料金表をご覧ください。

Resolution API リクエスト(ResolveNames と ResolveMapsUrls)は、Places API テキスト検索 Essentials(ID のみ) SKU で無料で課金されます。

Essentials SKU の使用量は、Essentials と Pro の Subscribe to save パッケージにも含まれています。Pro SKU は、定期購入割引パッケージに含まれていません。

割り当て

Maps Experience エージェント ツールが提供するツールと API には、次の割り当てが適用されます。

  • Search Places: 1 プロジェクト、1 分あたり 300 件のクエリ。
  • 天気の検索: プロジェクトごとに 1 分あたり 300 件のクエリ。
  • Compute Routes: 1 プロジェクト、1 分あたり 300 件のクエリ。
  • 名前を解決する: プロジェクトごとに 1 分あたり 600 件のクエリ。
  • Resolve Maps URLs: 1 プロジェクト、1 分あたり 600 件のクエリ。

割り当てはツールごとにカウントされ、Essentials SKU と Pro SKU で共有されます。Pro リクエストは、同じツールに対する Essentials リクエストと同じ割り当てを消費します。

Resolution API リクエストは、含まれるアイテムの数に関係なく、1 つのクエリとしてカウントされます。

ポリシーと利用規約

Maps Experience エージェント ツールには、サービス固有の規約を含む Google Maps Platform 利用規約が適用されます。このセクションでは、対応する LLM やソース アトリビューションなど、Maps Experience エージェント ツールの追加の使用要件について説明します。この要件は、リクエストの課金対象となる SKU に関係なく、すべての結果に適用されます。

互換性のある LLM の要件

Maps Experience エージェント ツールは、Google Maps Platform 利用規約に準拠している LLM でのみ使用できます。

たとえば、Google マップ コンテンツが、選択した LLM によってキャッシュ、保存、または LLM の改善に使用されないようにすることは、お客様の責任となります。Maps Experience エージェント ツールを使用する前に、Maps Experience エージェント ツールで使用するモデルの利用規約を確認する必要があります。モデルのトレーニングや改善のためにモデルに入力されたデータを使用するモデルで、Maps Experience エージェント ツールを使用することはできません。お客様は、モデルの使用が Google Maps Platform 利用規約(サービス固有の規約を含む)の Google マップ コンテンツに関する制限に完全に準拠していることを確認する責任を負います。

Google マップのソースに関する帰属表示の要件

Maps Experience エージェント ツールからの各ツール レスポンスには、ソースが含まれています。Maps Experience エージェント ツールの結果を表示する場合は、関連する Google マップのソースを含め、次の要件を満たす必要があります。

  • Google マップのソースは、ソースがサポートする生成コンテンツの直後に示す必要があります。この生成されたコンテンツは、グラウンディングされた出力ともいいます。
  • Google マップのソースは、1 回のユーザー操作で表示できる必要があります。

場所検索ツールの情報源

search_places ツールの places フィールドには、summary をサポートするソースが指定されます。places の場合、次のメタデータが返されます。

  • place(リソース名)
  • id
  • location
  • googleMapsLinks

各場所について、次の要件を満たすリンク プレビューを生成する必要があります。

これらの要件は、クチコミからの分析情報など、Pro の拡張された Place Details を含む要約にも適用されます。summary は、places のエントリにマッピングされる 0 ベースのインデックス([0] など)を使用して各場所を引用します。各場所には、Google マップの場所のクチコミにリンクする googleMapsLinks.reviewsUrl も含まれています。ユーザーは、このリンクをたどって、インサイトの根拠となるレビューを確認できます。

音声ファーストのインターフェース

アプリが Maps Experience エージェント ツールの結果を音声で表示する場合は、音声ファースト インターフェースの要件も満たす必要があります。まとめると、次のとおりです。

  • ソースの表示: 音声会話の逐語的な履歴記録を表示するコンパニオン UI に Google マップのソースを表示します。
  • 積極的な開示: ユーザーが操作する際に、AI 生成コンテンツに Google マップの情報が含まれている可能性があることをユーザーに伝えます。また、詳細なソースはコンパニオン UI で確認できることも伝えます。この操作は、画面上または音声で行うことができます。
  • 永続的な開示: AI 生成コンテンツに Google マップのコンテンツが含まれる可能性があることを、音声設定メニューなどで永続的に説明します。
  • ユーザーからの問い合わせ: コンテンツのソースに関するユーザーの質問に正確に回答し、詳細についてはコンパニオン UI を参照するよう案内します。

MCP サーバーを使用するように LLM を構成する

Maps Experience エージェント ツールを使用するには、Maps Experience エージェント ツール API サービスが有効になっている Google Cloud プロジェクトが必要です。また、API キーまたは OAuth クライアント ID も必要です。次に、MCP サーバーにアクセスするように LLM を構成します。MCP サーバーは Streamable HTTP トランスポートを使用します。

Google Cloud プロジェクトで Maps Experience エージェント ツールを有効にする

プロジェクトで API を有効にするには:

  1. Google Cloud コンソールで、Maps Experience エージェント ツールに使用するプロジェクトを選択します。
  2. Google Cloud Console でプロジェクトの課金を有効にします。
  3. Google Cloud コンソールの API ライブラリで、Maps Experience エージェント ツールを有効にします。

API キーを使用して認証する

Maps Experience エージェント ツールで既存の API キーを使用することも、新しい API キーを作成することもできます。いずれの場合も、Google Cloud プロジェクトとキーの両方で Maps Experience agent tools API サービスを有効にします。

API キーを使用して認証するには:

  1. Google Maps Platform のスタートガイドの手順に沿って、API キーを作成または構成します。
  2. X-Goog-Api-Key ヘッダーを使用して、キーを MCP サーバーに渡します。これは、LLM の MCP ツール構成でカスタム HTTP ヘッダーとして指定する必要があります。

OAuth を使用して認証する

OAuth を使用して認証するには、OAuth 認証情報を作成して MCP ホストまたは MCP サーバー アプリケーションに渡します。

OAuth を使用して認証するには:

  1. Google Cloud コンソールで、Maps Experience エージェント ツールに使用するプロジェクトを選択します。
  2. [API とサービス] メニューで、[認証情報] を選択します。
  3. トップメニューで、[認証情報を作成] > [OAuth クライアント ID] を選択します。
  4. プロジェクトに同意画面が構成されていない場合は、[同意画面を構成] をクリックし、画面上の指示に沿って操作します。
  5. [指標] セクションで、[OAuth クライアントを作成] をクリックします。
  6. [OAuth クライアント ID の作成] 画面で、アプリケーションの種類を選択し、クライアント ID の名前を入力します。
  7. アプリケーション タイプに関連する追加の詳細を指定します。たとえば、ウェブ アプリケーションを作成する場合は、ブラウザとサーバーのリクエストに承認済みの URI を追加します。
  8. クライアントが作成されたら、クライアント ID とシークレットを保存します。
  9. MCP ホストまたは MCP サーバー アプリケーションを構成するときに、OAuth クライアント ID とシークレットを渡します。また、次のスコープをリクエストする必要があります。https://www.googleapis.com/auth/maps-platform.mapstools

詳しくは、OAuth 2.0 を使用した Google API へのアクセスをご覧ください。

Maps Experience エージェント ツール MCP サーバーにアクセスするように LLM を構成する

Maps Experience エージェント ツール サービスを有効にして認証情報を作成したら、MCP サーバーにアクセスするように LLM を構成できます。LLM の MCP 構成ドキュメントに沿って、MCP サーバーの URL https://mapstools.googleapis.com/mcp を使用します。

詳細については、AI アプリケーションで MCP を構成するをご覧ください。

Gemini CLI を使用して Maps Experience エージェント ツールを構成する

このセクションでは、Gemini CLI を使用して Maps Experience エージェント ツール MCP サーバーを構成する方法の例を示します。詳細については、Gemini CLI を使用した MCP サーバーをご覧ください。

  1. Gemini CLI をインストールしたら、gemini mcp add を実行して MCP サーバーを構成します。

    gemini mcp add -s user -t http -H 'X-Goog-Api-Key: API_KEY' maps-experience-agent-tools-mcp https://mapstools.googleapis.com/mcp
    

    構成が成功すると、サーバーがユーザー設定に追加されたことを示す確認メッセージが表示されます。

  2. サーバーが正常に動作していることを確認するには、/mcp list コマンドを実行します。

    > /mcp list
    
    Configured MCP servers:
    
    maps-experience-agent-tools-mcp - Ready (5 tools)
    Tools:
    -   compute_routes
    -   lookup_weather
    -   resolve_maps_urls
    -   resolve_names
    -   search_places
    
  3. CLI を使用して、マップに相談を始めましょう。たとえば、「マウンテンビューのおすすめレストランを教えて」と入力すると、search_places ツールが呼び出されます。

Agent Development Kit(ADK)を使用して Maps Experience エージェント ツールを構成する

このセクションでは、Python、Java、TypeScript で Agent Development Kit(ADK)を使用して MCP サーバーを構成する方法について説明します。

Python

この例の完全な実装は、GitHub の adk-samples リポジトリにあります。

ステップ 1: Maps Experience エージェント ツール用の McpToolset を使用してエージェントを定義する

agent.py ファイルを変更します。YOUR_GOOGLE_MAPS_API_KEY は、実際の API キーに置き換えます。

# ./adk_agent_samples/mcp_agent/agent.py
import os
from google.adk.agents.llm_agent import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams

# Retrieve the API key from an environment variable or directly insert it.
GOOGLE_MAPS_API_KEY = os.getenv("GOOGLE_MAPS_API_KEY")
if not GOOGLE_MAPS_API_KEY:
    GOOGLE_MAPS_API_KEY = "YOUR_GOOGLE_MAPS_API_KEY_HERE"

if GOOGLE_MAPS_API_KEY == "YOUR_GOOGLE_MAPS_API_KEY_HERE":
    print("WARNING: GOOGLE_MAPS_API_KEY is not set.")

root_agent = Agent(
    model='gemini-flash-latest',
    name='travel_planner_agent',
    description='A helpful assistant for planning travel routes.',
    tools=[
        McpToolset(
            connection_params=StreamableHTTPConnectionParams(
                url="https://mapstools.googleapis.com/mcp",
                headers={
                    "X-Goog-Api-Key": GOOGLE_MAPS_API_KEY,
                    "Content-Type": "application/json",
                    "Accept": "application/json, text/event-stream"
                }
            )
        )
    ]
)
    
ステップ 2: __init__.py が存在することを確認する

agent.py と同じディレクトリに __init__.py があることを確認します。

from . import agent
    
ステップ 3: adk web を実行して操作する
  1. 環境変数を設定する:
    ターミナルで Google Maps API キーを環境変数として設定します。
    export GOOGLE_MAPS_API_KEY="YOUR_ACTUAL_GOOGLE_MAPS_API_KEY"
            
  2. adk web を実行する:
    次のコマンドを実行して、ADK ウェブ インターフェースを起動します。
    adk web
            
  3. UI で操作する:
    • travel_planner_agent を選択します。
    • 次のようなプロンプトを試します。
      • 「明日はサンフランシスコにいます。天気はどう?」
      • 「ゴールデン ゲート パークの近くのカフェを探して」
      • 「Googleplex から SFO までのルートを教えて。」

Java

Java で McpToolset を初期化するエージェントを定義します。環境変数を使用しない場合は、YOUR_GOOGLE_MAPS_API_KEY_HERE を取得した実際の API キーに置き換えます。

package agents;

import com.google.adk.agents.LlmAgent;
import com.google.adk.runner.InMemoryRunner;
import com.google.adk.sessions.SessionKey;
import com.google.adk.tools.mcp.McpToolset;
import com.google.adk.tools.mcp.StreamableHttpServerParameters;
import com.google.genai.types.Content;
import com.google.genai.types.Part;
import java.util.HashMap;
import java.util.Map;

public class MapsAgentCreator {
    public static void main(String[] args) {
        String googleMapsApiKey = System.getenv("GOOGLE_MAPS_API_KEY");
        if (googleMapsApiKey == null || googleMapsApiKey.trim().isEmpty()) {
            googleMapsApiKey = "YOUR_GOOGLE_MAPS_API_KEY_HERE";
            if ("YOUR_GOOGLE_MAPS_API_KEY_HERE".equals(googleMapsApiKey)) {
                System.out.println("WARNING: GOOGLE_MAPS_API_KEY is not set.");
            }
        }

        Map<String, String> headers = new HashMap<>();
        headers.put("X-Goog-Api-Key", googleMapsApiKey);
        headers.put("Content-Type", "application/json");
        headers.put("Accept", "application/json, text/event-stream");

        StreamableHttpServerParameters serverParams =
                StreamableHttpServerParameters.builder("https://mapstools.googleapis.com/mcp")
                        .headers(headers)
                        .build();

        try (McpToolset toolset = new McpToolset(serverParams)) {
            LlmAgent agent = LlmAgent.builder()
                    .model("gemini-flash-latest")
                    .name("travel_planner_agent")
                    .description("A helpful assistant for planning travel routes.")
                    .tools(toolset)
                    .build();

            System.out.println("Agent created: " + agent.name());

            InMemoryRunner runner = new InMemoryRunner(agent);
            String userId = "maps-user-" + System.currentTimeMillis();
            String sessionId = "maps-session-" + System.currentTimeMillis();
            String promptText =
                    "Please give me directions to the nearest pharmacy to Madison Square Garden.";

            SessionKey sessionKey = runner.sessionService()
                    .createSession(runner.appName(), userId, null, sessionId)
                    .blockingGet()
                    .sessionKey();
            System.out.println("Session created: " + sessionId + " for user: " + userId);

            Content promptContent = Content.fromParts(Part.fromText(promptText));
            System.out.println("\nSending prompt: \"" + promptText + "\" to agent...\n");

            runner.runAsync(sessionKey, promptContent)
                    .blockingForEach(event -> {
                        System.out.println("Event received: " + event.toJson());
                    });
        } catch (Exception e) {
            System.err.println("An error occurred: " + e.getMessage());
            e.printStackTrace();
        }
    }
}
    

TypeScript

TypeScript で MCPToolset を初期化するエージェントを定義します。

import 'dotenv/config';
import {LlmAgent, MCPToolset} from "@google/adk";

const googleMapsApiKey = process.env.GOOGLE_MAPS_API_KEY;
if (!googleMapsApiKey) {
    console.warn("WARNING: GOOGLE_MAPS_API_KEY is not set.");
    throw new Error(
        'GOOGLE_MAPS_API_KEY is not provided, please run "export GOOGLE_MAPS_API_KEY=YOUR_ACTUAL_KEY" to add that.'
    );
}

export const rootAgent = new LlmAgent({
    model: "gemini-flash-latest",
    name: "travel_planner_agent",
    description: "A helpful assistant for planning travel.",
    tools: [
        new MCPToolset({
            type: "SseConnectionParams",
            url: "https://mapstools.googleapis.com/mcp",
            headers: {
                "X-Goog-Api-Key": googleMapsApiKey,
                "Content-Type": "application/json",
                "Accept": "application/json, text/event-stream"
            }
        })
    ],
});
    

フィードバックの共有

Maps Experiments のエージェント ツールに関するフィードバックを送信するには、次のフォームを使用します。