マップ Grounding Lite

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

ツール

Maps Grounding Lite には、LLM が次の Google マップ機能にアクセスできるようにするツールが用意されています。

  • 場所を検索する: 場所に関する情報をリクエストし、AI が生成した場所データの概要、プレイス ID、緯度と経度の座標、概要に含まれる各場所の Google マップのリンクを取得します。返されたプレイス ID と緯度と経度の座標を他の Google Maps Platform API と組み合わせて使用すると、地図上に場所を表示できます。
  • 天気の検索: 天気に関する情報をリクエストし、現在の状況、1 時間ごとの天気予報、1 日の天気予報を返します。
  • ルートを計算する: 2 つの場所間の運転ルートまたは徒歩ルートに関する情報をリクエストし、ルートの距離と所要時間の情報を返します。

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

Maps Grounding Lite MCP サーバーを有効にすると、LLM はサーバーによって公開された新しいツールを呼び出して、上記のデータタイプの追加のグラウンディング情報を返すことができます。LLM はこの追加情報をコンテキストとして使用できますが、LLM が最終的に生成するレスポンスには、MCP サーバーから返された正確な情報が含まれていない場合があります。生成された回答の正確性を確認する必要があります。

Resolution API

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

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

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

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

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

課金と割り当て

請求方法

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

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

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

Maps Grounding Lite は、Essentials と Pro の定期購入割引パッケージでも提供されています。

割り当て

Maps Grounding Lite が提供するツールと API には、次の割り当てが適用されます。

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

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

ポリシーと利用規約

Maps Grounding Lite には、このサービスのサービス固有の利用規約を含む Google Maps Platform 利用規約が適用されます。このセクションでは、互換性のある LLM やソース アトリビューションの要件など、Maps Grounding Lite の追加のサービス使用要件について説明します。

互換性のある LLM の要件

Maps Grounding Lite は、Google Maps Platform 利用規約に準拠した LLM でのみ使用できます。

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

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

Maps Grounding Lite からの各ツール レスポンスには、ソースが含まれています。Maps Grounding Lite が提供するツールを使用した結果を表示する場合は、次の要件を満たす方法で、関連する Google マップのソースを含める必要があります。

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

場所検索ツールの情報源

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

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

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

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

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

Google Cloud プロジェクトで Maps Grounding Lite サービスを有効にする

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

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

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

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

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

Maps Grounding Lite MCP サーバーにアクセスするように LLM を構成する

Maps Grounding Lite API サービスが有効になっている Google Cloud プロジェクトと、有効な認証情報(API キーや OAuth クライアント ID とシークレットなど)を用意したら、対応する MCP 構成ドキュメントに沿って、Maps Grounding Lite MCP サーバーの URL(https://mapstools.googleapis.com/mcp)を使用して、MCP サーバーにアクセスするように LLM を構成できます。

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

Gemini CLI を使用して Maps Grounding Lite を構成する

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

  1. 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
    

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

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

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

Agent Development Kit(ADK)を使用して Grounding Lite を構成する

このセクションでは、Agent Development Kit(ADK)と Python、Java、TypeScript のいずれかを使用して Grounding Lite MCP サーバーを構成する方法の例を示します。

Python

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

ステップ 1: Google マップ Grounding Lite の 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 Grounding Lite に関するフィードバックを送信するには、次のフォームを使用してください。