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):
originydestination(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 asearch_placessolo 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, desearch_places.
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 queorigin. No se admite conTRANSIT. Solo incluye las paradas que solicitó el usuario.travel_mode(enum, OPCIONAL):DRIVE(predeterminado),WALK,BICYCLEoTRANSIT.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. ParaTRANSIT, 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.").
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 paraWALKniBICYCLE. 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.
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 enaddressy establecelocation_biashacia el área prevista en lugar de adivinar una región.compute_alternative_routes(booleano, OPCIONAL): Se establece entruesolo cuando el usuario solicita opciones o alternativas de ruta. El valor predeterminado esfalse, que devuelve solo la ruta recomendada.include_polyline(booleano, OPCIONAL): Se establece entruesolo cuando se necesita la geometría de la ruta (encoded_polyline). El valor predeterminado esfalse.
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
originy A comodestination.
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
routesestá 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
attributionde 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 ( |
| Campos | |
|---|---|
origin |
Obligatorio. Es el punto de referencia de origen. |
destination |
Obligatorio. Es el punto de referencia de destino. |
travelMode |
Opcional. Especifica el medio de transporte. |
intermediateWaypoints[] |
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 |
routingPreference |
Opcional. Determina cómo se usan los datos de tráfico para calcular la ruta. |
locationBias |
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 |
Opcional. Indica si se debe incluir la polilínea codificada en las rutas de respuesta. La configuración predeterminada es |
computeAlternativeRoutes |
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 |
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: |
arrivalTime |
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: |
Marca de tiempo
| Representación JSON |
|---|
{ "seconds": string, "nanos": integer } |
| Campos | |
|---|---|
seconds |
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 |
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 |
| 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 |
Es un punto especificado con coordenadas geográficas. |
placeId |
Es el ID de lugar asociado con el punto de referencia. |
address |
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 |
La latitud expresada en grados. Debe pertenecer al rango [-90.0, +90.0]. |
longitude |
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 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 |
Esquema de salida
ComputeRoutesResponse.
ComputeRoutesResponse
| Representación JSON |
|---|
{
"routes": [
{
object ( |
| Campos | |
|---|---|
routes[] |
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 |
Enruta
| Representación JSON |
|---|
{
"distanceMeters": integer,
"duration": string,
"attribution": {
object ( |
| Campos | |
|---|---|
distanceMeters |
Es la distancia de viaje de la ruta, en metros. |
duration |
Es el tiempo necesario para recorrer la ruta. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
attribution |
Es la atribución obligatoria que se debe mostrar con la ruta. |
encodedPolyline |
Es una polilínea codificada de la ruta. Consulta https://developers.google.com/maps/documentation/utilities/polylinealgorithm |
retrievalToken |
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 |
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 |
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 |
Atribución
| Representación JSON |
|---|
{ "title": string, "url": string } |
| Campos | |
|---|---|
title |
Es el título que se mostrará para la atribución. |
url |
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: ❌