Strumento: compute_routes
Calcola i percorsi di viaggio tra un'origine e una destinazione, facoltativamente attraverso fermate intermedie. Restituisce la distanza e la durata di ogni percorso.
Requisiti di input (FONDAMENTALI):
originedestination(oggetti - OBBLIGATORI): ciascuno deve essere fornito utilizzando esattamente uno dei seguenti elementi:address(stringa, ad es.'Eiffel Tower, Paris'). I luoghi, i punti di riferimento e le attività con un nome vengono risolti direttamente, quindi NON chiamare primasearch_placessolo per geocodificare un waypoint. Includi qualsiasi città, regione o paese menzionato dall'utente.lat_lng(oggetto,{"latitude": number, "longitude": number}).place_id(stringa, ad esempio'ChIJOwE_Id1w5EAR4Q27FkL6T_0'), ad esempio dasearch_places.
intermediate_waypoints(array di oggetti - FACOLTATIVO): fino a 25 tappe da attraversare, in ordine, tra l'origine e la destinazione. Stesso formato diorigin. Non supportato conTRANSIT. Includi solo le fermate richieste dall'utente. Se specifichi più di 10 tappe intermedie, i costi e la latenza saranno più elevati.travel_mode(enum - FACOLTATIVO):DRIVE(predefinito),WALK,BICYCLEoTRANSIT.Tempistica (FACOLTATIVO - imposta al massimo UN valore): timestamp RFC 3339 con un offset UTC, ad esempio
'2026-09-19T08:00:00-07:00'. Il valore predefinito è la partenza immediata. PerTRANSIT, l'ora può essere impostata fino a 7 giorni nel passato o fino a 100 giorni nel futuro. Per le altre modalità, l'ora può essere impostata fino a 365 giorni nel futuro e non deve essere nel passato.departure_time: da utilizzare quando l'utente indica quando partirà (ad es. "domani alle 8:00").arrival_time: da utilizzare quando l'utente indica l'orario di arrivo (ad es. "arrivo alle 9:00").
routing_preference(enum - FACOLTATIVO):ROUTING_PREFERENCE_TRAFFIC_UNAWARE(predefinito): ignora il traffico in tempo reale, gli incidenti e le chiusure. Latenza minima.ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL: utilizza le condizioni del traffico in tempo reale, se disponibili. Non supportato perWALKoBICYCLE. Imposta questo valore SOLO quando l'utente chiede informazioni sul traffico, sulla congestione o su un orario di arrivo stimato basato sul traffico. Comporta costi e latenza più elevati.
location_bias(oggetto - FACOLTATIVO):{"latitude": number, "longitude": number}utilizzato per eliminare l'ambiguità dei nomi dei luoghi negli indirizzi dei waypoint. Se un nome è ambiguo (ad es. "Springfield") e l'utente non ha fornito una regione, mantieni il nome così come è stato fornito inaddresse impostalocation_biassull'area prevista anziché indovinare una regione.compute_alternative_routes(booleano - FACOLTATIVO): impostalo sutruesolo quando l'utente richiede opzioni o alternative per il percorso. Il valore predefinito èfalse, che restituisce solo il percorso consigliato.include_polyline(booleano - FACOLTATIVO): imposta sutruesolo quando è necessaria la geometria del percorso (encoded_polyline). Il valore predefinito èfalse.
Instructions for Tool Call:
- Se l'origine o la destinazione non sono presenti, DEVI chiedere chiarimenti all'utente prima di chiamare lo strumento.
- Per le domande del tipo "Quanto dista A da B?", utilizza B come
origine A comedestination.
Esempio di chiamata allo strumento: {"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"}
Instructions for Response:
- Quando vengono richiesti percorsi alternativi, questi vengono ordinati dal più consigliato al meno consigliato.
- Se
routesè vuoto, comunica all'utente che non è stato trovato alcun percorso. Non provare a indovinare un percorso. - Per trovare luoghi lungo un percorso
DRIVE, passa ilretrieval_tokendel percorso asearch_along_route. Il token è valido per 10 minuti. - Indica solo i fatti restituiti dallo strumento. NON inventare indicazioni stradali passo passo, linee di trasporto pubblico, stazioni, banchine o coincidenze.
- L'output basato su dati reali deve essere attribuito alla fonte utilizzando il campo
attributiondi ogni percorso, se disponibile.
Il seguente esempio di codice mostra come utilizzare curl per chiamare lo strumento MCP compute_routes.
| Richiesta 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 }' |
Schema di input
ComputeRoutesRequest.
ComputeRoutesRequest
| Rappresentazione JSON |
|---|
{ "origin": { object ( |
| Campi | |
|---|---|
origin |
Obbligatorio. Waypoint di origine. |
destination |
Obbligatorio. Waypoint di destinazione. |
travelMode |
Facoltativo. Specifica il mezzo di trasporto. |
intermediateWaypoints[] |
Facoltativo. Fermate intermedie tra il luogo di partenza e la destinazione da attraversare in ordine. Sono supportate fino a 25 tappe intermedie. Se specifichi più di 10 waypoint intermedi, i costi e la latenza saranno più elevati. I waypoint intermedi non sono supportati quando |
routingPreference |
Facoltativo. Determina il modo in cui i dati sul traffico vengono utilizzati per calcolare il percorso. |
locationBias |
Facoltativo. Una località verso cui orientare i risultati di ricerca, ad esempio per eliminare l'ambiguità delle query di testo dei waypoint. |
includePolyline |
Facoltativo. Indica se includere la polilinea codificata nei percorsi di risposta. Il valore predefinito è |
computeAlternativeRoutes |
Facoltativo. Indica se calcolare percorsi alternativi oltre a quello consigliato. Il valore predefinito è false, nel qual caso viene restituito solo il percorso consigliato. Se impostato su true, vengono restituite tutte le route disponibili, anche se le alternative potrebbero non essere disponibili per ogni richiesta. |
Campo unione timing. Specifica quando partire dall'origine o arrivare al waypoint finale. Se non specificato, il valore predefinito è l'ora corrente. Per TRANSIT, l'orario deve essere al massimo 7 giorni nel passato e al massimo 100 giorni nel futuro. Per altre modalità di viaggio, l'orario non deve essere nel passato e deve essere al massimo 365 giorni nel futuro. timing può essere solo uno dei seguenti tipi: |
|
departureTime |
Facoltativo. Indica che il percorso deve essere calcolato in base all'ora di partenza. Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: |
arrivalTime |
Facoltativo. Indica che il percorso deve essere calcolato in base all'ora di arrivo. Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: |
Waypoint
| Rappresentazione JSON |
|---|
{ // Union field |
| Campi | |
|---|---|
Campo unione location_type. Diversi modi per rappresentare una località. location_type può essere solo uno dei seguenti tipi: |
|
latLng |
Un punto specificato utilizzando le coordinate geografiche. |
placeId |
L'ID luogo associato al waypoint. |
address |
Indirizzo leggibile o Plus Code. Per maggiori dettagli, visita la pagina https://plus.codes. |
LatLng
| Rappresentazione JSON |
|---|
{ "latitude": number, "longitude": number } |
| Campi | |
|---|---|
latitude |
La latitudine in gradi. Deve essere compreso nell'intervallo [-90,0, +90,0]. |
longitude |
La longitudine in gradi. Deve essere compreso nell'intervallo [-180,0, +180,0]. |
Timestamp
| Rappresentazione JSON |
|---|
{ "seconds": string, "nanos": integer } |
| Campi | |
|---|---|
seconds |
Rappresenta i secondi dell'ora UTC dall'epoca di Unix 1970-01-01T00:00:00Z. Deve essere compreso tra -62135596800 e 253402300799 inclusi (che corrispondono a un intervallo compreso tra 0001-01-01T00:00:00Z e 9999-12-31T23:59:59Z). |
nanos |
Frazioni di secondo non negative con risoluzione in nanosecondi. Questo campo è la parte in nanosecondi della durata, non un'alternativa ai secondi. I valori dei secondi negativi con frazioni devono comunque avere valori di nanosecondi non negativi che avanzano nel tempo. Deve essere un valore compreso tra 0 e 999.999.999 inclusi. |
RouteTravelMode
Un insieme di valori utilizzati per specificare la modalità di viaggio.
| Enum | |
|---|---|
ROUTE_TRAVEL_MODE_UNSPECIFIED |
Nessuna modalità di trasporto specificata. Il valore predefinito è DRIVE. |
DRIVE |
Viaggia in auto. |
WALK |
Spostati a piedi. NOTA: i percorsi di WALK sono in versione beta e a volte potrebbero non includere marciapiedi o percorsi pedonali chiari. Devi mostrare questo avviso all'utente per tutti i percorsi a piedi che mostri nella tua app. |
BICYCLE |
Spostamenti in bicicletta. |
TRANSIT |
Viaggia con i mezzi pubblici. |
RoutingPreference
Un insieme di valori che specificano i fattori da prendere in considerazione durante il calcolo del percorso.
| Enum | |
|---|---|
ROUTING_PREFERENCE_UNSPECIFIED |
Nessuna preferenza di routing specificata. Il valore predefinito è ROUTING_PREFERENCE_TRAFFIC_UNAWARE. |
ROUTING_PREFERENCE_TRAFFIC_UNAWARE |
Calcola i percorsi senza tenere conto delle condizioni del traffico in tempo reale. Adatto quando le condizioni del traffico non sono importanti o non sono applicabili. L'utilizzo di questo valore produce la latenza più bassa. |
ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL |
Calcola i percorsi tenendo conto delle condizioni del traffico in tempo reale, se i dati sul traffico sono disponibili. Per Questo valore attiverà il livello Pro e comporterà costi fatturati e latenza più elevati. |
Schema di output
ComputeRoutesResponse.
ComputeRoutesResponse
| Rappresentazione JSON |
|---|
{
"routes": [
{
object ( |
| Campi | |
|---|---|
routes[] |
Contiene i percorsi tra l'origine e la destinazione richieste, ordinati dal più consigliato al meno consigliato. Viene restituito un solo percorso, a meno che |
Inoltra
| Rappresentazione JSON |
|---|
{
"distanceMeters": integer,
"duration": string,
"attribution": {
object ( |
| Campi | |
|---|---|
distanceMeters |
La distanza di percorrenza del percorso, in metri. |
duration |
Il tempo necessario per percorrere il percorso. Una durata in secondi con un massimo di nove cifre frazionarie, che termina con " |
attribution |
Attribuzione obbligatoria da mostrare con il percorso. |
encodedPolyline |
Una polilinea codificata del percorso. Consulta https://developers.google.com/maps/documentation/utilities/polylinealgorithm |
retrievalToken |
Un token che può essere utilizzato per recuperare questo percorso specifico negli strumenti downstream, come SearchAlongRoute. Valido per 10 minuti. |
Durata
| Rappresentazione JSON |
|---|
{ "seconds": string, "nanos": integer } |
| Campi | |
|---|---|
seconds |
Secondi con segno dell'intervallo di tempo. Deve essere compreso tra -315.576.000.000 e +315.576.000.000 inclusi. Nota: questi limiti vengono calcolati da: 60 sec/min * 60 min/ora * 24 ore/giorno * 365,25 giorni/anno * 10.000 anni |
nanos |
Frazioni di secondo con segno con risoluzione in nanosecondi dell'intervallo di tempo. Le durate inferiori a un secondo sono rappresentate con un campo |
Attribuzione
| Rappresentazione JSON |
|---|
{ "title": string, "url": string } |
| Campi | |
|---|---|
title |
Il titolo da visualizzare per l'attribuzione. |
url |
L'URL a cui collegare l'attribuzione. |
Annotazioni dello strumento
Le annotazioni degli strumenti vengono inviate ai client MCP per descrivere il rischio di base di un determinato strumento. La maggior parte dei client considera questi suggerimenti non attendibili, ma possono essere utilizzati per decidere quando inviare una richiesta di conferma a un utente.
Oltre alla stringa del titolo, i seguenti suggerimenti booleani sono definiti come segue:
readOnlyHint: se true, lo strumento non modifica il suo ambiente. Valore predefinito: false.destructiveHint: se true, lo strumento può eseguire azioni distruttive. Se è false, lo strumento può eseguire solo azioni additive. Valore predefinito: true.idempotentHint: se true, la chiamata ripetuta dello strumento con gli stessi argomenti non avrà alcun effetto aggiuntivo sul suo ambiente. Valore predefinito: false.openWorldHint: se true, lo strumento può interagire con un "open world" di entità esterne. Se false, lo strumento può interagire solo con entità interne. Ad esempio, uno strumento di ricerca web sarebbe open world, mentre uno strumento di memoria non lo sarebbe.
Destructive Hint: ❌ | Idempotent Hint: ❌ | Read Only Hint: ✅ | Open World Hint: ❌