Google Maps Platform Grounding Lite 是一项支持 Model Context Protocol (MCP) 的服务,可让您轻松地使用 Google 地图中可信的地理空间数据来接地 AI 应用。MCP 服务器提供了一些工具,可让 LLM 访问地点、天气和路线功能。您可以在任何支持 MCP 服务器的工具中启用 Maps Grounding Lite,以便试用该服务。
工具
Maps Grounding Lite 提供了一些工具,可让 LLM 访问以下 Google 地图功能:
- 搜索地点: 请求有关地点的相关信息,并获取 AI 生成的地点数据摘要, 以及摘要中每个地点的地点 ID、纬度和经度坐标以及 Google 地图 链接。您可以将返回的地点 ID 以及纬度和经度坐标与其他 Google Maps Platform API 搭配使用,以便在地图上显示地点。
- **查询天气**: 请求有关天气的相关信息,并返回当前天气状况、每小时 天气预报和每日天气预报。
计算路线: 请求有关两个地点之间的驾车或步行路线的相关信息 并返回路线距离和时长信息。
启用 Maps Grounding Lite MCP 服务器后,LLM 即可调用服务器公开的新工具,以便为上面列出的数据类型返回额外的接地信息。虽然 LLM 可以使用此额外信息来获取上下文,但 LLM 最终生成的响应可能不包含 MCP 服务器返回的确切信息。您应验证生成的响应的准确性。
试用 Maps Grounding Lite 示例应用 (在新标签页中打开)
结算和配额
结算方式
根据 Google Maps Platform 随用随付定价模式,Maps Grounding Lite 的使用量按每个请求计算,其中每个请求代表一个结算事件。用量按产品 SKU 进行跟踪。除了总费用外,您的账单还会显示每个 SKU 的明细项。如需了解详情,请参阅 报告概览 。
Maps Grounding Lite 还通过 Essentials 和 Pro 订阅以节省费用 套餐提供。
配额
以下配额适用于 Maps Grounding Lite 提供的工具:
- 搜索地点:每个项目每分钟 300 个查询。
- 查询天气:每个项目每分钟 300 个查询。
- 计算路线:每个项目每分钟 300 个查询。
政策和服务条款
Maps Grounding Lite 须遵守 Google Maps Platform 服务条款,包括此服务的服务专用条款。本部分介绍了 Maps Grounding Lite 的附加服务使用要求,包括兼容的大语言模型和标明出处要求。
兼容 LLM 的要求
您只能将 Maps Grounding Lite 与符合 Google Maps Platform 服务条款的 LLM 搭配使用。
例如,您有责任确保 Google 地图内容不会被您选择使用的 LLM 缓存、存储或用于改进该 LLM。在使用 Maps Grounding Lite 之前,您需要查看您打算与 Maps Grounding Lite 搭配使用的任何模型的服务条款。您不得将 Maps Grounding Lite 与任何使用输入到模型中的数据进行模型训练或改进的模型搭配使用。您有责任确保您对模型的使用完全符合 Google Maps Platform 服务条款(包括服务专用条款)中对 Google 地图内容的限制。
Google 地图来源的归属要求
Maps Grounding Lite 中的每个工具响应都包含来源。在呈现使用 Maps Grounding Lite 提供的工具的结果时,您必须以满足以下要求的方式包含关联的 Google 地图来源:
- Google 地图来源必须紧跟在来源支持的生成内容之后。此类生成的内容也称为接地输出 。
- Google 地图来源必须在一次用户互动中可见。
“搜索地点”工具的来源
search_places 工具 places 字段提供了支持
summary 的来源。对于 places,系统会返回以下元数据:
place(资源名称)idlocationgoogleMapsLinks
对于每个地点,您都必须生成符合以下要求的链接预览:
- 请按照 Maps Grounding Lite 文字归属指南,将每项来源归属至 Google 地图。
- 使用响应中的
places.googleMapsLinks.placeUrl链接到来源。
配置 LLM 以使用 MCP 服务器
如需使用 Maps Grounding Lite,您首先需要一个启用了 Maps Grounding Lite API 服务的 Google Cloud 云项目,以及一个 API 密钥或 OAuth 客户端 ID。然后,您可以配置 LLM 以访问 MCP 服务器。Grounding Lite MCP 服务器使用可流式传输的 HTTP 传输。
在 Google Cloud 云项目中启用 Maps Grounding Lite 服务
如需在项目中启用该 API,请执行以下操作:
- 在 Google Cloud 控制台 中, 选择您要用于 Maps Grounding Lite 的项目。
- 请在 Google Cloud 控制台中为项目启用结算功能。
- 在 Google Cloud 控制台 API 库中启用 Maps Grounding Lite。
使用 API 密钥进行身份验证
您可以将现有 API 密钥与 Maps Grounding Lite 搭配使用,也可以创建新的 API 密钥,前提是您需要在 Google Cloud 云项目和密钥中启用Maps Grounding Lite API 服务。
如需使用 API 密钥进行身份验证,请执行以下操作:
- 按照 Google Maps Platform 入门 中的步骤创建或配置 API 密钥。
- 使用
X-Goog-Api-Key标头将密钥传递给 MCP 服务器。您需要在 LLM 的 MCP 工具配置中将此指定为自定义 HTTP 标头。
使用 OAuth 进行身份验证
您可以通过创建 OAuth 凭据并将其传递给 MCP 主机或 MCP 服务器应用,使用 OAuth 进行身份验证。
如需使用 OAuth 进行身份验证,请执行以下操作:
- 在 Google Cloud 控制台 中, 选择您要用于 Maps Grounding Lite 的项目。
- 在“API 和服务”菜单中,选择凭据 。
- 在顶部菜单中,依次选择创建凭据 > OAuth 客户端 ID 。
- 如果项目没有已配置的权限请求页面,请点击配置权限请求页面 ,然后按照屏幕上的说明操作。
- 在“指标”部分,点击创建 OAuth 客户端 。
- 在“创建 OAuth 客户端 ID”屏幕上,选择应用类型,然后输入客户端 ID 的名称。
- 指定与您的应用类型相关的其他详细信息。 例如,如果您要创建 Web 应用,请为浏览器和服务器请求添加授权 URI。
- 创建客户端后,请保存客户端 ID 和密钥。
- 在配置 MCP 主机或 MCP 服务器应用以访问 Maps Grounding Lite 时,请传递您的 OAuth 客户端 ID 和密钥。您还必须请求以下范围:
https://www.googleapis.com/auth/maps-platform.mapstools。
如需了解详情,请参阅使用 OAuth 2.0 访问 Google API。
配置 LLM 以访问 Maps Grounding Lite MCP 服务器
拥有启用了 Maps Grounding Lite API 服务的 Google Cloud 云项目以及有效凭据(例如 API 密钥或 OAuth 客户端 ID 和 Secret)后,您可以按照相应的 MCP 配置文档并使用 Maps Grounding Lite MCP 服务器网址来配置大语言模型以访问 MCP 服务器:https://mapstools.googleapis.com/mcp
如需了解详情,请参阅在 AI 应用中配置 MCP。
使用 Gemini CLI 配置 Maps Grounding Lite
本部分提供了一个示例,展示了如何使用 Gemini CLI 配置 Maps Grounding Lite MCP 服务器。如需了解详情,请参阅 将 MCP 服务器与 Gemini CLI 搭配使用。
安装 Gemini CLI 后,您可以使用 add 命令配置 Maps Grounding Lite MCP 服务器:
gemini mcp add -s user -t http -H 'X-Goog-Api-Key: API_KEY' maps-grounding-lite-mcp https://mapstools.googleapis.com/mcp如果配置成功,您应该会看到一条确认消息,表明服务器已添加到您的用户设置中。
如需验证服务器是否正常运行,请运行
/mcp list命令:> /mcp list Configured MCP servers: maps-grounding-lite-mcp - Ready (3 tools) Tools: - compute_routes - lookup_weather - search_places开始使用 CLI 提出与地图相关的问题。例如,尝试“Recommend me some restaurants in Mountain View”,系统应会代表您调用 search_places 工具。
使用智能体开发套件 (ADK) 配置 Grounding Lite
本部分提供了一些示例,展示了如何使用 智能体开发套件 (ADK) 以及 Python、Java 或 TypeScript 配置 Grounding Lite MCP 服务器。
Python
第 1 步:使用 McpToolset 为 Google 地图 Grounding Lite 定义 Agent
修改 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 并进行互动
- 设置环境变量:
在终端中将 Google 地图 API 密钥设置为环境变量:export GOOGLE_MAPS_API_KEY="YOUR_ACTUAL_GOOGLE_MAPS_API_KEY"
- 运行
adk web:
运行以下命令以启动 ADK 网页界面:adk web
- 在界面中互动:
- 选择
travel_planner_agent。 - 尝试使用以下提示:
- “我明天要去旧金山。天气怎么样?”
- 查找金门公园附近的咖啡店。
- “获取从 Google 总部到旧金山国际机场的路线。”
- 选择
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 Grounding Lite 的反馈,请使用以下表单: