MCP Reference: mapstools.googleapis.com

Este es un servidor de MCP que proporcionan las herramientas de agente de Maps Experience. El servidor proporciona herramientas para que los desarrolladores creen aplicaciones de LLM sobre Google Maps Platform.

Un servidor de Protocolo de contexto del modelo (MCP) actúa como un proxy entre un servicio externo que proporciona contexto, datos o capacidades a un modelo de lenguaje grande (LLM) o una aplicación de IA. Los servidores de MCP conectan las aplicaciones de IA a sistemas externos, como bases de datos y servicios web, y traducen sus respuestas a un formato que la aplicación de IA pueda entender.

Configuración del servidor

Debes habilitar los servidores de MCP y configurar la autenticación antes de usarlos. Para obtener más información sobre el uso de los servidores de MCP remotos de Google y Google Cloud, consulta la descripción general de los servidores de MCP de Google Cloud.

Extremos de servidor

Un extremo de servicio de MCP es la dirección de red y la interfaz de comunicación (por lo general, una URL) del servidor de MCP que usa una aplicación de IA (el host para el cliente de MCP) para establecer una conexión segura y estandarizada. Es el punto de contacto para que el LLM solicite contexto, llame a una herramienta o acceda a un recurso. Los extremos de MCP de Google pueden ser globales o regionales.

El servidor de MCP de Maps Experience Agent Tools tiene el siguiente extremo de MCP global:

  • https://mapstools.googleapis.com/mcp

Herramientas de MCP

Una herramienta de MCP es una función o capacidad ejecutable que un servidor de MCP expone a un LLM o una aplicación de IA para realizar una acción en el mundo real.

Herramientas

El servidor de MCP mapstools.googleapis.com tiene las siguientes herramientas:

Herramientas de MCP
search_places

Llama a esta herramienta cuando la solicitud del usuario sea encontrar lugares, empresas, direcciones, ubicaciones, puntos de interés o cualquier otra búsqueda relacionada con Google Maps.

Requisitos de entrada (CRUCIALES):

  1. text_query (cadena, OBLIGATORIO): Es la búsqueda principal. Debe definir claramente lo que busca el usuario.

    • Ejemplos: 'restaurants in New York', 'coffee shops near Golden Gate Park', 'SF MoMA', '1600 Amphitheatre Pkwy, Mountain View, CA, USA', 'pets friendly parks in Manhattan, New York', 'date night restaurants in Chicago', 'accessible public libraries in Los Angeles'.
    • Para obtener detalles específicos de un lugar: Incluye el atributo solicitado (p.ej., 'Google Store Mountain View opening hours', 'SF MoMa phone number', 'Shoreline Park Mountain View address').
  2. location_bias (objeto, OPCIONAL): Usa este parámetro para priorizar los resultados cercanos a un área geográfica específica.

    • Formato: {"location_bias": {"circle": {"center": {"latitude": [value], "longitude": [value]}, "radius_meters": [value (optional)]}}}
    • Uso:
      • Para sesgar los resultados a un radio de 5 km, haz lo siguiente: {"location_bias": {"circle": {"center": {"latitude": 34.052235, "longitude": -118.243683}, "radius_meters": 5000}}}
      • Para sesgar con fuerza hacia el punto central: {"location_bias": {"circle": {"center": {"latitude": 34.052235, "longitude": -118.243683}}}} (omitiendo radius_meters).
  3. language_code (cadena, OPCIONAL): Es el idioma en el que se mostrará el resumen de los resultados de la búsqueda.

    • Formato: Un código de idioma de dos letras (ISO 639-1), seguido opcionalmente de un guion bajo y un código de país de dos letras (ISO 3166-1 alfa-2), p.ej., en, ja, en_US, zh_CN, es_MX. Si no se proporciona el código de idioma, los resultados se mostrarán en inglés.
  4. region_code (cadena, OPCIONAL): Es el código regional CLDR de Unicode del usuario. Este parámetro se usa para mostrar los detalles del lugar, como el nombre del lugar específico de la región, si está disponible. El parámetro puede afectar los resultados según la legislación aplicable.

    • Formato: Un código de país de dos letras (ISO 3166-1 alpha-2), p.ej., US, CA.

Instrucciones para la llamada a la herramienta:

  • Información de ubicación (CRÍTICO): La búsqueda debe contener suficiente información de ubicación. Si la ubicación es ambigua (p.ej., solo "pizzerías"), debes especificarla en el text_query (p.ej., "pizzerías en Nueva York") o usar el parámetro location_bias. Incluye la ciudad, el estado o la provincia, y el nombre de la región o el país si es necesario para evitar ambigüedades.

  • Siempre proporciona el text_query más específico y con el mayor contexto posible.

  • Solo usa location_bias si se proporcionan coordenadas de forma explícita o si inferir una ubicación a partir del contexto conocido de un usuario es apropiado y necesario para obtener mejores resultados.

  • El resultado fundamentado se debe atribuir a la fuente con la información del campo attribution cuando esté disponible.

lookup_weather

Recupera datos meteorológicos completos, incluidas las condiciones actuales y los pronósticos por hora y diarios.

Datos específicos disponibles: Temperatura (actual, sensación térmica, máxima/mínima, índice de calor), viento (velocidad, ráfagas, dirección), eventos celestes (salida/puesta del sol, fase lunar), precipitación (tipo, probabilidad, cantidad/QPF), condiciones atmosféricas (índice UV, humedad, cobertura de nubes, probabilidad de tormentas eléctricas) y dirección de ubicación geocodificada.

Ubicación y reglas de ubicación (CRÍTICO):

La ubicación para la que se solicitan los datos meteorológicos se especifica con el campo location. Este campo es una estructura "oneof", lo que significa que DEBES proporcionar un valor para SOLO UNO de los tres subcampos de ubicación que se indican a continuación para garantizar una búsqueda precisa de los datos meteorológicos.

  1. Coordenadas geográficas (lat_lng)

    • Úsala cuando se te proporcionen coordenadas exactas de latitud y longitud.
    • Ejemplo: {"location": {"lat_lng": {"latitude": 34.0522, "longitude": -118.2437}}} // Los Ángeles
  2. ID de lugar (place_id)

    • Un identificador de cadena inequívoco (ID de lugar de Google Maps)
    • El place_id se puede recuperar de la herramienta search_places.
    • Ejemplo: {"location": {"place_id": "ChIJLU7jZClu5kcR4PcOOO6p3I0"}} // Torre Eiffel
  3. Cadena de dirección (address)

    • Es una cadena de formato libre que requiere especificidad para la geocodificación.
    • Ciudad y región: Incluye siempre la región o el país (p.ej., "Londres, Reino Unido", no "Londres").
    • Dirección: Proporciona la dirección completa (p.ej., "1600 Pennsylvania Ave NW, Washington, DC").
    • Códigos postales: DEBEN ir acompañados del nombre del país (p. ej., "90210, EE.UU.", NO "90210").
    • Ejemplo: {"location": {"address": "1600 Pennsylvania Ave NW, Washington, DC"}}

Modos de uso:

  • Clima actual: Proporciona solo location. No especifiques date ni hour.

  • Pronóstico por hora: Proporciona location, date y hour (0-23). Úsala para horas específicas (p. ej., "a las 5 p.m.") o términos como "en las próximas horas" o "más tarde hoy". Si el usuario especifica el minuto, redondea hacia abajo a la hora más cercana. No se admite la previsión por hora más allá de las 120 horas a partir de ahora. Se admite el clima histórico por hora hasta 24 horas en el pasado.

  • Pronóstico diario: Proporciona location y date. No especifiques hour. Se usa para solicitudes generales de días (p.ej., "clima para mañana", "clima el viernes", "clima el 25/12"). Si la fecha de hoy no está en el contexto, debes aclararla con el usuario. No se admite la previsión diaria de más de 10 días, incluido el día de hoy. No se admiten los datos históricos del clima.

Restricciones de parámetros:

  • Zonas horarias: Todas las entradas de date y hour deben ser relativas a la zona horaria local de la ubicación, no a la zona horaria del usuario.
  • Formato de fecha: Las entradas deben estar separadas en {year, month, day} números enteros.
  • Unidades: El valor predeterminado es METRIC. Establece units_system en IMPERIAL para Fahrenheit/millas si el usuario implica estándares de EE.UU. o lo solicita explícitamente.
  • El resultado fundamentado se debe atribuir a la fuente con la información del campo attribution cuando esté disponible.

compute_routes

Calcula las rutas de viaje entre un origen y un destino, opcionalmente a través de paradas intermedias. Devuelve la distancia y la duración de cada ruta.

Requisitos de entrada (CRUCIALES):

  1. origin y destination (objetos, OBLIGATORIO): Cada uno se debe proporcionar con exactamente uno de los siguientes elementos:

    • address (cadena, p.ej., 'Eiffel Tower, Paris'). Los lugares con nombre, los puntos de referencia y las empresas se resuelven directamente, por lo que NO debes llamar primero a search_places solo para geocodificar un punto de referencia. Incluye cualquier ciudad, región o país que haya mencionado el usuario.
    • lat_lng (objeto, {"latitude": number, "longitude": number}).
    • place_id (cadena, p.ej., 'ChIJOwE_Id1w5EAR4Q27FkL6T_0'), por ejemplo, de search_places.
  2. intermediate_waypoints (array de objetos, OPCIONAL): Hasta 10 paradas por las que se debe pasar, en orden, entre el origen y el destino. Tiene el mismo formato que origin. No se admite con TRANSIT. Solo incluye las paradas que solicitó el usuario.

  3. travel_mode (enum, OPCIONAL): DRIVE (predeterminado), WALK, BICYCLE o TRANSIT.

  4. Momento (OPCIONAL, establece como máximo UNO): Marcas de tiempo RFC 3339 con una diferencia horaria UTC, p.ej., '2026-09-19T08:00:00-07:00'. El valor predeterminado es la hora de salida actual. Para TRANSIT, la hora puede ser de hasta 7 días en el pasado o hasta 100 días en el futuro. Para otros modos, la hora puede ser de hasta 365 días en el futuro y no debe ser en el pasado.

    • departure_time: Se usa cuando el usuario indica cuándo se irá (p. ej., "mañana a las 8 a.m.").
    • arrival_time: Se usa cuando el usuario indica cuándo debe llegar (p. ej., "llegar a las 9 a.m.").
  5. routing_preference (enum, OPCIONAL):

    • ROUTING_PREFERENCE_TRAFFIC_UNAWARE (predeterminado): Ignora el tráfico en tiempo real, los incidentes y los cortes. Latencia más baja.
    • ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL: Usa las condiciones de tráfico en tiempo real cuando están disponibles. No se admite para WALK ni BICYCLE. Establece este parámetro SOLO cuando el usuario pregunte sobre el tráfico, la congestión o una hora estimada de llegada ajustada según el tráfico. Genera un costo y una latencia más altos.
  6. location_bias (objeto, OPCIONAL): Es el {"latitude": number, "longitude": number} que se usa para eliminar la ambigüedad de los nombres de lugares en las direcciones de puntos de referencia. Si un nombre es ambiguo (p.ej., "Springfield") y el usuario no proporcionó una región, mantén el nombre tal como se indica en address y establece location_bias hacia el área prevista en lugar de adivinar una región.

  7. compute_alternative_routes (booleano, OPCIONAL): Se establece en true solo cuando el usuario solicita opciones o alternativas de ruta. El valor predeterminado es false, que devuelve solo la ruta recomendada.

  8. include_polyline (booleano, OPCIONAL): Se establece en true solo cuando se necesita la geometría de la ruta (encoded_polyline). El valor predeterminado es false.

Instrucciones para la llamada a la herramienta:

  • Si falta el origen o el destino, DEBES pedirle al usuario que lo aclare antes de llamar a la herramienta.
  • Para las preguntas del tipo "¿Qué distancia hay entre A y B?", usa B como origin y A como destination.

Ejemplo de llamada a la herramienta: {"origin":{"address":"Eiffel Tower"},"destination":{"place_id":"ChIJt_5xIthw5EARoJ71mGq7t74"},"intermediate_waypoints":[{"address":"Louvre Museum"}],"travel_mode":"DRIVE","departure_time":"2026-09-19T08:00:00+02:00"}

Instrucciones para la respuesta:

  • Cuando se solicitan rutas alternativas, estas se ordenan de la más a la menos recomendada.
  • Si routes está vacío, indícale al usuario que no se encontró ninguna ruta. No adivines una ruta.
  • Solo indica los hechos que devuelve la herramienta. NO inventes instrucciones paso a paso, líneas de transporte público, estaciones, plataformas ni transbordos.
  • El resultado fundamentado se debe atribuir a la fuente con el campo attribution de cada ruta, cuando esté disponible.
resolve_names

Resuelve una lista por lotes de consultas de ubicaciones específicas (nombres de puntos de referencia o direcciones exactas) en IDs de lugar canónicos de Google Maps.

Requisitos de entrada (CRUCIALES):

  1. queries (array de objetos, OBLIGATORIO): Es una lista de consultas de ubicación que se deben resolver. Puedes especificar hasta 20 consultas.

    • Cada objeto de consulta debe tener lo siguiente:
      • text (cadena, OBLIGATORIO): Es la búsqueda de texto que representa el nombre o la dirección de un lugar específico que se debe resolver.
        • Ejemplos: 'Googleplex, Mountain View, CA', '1600 Amphitheatre Pkwy, Mountain View, CA' y 'Eiffel Tower, Paris'.
  2. location_bias (objeto, OPCIONAL): Usa este parámetro para priorizar los resultados cercanos a un área geográfica específica.

    • Formato: {"viewport": {"low": {"latitude": [value], "longitude": [value]}, "high": {"latitude": [value], "longitude": [value]}}}
  3. region_code (cadena, OPCIONAL): Es el código regional CLDR de Unicode (código de país de dos letras, p.ej., US, CA) del usuario para sesgar los resultados.

Instrucciones para la llamada a la herramienta:

  • Especificidad (CRÍTICO): Las búsquedas deben representar el nombre o la dirección de un lugar específico. No se admiten búsquedas generales, como 'restaurants', ni nombres de cadenas, como 'Starbucks'.
  • NO llames a esta herramienta si las herramientas downstream que planeas invocar ya aceptan directamente cadenas de direcciones o nombres de lugares sin procesar.

Cómo guardar en Google Maps:

  • La respuesta incluye un campo save_to_maps_url, que es un solo vínculo de Google Maps que contiene todos los lugares resueltos correctamente.
  • Cuando el usuario quiera guardar, compartir o abrir los lugares resueltos como una lista en Google Maps, preséntale este vínculo. NO construyas este vínculo por tu cuenta.

Manejo de errores (CRÍTICO):

  • Esta es una herramienta de procesamiento por lotes. Una solicitud puede devolver "resultados mixtos" (p.ej., algunas consultas se resuelven correctamente, mientras que otras fallan).
  • Se garantiza que la lista de salida de results se asigne 1:1 con los índices de queries de entrada. Una consulta con errores dará como resultado un mensaje Result vacío (no se establece entity) en su índice correspondiente en la lista results.
  • DEBES verificar el campo de mapa failed_requests en la respuesta para identificar qué índice de consulta específico falló. La clave de failed_requests representa el índice basado en 0 de la consulta con errores en la solicitud. No asumas que toda la llamada por lotes falló debido a un error parcial.
resolve_maps_urls

Resuelve una lista de URLs de Google Maps en IDs de lugar canónicos de Google Maps.

Cuándo llamar a esta herramienta (CRÍTICO):

  • Usa esta herramienta cuando el usuario proporcione una o más URLs o vínculos para compartir de Google Maps (p.ej., "https://maps.app.goo.gl/...", 'https://www.google.com/maps/place/...' o 'https://maps.google.com/...') y necesitas extraer los IDs de lugar canónicos subyacentes.
  • Puedes especificar hasta 20 URLs para resolver en una sola solicitud por lotes.

Requisitos de entrada (CRUCIALES):

  • urls (array de cadenas, OBLIGATORIO): Es la lista de URLs de Google Maps que se deben resolver. Cada URL debe ser una URL válida de Google Maps que dirija a un solo lugar.

Cómo guardar en Google Maps:

  • La respuesta incluye un campo save_to_maps_url, que es un solo vínculo de Google Maps que contiene todos los lugares resueltos correctamente.
  • Cuando el usuario quiera guardar, compartir o abrir los lugares resueltos como una lista en Google Maps (p.ej., recopilar lugares compartidos en una conversación), preséntale este vínculo. NO construyas este vínculo por tu cuenta.

Manejo de errores (CRÍTICO):

  • Esta es una herramienta de procesamiento por lotes. Una solicitud puede devolver "resultados mixtos" (p.ej., algunas URLs se resuelven correctamente, mientras que otras fallan).
  • Se garantiza que la lista de salida de entities se asigne 1:1 con los índices de urls de entrada. Si falla la resolución de la URL, se generará un mensaje Entity vacío (no se establecen campos) en el índice correspondiente de la lista entities.
  • DEBES verificar el campo de mapa failed_requests en la respuesta para identificar qué índice de URL específico falló. La clave de failed_requests representa el índice basado en 0 de la URL con errores en la solicitud. No asumas que toda la llamada por lotes falló debido a un error parcial.

Obtén las especificaciones de la herramienta de MCP

Para obtener las especificaciones de las herramientas de MCP para todas las herramientas de un servidor de MCP, usa el método tools/list. En el siguiente ejemplo, se muestra cómo usar curl para enumerar todas las herramientas y sus especificaciones disponibles actualmente en el servidor de MCP.

Solicitud de curl
curl --location 'https://mapstools.googleapis.com/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--data '{
    "method": "tools/list",
    "jsonrpc": "2.0",
    "id": 1
}'