Maps Experience 代理工具

Maps Experience 代理工具 (舊稱 Maps Grounding Lite) 是一項 Google Maps Platform 服務,支援 Model Context Protocol (MCP),可使用 Google 地圖中可靠的地理空間資料,為 AI 應用程式建立基準。MCP 伺服器提供的工具可讓 LLM 存取地點、天氣和路線資料。其他工具則會將地點名稱和 Google 地圖網址解析為地點 ID。如要試用 Maps Experience 代理工具,請在支援 MCP 伺服器的工具中啟用。

Maps Experience 代理工具是一項產品,有兩個 SKU:Essentials 和 Pro。除非使用 Pro 選項,否則每項要求都會依 Essentials 計費。Pro 選項則提供更詳盡的地點詳細資料、每次搜尋可傳回更多地點、每條路線可加入更多中途停靠點,以及根據即時路況規劃路線。在受限正式發布期間,只有 Pro 許可清單中的專案才能使用 Pro 選項。這兩個 SKU 使用相同的 MCP 伺服器、工具和憑證。詳情請參閱「Essentials 和 Pro」。

工具

Maps Experience 代理工具可讓 LLM 存取下列 Google 地圖功能:

  • 搜尋地點:要求地點資訊,並取得 AI 生成的摘要。回覆也包含摘要中每個地點的地點 ID、座標和 Google 地圖連結。您可以將地點 ID 和座標與其他 Google Maps Platform API 搭配使用,在地圖上顯示地點。使用 Pro 方案,您可以要求取得更詳細的 Place Details (例如評論洞察資料),每次最多可要求 10 個地點。
  • 查詢天氣:要求天氣資訊,並傳回目前天氣狀況、每小時預報和每日預報。
  • 計算路線:要求起點和目的地之間的路線 (可選擇是否經過中途停靠點),並傳回路線的距離和時間長度。使用 Pro 方案時,路線可考量即時路況,並加入更多中途停靠點。

  • 解析名稱和解析地圖網址:將地點名稱、地址和 Google 地圖網址解析為地點 ID。詳情請參閱「Resolution API」。

啟用 MCP 伺服器後,LLM 就能呼叫其工具,取得這些資料類型的基準資訊。LLM 可將這項資訊做為背景資訊。不過,最終回覆不一定會包含 MCP 伺服器傳回的確切資訊。請務必確認生成的回覆是否正確。

Essentials 和 Pro

Essentials 和 Pro 是同一產品的兩個 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 選項的工具要求 使用 Pro 選項的每項工具要求:include_extended_details、page_size 大於 5、ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL,或超過 10 個中途路線控點 每項 Google 地圖查詢或基準提示,視平台和模型而定
模型和平台 任何支援 MCP 的模型或代理架構。一個 MCP 伺服器、一組工具,以及兩個 SKU 的相同憑證 Gemini API、Google AI Studio 和 Gemini Enterprise Agent Platform 中的 Gemini 模型
工具傳回的內容 核心事實:每次搜尋最多可取得 5 個地點的 Place Details、不含即時路況的路線距離和時間長度,以及目前天氣和預報 Essentials 的所有功能,加上延伸 Place Details (例如評論洞察資料)、每次搜尋最多 10 個地點、提供即時路況的路線,以及最多 25 個中途路線控點 Place Details 和評論深入分析,以及即時路況路線資訊
要求範例 事實和物流問題:尋找商店或商家、營業時間、地址,以及距離或行程時間預估 主觀或廣泛的問題:氣氛、招牌菜、遊客提示、6 到 10 個地點的比較,以及目前交通狀況下的行程時間 在 Gemini 中進行對話式搜尋、規劃行程及探索當地
Places UI Kit 視覺化 代理式資料視覺化權杖 (預先發布版) 隨附,不需額外付費 費用另計
每月免費用量 10,000 項要求 5,000 項要求 視平台和模型而定。舉例來說,在 Gemini API 中,Gemini 3 和更新的模型每月提供 5,000 次免付費搜尋查詢。超過後,每 1,000 次搜尋查詢費用為 $14 美元。
即付即用價格 每 1,000 次要求 $7.00 美元,另有大量折扣 每 1,000 項要求 $14.00 美元。 請聯絡銷售人員洽詢高用量定價資訊。
訂閱省更多 Essentials 和 Pro 方案包含 不包含 無法使用
開始使用 兩種 SKU 的設定方式相同:請參閱「設定 LLM 以使用 MCP 伺服器」。在受限正式發布期間,Pro 選項也需要 Pro 許可清單中的專案。 Gemini API 或 Agent Platform

無論使用哪種 SKU,這些選項的運作方式都相同:交通方式、出發和抵達時間、替代路線、路線折線、天氣查詢和 Resolution API。不會變更要求計入的 SKU。

Pro SKU 的計費項目

工具 功能 Essentials Pro
搜尋地點 每個要求傳回的地點數 最多 5 秒 6 到 10 (page_size從 6 到 10)
搜尋摘要中的延伸地點詳細資料 (評論洞察、菜單精選、氣氛、地點繁忙程度、訪客提示,以及鄰近查詢的距離或行程時間) 無法使用 適用於 include_extended_details
計算路線 轉送偏好設定 不計入即時流量 考量即時路況,或大眾運輸路線的即時大眾運輸資料,並使用 ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL
每條路線的中繼路線控點 最多 10 秒 11 到 25 個 (超過 10 個intermediate_waypoints)
Lookup weather 和 Resolution API 沒有 Pro 選項。所有要求都會依 Essentials SKU 計費。

如要瞭解啟用各項功能的要求選項,請參閱「搜尋地點」和「計算路線」。

受限正式發布期間的 Pro 選項

在受限正式發布期間,只有 Pro 許可清單中的 Google Cloud 專案才能使用 Pro 選項。如要申請存取權,請與銷售人員聯絡。專案加入許可清單後,其中的所有 API 金鑰和 OAuth 用戶端都能使用 Pro 選項。

如果專案尚未加入許可清單,使用 Pro 選項的要求會依下列方式處理:

  • 搜尋地點:系統會忽略 include_extended_details,且回應最多包含 5 個地點,即使您將 page_size 設為較高值也一樣。這項要求會依 Essentials SKU 計費。
  • 計算路線:ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL 會視為 ROUTING_PREFERENCE_TRAFFIC_UNAWARE,並依 Essentials SKU 計費。如果要求包含超過 10 個中繼路線控點,系統會傳回 INVALID_ARGUMENT 錯誤。

如要確認專案是否在許可清單中,請傳送 search_places 要求,並將 page_size 設為 10。使用廣泛查詢,例如 restaurants in Chicago。列入許可清單的專案可傳回超過 5 個地點,並依 Pro SKU 計費。其他專案最多傳回 5 個地點。

控管 Pro 使用情形

Pro 選項預設為關閉。當使用者的要求需要這些參數,且工具結構定義或您的指令允許時,LLM 就會設定這些參數。工具結構定義會描述最多 5 個 page_size 值,以及最多 10 個中繼路線控點。因此,只有在指令要求時,模型才會使用較高的 Pro 限制。如何管理費用:

  • 告訴模型何時適合使用 Pro 選項。例如:「只有在使用者詢問評論、菜單或氣氛時,才將 include_extended_details 設為 True。」或「只有在使用者詢問目前行程時間時,才使用 ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL」。
  • 如要讓代理維持在 Essentials SKU,請指示模型一律不使用 Pro 選項。Pro 選項包括 include_extended_details、page_size 超過 5 個、ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL,以及超過 10 個中途路線控點。如果 MCP 用戶端可以限制工具引數,您也可以在工具設定中封鎖這些值。
  • 在帳單報表中監控用量,並設定預算快訊。

Resolution API

Maps Experience 代理工具提供 Resolution API。可將任意形式的位置文字和網址,解析為結構化的 Google 地圖地點 ID。Resolution API 可做為 REST 方法和 MCP 伺服器上的工具使用:

  • 解析名稱 (REST、MCP):將一批地點名稱或地址解析為 Google 地圖上的特定地點實體。這項功能可將非結構化使用者查詢,轉換為穩定的地點 ID。
  • 解析地圖網址 (REST、MCP):解析一批 Google 地圖網址,找出特定地點實體。支援的格式包括標準地點網址和短網址。

傳回的地點 ID 可與其他 Google Maps Platform API 搭配使用。每則回覆也包含一個連結,可將解析的地點儲存為 Google 地圖中的清單。

詳情請參閱 Maps Tools Resolution API。

試用範例應用程式 (在新分頁中開啟)

計費和配額

計費方式

Google Maps Platform 採用即付即用定價模式,Maps Experience 代理工具的用量是按要求計算。每個要求代表一個計費事件。系統會追蹤每個產品 SKU 的用量。帳單會顯示每個 SKU 的明細項目,以及總費用。詳情請參閱報表總覽。

每項「搜尋地點」、「計算路線」或「查詢天氣」要求,都只會依據一個 SKU (Essentials 或 Pro) 計費。使用任何 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 詳細資料。每月前 5,000 次要求免費,之後每 1,000 次要求收費 $14.00 美元。請聯絡銷售人員洽詢高用量定價資訊。

在受限正式發布期間,Pro 選項僅適用於 Pro 許可清單中的專案。詳情請參閱「受限正式發布期間的 Pro 選項」。

如需定價詳情,請參閱主要價目表和印度價目表。

解析 API 要求 (ResolveNames 和 ResolveMapsUrls) 屬於 Places API Text Search Essentials (IDs Only) SKU,不收取費用。

Essentials SKU 的用量也包含在 Essentials 和 Pro 訂閱節省套件中。Pro SKU 不包含在「訂閱即享優惠」套裝方案中。

配額

下列配額適用於 Maps Experience 代理工具提供的工具和 API:

  • 搜尋地點:每項專案每分鐘 300 次查詢。
  • 查詢天氣:每項專案每分鐘 300 次查詢。
  • 計算路線:每項專案每分鐘 300 次查詢。
  • 解析名稱:每項專案每分鐘 600 次查詢。
  • 解析 Maps 網址:每項專案每分鐘 600 次查詢。

配額會依工具計算,並由 Essentials 和 Pro SKU 共用。Pro 要求與 Essentials 要求對相同工具的配額消耗量相同。

無論包含多少項目,每項 Resolution API 要求都算是一次查詢。

政策和服務條款

Maps Experience 代理工具受到《Google Maps Platform 服務條款》規範,包括服務專屬條款。本節說明 Maps Experience 代理工具的其他使用規定,包括相容的 LLM 和來源歸因。無論要求是以哪個 SKU 計費,所有結果都適用這些規定。

相容 LLM 的規定

Maps Experience 代理工具只能搭配符合《Google 地圖平台服務條款》的大型語言模型使用。

舉例來說,您有責任確保 Google 地圖內容不會遭到快取、儲存,或用於改善您選擇使用的 LLM。使用 Maps Experience 代理工具前,請務必詳閱您要搭配 Maps Experience 代理工具使用的任何模型服務條款。請勿將 Maps Experience 代理工具與任何模型搭配使用,如果該模型會將輸入的資料用於訓練或改良模型。您有責任確保使用模型時,完全遵守《Google 地圖平台服務條款》中 Google 地圖內容的限制,包括服務專屬條款。

Google 地圖來源的出處標示規定

Maps Experience 代理工具的每項工具回覆都包含來源。呈現 Maps Experience 代理工具的結果時,必須附上相關 Google 地圖來源,並符合下列規定:

  • Google 地圖來源必須緊接在支援的生成內容之後。這類生成內容也稱為基準輸出。
  • Google 地圖來源必須在一次使用者互動中可供查看。

「搜尋地點」工具的來源

search_places 工具 places 欄位會提供支援 summary 的來源。如果是 places,系統會傳回下列中繼資料:

  • place (資源名稱)
  • id
  • location
  • googleMapsLinks

每個地點都必須產生符合下列規定的連結預覽:

如果摘要包含 Pro 提供的詳細地點資訊 (例如評論洞察資料),也必須遵守這些規定。summary 會使用以零為基準的索引 (例如 [0]) 引用每個地點,並對應至 places 中的項目。每個地點也包含 googleMapsLinks.reviewsUrl,可連結至 Google 地圖上的地點評論。使用者可以點選連結,查看洞察背後的評論。

語音優先介面

如果應用程式透過語音呈現地圖體驗代理工具結果,也必須符合語音優先介面規定。摘要說明:

  • 來源:在隨附的使用者介面中顯示 Google 地圖來源,並逐字顯示語音對話的歷史記錄。
  • 主動揭露:在互動時,告知使用者 AI 生成內容可能包含 Google 地圖的資訊。並說明隨附的使用者介面中提供詳細來源。你可以透過螢幕或語音操作。
  • 持續揭露:持續顯示說明,例如在語音設定選單中,指出 AI 生成內容可能包含 Google 地圖內容。
  • 使用者查詢:準確回答使用者對內容來源的問題,並引導他們前往隨附 UI 查看詳細資料。

設定 LLM 使用 MCP 伺服器

如要使用 Maps Experience 代理工具,您必須擁有 Google Cloud 雲端專案,並啟用 Maps Experience 代理工具 API 服務。此外,您也需要 API 金鑰或 OAuth 用戶端 ID。接著,您可以設定 LLM 存取 MCP 伺服器。MCP 伺服器會使用串流 HTTP 傳輸模式。

在 Google Cloud 雲端專案中啟用 Maps Experience 代理工具

如要在專案中啟用 API,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,選擇要用於 Maps Experience 代理工具的專案。
  2. 在 Google Cloud 控制台中啟用專案的計費功能。
  3. 在 Google Cloud 控制台 API 程式庫中,啟用 Maps Experience 代理工具。

使用 API 金鑰進行驗證

您可以使用現有的 API 金鑰搭配 Maps Experience 代理工具,也可以建立新的金鑰。無論採用哪種方式,請在 Google Cloud 雲端專案和金鑰上啟用 Maps Experience 代理工具 API 服務。

如要使用 API 金鑰進行驗證,請按照下列步驟操作:

  1. 按照「開始使用 Google 地圖平台」中的步驟,建立或設定 API 金鑰。
  2. 使用 X-Goog-Api-Key 標頭將金鑰傳遞至 MCP 伺服器。您必須在 LLM 的 MCP 工具設定中,將這項資訊指定為自訂 HTTP 標頭。

使用 OAuth 驗證

如要使用 OAuth 進行驗證,請建立 OAuth 憑證,並傳遞至 MCP 主機或 MCP 伺服器應用程式。

如要使用 OAuth 進行驗證,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,選擇要用於 Maps Experience 代理工具的專案。
  2. 在「API 和服務」選單中,選取「憑證」。
  3. 在頂端選單中,依序選取「Create credentials」(建立憑證) >「OAuth client ID」(OAuth 用戶端 ID)。
  4. 如果專案未設定同意畫面,請按一下「Configure consent screen」(設定同意畫面),然後按照畫面上的指示操作。
  5. 在「指標」部分,按一下「建立 OAuth 用戶端」。
  6. 在「Create OAuth client ID」(建立 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」。

設定 LLM 存取 Maps Experience 代理工具 MCP 伺服器

啟用 Maps Experience 代理工具服務並建立憑證後,即可設定 LLM 存取 MCP 伺服器。請按照 LLM 的 MCP 設定說明文件操作,並使用 MCP 伺服器網址:https://mapstools.googleapis.com/mcp

詳情請參閱「在 AI 應用程式中設定 MCP」。

使用 Gemini CLI 設定 Maps Experience 代理工具

本節提供範例,說明如何使用 Gemini CLI 設定 Maps Experience 代理工具 MCP 伺服器。詳情請參閱「搭配使用 MCP 伺服器與 Gemini CLI」。

  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 詢問 Google 地圖相關問題。舉例來說,您可以試著輸入「推薦一些 Mountain View 的餐廳」,系統應該會代表您呼叫 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 存在

確認 __init__.py 與 agent.py 位於同一目錄:

from . import agent
    
步驟 3:執行 adk web 並互動
  1. 設定環境變數:
    在終端機中,將 Google 地圖 API 金鑰設為環境變數:
    export GOOGLE_MAPS_API_KEY="YOUR_ACTUAL_GOOGLE_MAPS_API_KEY"
            
  2. 執行 adk web:
    執行下列指令,啟動 ADK 網頁介面:
    adk web
            
  3. 在使用者介面中互動:
    • 選取「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"
            }
        })
    ],
});
    

提供意見

如要針對地圖體驗代理工具提供意見,請使用下列任一表單: