MCP Tools Reference: mapstools.googleapis.com

Herramienta: 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.

En la siguiente muestra de código, se indica cómo usar curl para llamar a la herramienta de MCP compute_routes.

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/call",
  "params": {
    "name": "compute_routes",
    "arguments": {
      // Provide these details according to the MCP tool specification.
    }
  },
  "jsonrpc": "2.0",
  "id": 1
}'

Esquema de entrada

ComputeRoutesRequest.

ComputeRoutesRequest

Representación JSON
{
  "origin": {
    object (Waypoint)
  },
  "destination": {
    object (Waypoint)
  },
  "travelMode": enum (RouteTravelMode),
  "intermediateWaypoints": [
    {
      object (Waypoint)
    }
  ],
  "routingPreference": enum (RoutingPreference),
  "locationBias": {
    object (LatLng)
  },
  "includePolyline": boolean,
  "computeAlternativeRoutes": boolean,

  // Union field timing can be only one of the following:
  "departureTime": string,
  "arrivalTime": string
  // End of list of possible types for union field timing.
}
Campos
origin

object (Waypoint)

Obligatorio. Es el punto de referencia de origen.

destination

object (Waypoint)

Obligatorio. Es el punto de referencia de destino.

travelMode

enum (RouteTravelMode)

Opcional. Especifica el medio de transporte.

intermediateWaypoints[]

object (Waypoint)

Opcional. Son las paradas intermedias entre el origen y el destino por las que se debe pasar en orden. Se admite un máximo de 10 puntos de referencia intermedios. No se admiten puntos de referencia intermedios cuando travel_mode es TRANSIT.

routingPreference

enum (RoutingPreference)

Opcional. Determina cómo se usan los datos de tráfico para calcular la ruta. ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL no se admite cuando travel_mode es WALK o BICYCLE. En el caso de TRANSIT, habilita los datos de transporte público en tiempo real, como retrasos y cancelaciones.

locationBias

object (LatLng)

Opcional. Es una ubicación para sesgar los resultados de la búsqueda, por ejemplo, para eliminar la ambigüedad de las búsquedas de texto de puntos de referencia.

includePolyline

boolean

Opcional. Indica si se debe incluir la polilínea codificada en las rutas de respuesta. La configuración predeterminada es false. Cuando se establece en true, se devuelve Route.encoded_polyline.

computeAlternativeRoutes

boolean

Opcional. Indica si se deben calcular rutas alternativas además de la ruta recomendada. El valor predeterminado es falso, en cuyo caso solo se devuelve la ruta recomendada. Cuando se establece en verdadero, se devuelven hasta todas las rutas disponibles, aunque es posible que no haya alternativas para cada solicitud.

Campo de unión timing. Especifica cuándo salir del origen o llegar al punto de referencia final. Si no se especifica, el valor predeterminado es la hora actual. Para TRANSIT, la hora debe ser como máximo 7 días en el pasado y como máximo 100 días en el futuro. Para otros medios de transporte, la hora no debe ser en el pasado y debe ser, como máximo, 365 días en el futuro. timing puede ser solo uno de los siguientes:
departureTime

string (Timestamp format)

Opcional. Indica que la ruta se debe calcular en función de la hora de salida.

Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

arrivalTime

string (Timestamp format)

Opcional. Indica que la ruta se debe calcular en función de la hora de llegada.

Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

Marca de tiempo

Representación JSON
{
  "seconds": string,
  "nanos": integer
}
Campos
seconds

string (int64 format)

Representa los segundos del horario UTC desde el tiempo Unix 1970-01-01T00:00:00Z. Debe estar entre -62135596800 y 253402300799 inclusive (lo que corresponde a 0001-01-01T00:00:00Z a 9999-12-31T23:59:59Z).

nanos

integer

Fracciones no negativas de un segundo a una resolución de nanosegundos. Este campo es la parte de nanosegundos de la duración, no una alternativa a los segundos. Los valores de segundos negativos con fracciones deben tener valores nanos no negativos que se cuentan hacia adelante en el tiempo. Deben ser valores de 0 a 999,999,999 inclusive.

Punto de referencia

Representación JSON
{

  // Union field location_type can be only one of the following:
  "latLng": {
    object (LatLng)
  },
  "placeId": string,
  "address": string
  // End of list of possible types for union field location_type.
}
Campos
Campo de unión location_type. Diferentes formas de representar una ubicación location_type puede ser solo uno de los parámetros siguientes:
latLng

object (LatLng)

Es un punto especificado con coordenadas geográficas.

placeId

string

Es el ID de lugar asociado con el punto de referencia.

address

string

Es una dirección legible por humanos o un Plus Code. Visita https://plus.codes para obtener más información.

LatLng

Representación JSON
{
  "latitude": number,
  "longitude": number
}
Campos
latitude

number

La latitud expresada en grados. Debe pertenecer al rango [-90.0, +90.0].

longitude

number

La longitud expresada en grados. Debe pertenecer al rango [-180.0, +180.0].

RouteTravelMode

Es un conjunto de valores que se usan para especificar el medio de transporte.

Enums
ROUTE_TRAVEL_MODE_UNSPECIFIED No se especificó ningún medio de transporte. La configuración predeterminada es DRIVE.
DRIVE Viaje en vehículo de pasajeros.
WALK Viaja caminando. NOTA: Las rutas de WALK están en versión beta y, a veces, es posible que no incluyan aceras o rutas peatonales claras. Debes mostrar esta advertencia al usuario para todas las rutas a pie que muestres en tu app.
BICYCLE Viajar en bicicleta
TRANSIT Viajar en transporte público

RoutingPreference

Es un conjunto de valores que especifican los factores que se deben tener en cuenta cuando se calcula la ruta.

Enums
ROUTING_PREFERENCE_UNSPECIFIED No se especificó ninguna preferencia de enrutamiento. La configuración predeterminada es ROUTING_PREFERENCE_TRAFFIC_UNAWARE.
ROUTING_PREFERENCE_TRAFFIC_UNAWARE Calcula rutas sin tener en cuenta las condiciones de tráfico en tiempo real. Es adecuado cuando las condiciones de tráfico no importan o no se aplican. El uso de este valor produce la latencia más baja.
ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL

Calcula rutas teniendo en cuenta las condiciones de tráfico en tiempo real, cuando hay datos de tráfico disponibles. En el caso de TRANSIT, usa datos de transporte público en tiempo real, como retrasos y cancelaciones, cuando están disponibles.

Este valor activará el nivel Pro y generará un costo facturado y una latencia más altos. Esta opción solo está disponible para los clientes incluidos en la lista de entidades permitidas. Si no se incluye en la lista de entidades permitidas, la solicitud recurrirá a ROUTING_PREFERENCE_TRAFFIC_UNAWARE.

Esquema de salida

ComputeRoutesResponse.

ComputeRoutesResponse

Representación JSON
{
  "routes": [
    {
      object (Route)
    }
  ]
}
Campos
routes[]

object (Route)

Contiene rutas entre el origen y el destino solicitados, ordenadas de la más recomendada a la menos recomendada. Solo se devuelve una ruta, a menos que ComputeRoutesRequest.compute_alternative_routes se establezca como verdadero.

Enruta

Representación JSON
{
  "distanceMeters": integer,
  "duration": string,
  "attribution": {
    object (Attribution)
  },
  "encodedPolyline": string,
  "retrievalToken": string
}
Campos
distanceMeters

integer

Es la distancia de viaje de la ruta, en metros.

duration

string (Duration format)

Es el tiempo necesario para recorrer la ruta.

Una duración en segundos con hasta nueve dígitos decimales, que terminan en “s”. Ejemplo: "3.5s".

attribution

object (Attribution)

Es la atribución obligatoria que se debe mostrar con la ruta.

encodedPolyline

string

Es una polilínea codificada de la ruta. Consulta https://developers.google.com/maps/documentation/utilities/polylinealgorithm

retrievalToken

string

Es un token que se puede usar para recuperar esta ruta específica en herramientas downstream, como SearchAlongRoute. Es válido por 10 minutos.

Duración

Representación JSON
{
  "seconds": string,
  "nanos": integer
}
Campos
seconds

string (int64 format)

Segundos con signo del intervalo de tiempo. Debe ser un valor entre -315,576,000,000 y +315,576,000,000 inclusive. Nota: Estos límites se calculan de la siguiente manera: 60 s/min * 60 min/h * 24 h/día * 365.25 días/año * 10,000 años

nanos

integer

Fracciones con signo de un segundo con una resolución de nanosegundos del intervalo de tiempo. Las duraciones de menos de un segundo se representan con un campo seconds de 0 y un campo nanos positivo o negativo. En el caso de las duraciones de un segundo o más, un valor distinto de cero para el campo nanos debe tener el mismo signo que el campo seconds. Deben ser valores de -999,999,999 a +999,999,999 inclusive.

Atribución

Representación JSON
{
  "title": string,
  "url": string
}
Campos
title

string

Es el título que se mostrará para la atribución.

url

string

Es la URL a la que se vinculará la atribución.

Anotaciones de herramientas

Las anotaciones de herramientas se envían a los clientes de MCP para describir el riesgo básico de una herramienta determinada. La mayoría de los clientes tratan estas sugerencias como no confiables, pero se pueden usar para decidir cuándo se puede enviar un mensaje de confirmación a un usuario.

Junto con la cadena de título, las siguientes sugerencias booleanas se definen de la siguiente manera:

  • readOnlyHint: Si es verdadero, la herramienta no modifica su entorno. Valor predeterminado: false.
  • destructiveHint: Si es verdadero, la herramienta puede realizar acciones destructivas. Si es falso, la herramienta solo puede realizar acciones aditivas. Valor predeterminado: true.
  • idempotentHint: Si es verdadero, llamar a la herramienta de forma repetida con los mismos argumentos no tendrá ningún efecto adicional en su entorno. Valor predeterminado: false.
  • openWorldHint: Si es verdadero, la herramienta puede interactuar con un "mundo abierto" de entidades externas. Si es falso, la herramienta solo puede interactuar con entidades internas. Por ejemplo, una herramienta de búsqueda web sería de mundo abierto, mientras que una herramienta de memoria no lo sería.

Sugerencia destructiva: ❌ | Sugerencia idempotente: ❌ | Sugerencia de solo lectura: ✅ | Sugerencia de mundo abierto: ❌