MCP Tools Reference: mapstools.googleapis.com

Outil : compute_routes

Calcule les itinéraires entre un point de départ et une destination, éventuellement en passant par des arrêts intermédiaires. Renvoie la distance et la durée de chaque itinéraire.

Exigences d'entrée (CRITIQUES) :

  1. origin et destination (objets - OBLIGATOIRE) : chacun doit être fourni en utilisant exactement l'un des éléments suivants :

    • address (chaîne, par exemple 'Eiffel Tower, Paris'). Les lieux nommés, les points de repère et les établissements sont résolus directement. N'appelez donc PAS search_places d'abord juste pour géocoder un point de cheminement. Incluez toute ville, région ou pays mentionné par l'utilisateur.
    • lat_lng (objet, {"latitude": number, "longitude": number}).
    • place_id (chaîne, par exemple 'ChIJOwE_Id1w5EAR4Q27FkL6T_0'), par exemple à partir de search_places.
  2. intermediate_waypoints (tableau d'objets, FACULTATIF) : jusqu'à 10 étapes à parcourir, dans l'ordre, entre le point de départ et la destination. Même format que origin. Non compatible avec TRANSIT. N'incluez que les arrêts demandés par l'utilisateur.

  3. travel_mode (énumération, FACULTATIF) : DRIVE (par défaut), WALK, BICYCLE ou TRANSIT.

  4. Timing (FACULTATIF - définissez au maximum UN timing) : codes temporels RFC 3339 avec un décalage UTC, par exemple '2026-09-19T08:00:00-07:00'. La valeur par défaut est "départ immédiat". Pour TRANSIT, l'heure peut être définie jusqu'à sept jours dans le passé ou jusqu'à 100 jours dans le futur. Pour les autres modes, l'heure peut être définie jusqu'à 365 jours dans le futur et ne doit pas être dans le passé.

    • departure_time : à utiliser lorsque l'utilisateur indique l'heure de son départ (par exemple, "demain à 8h").
    • arrival_time : à utiliser lorsque l'utilisateur indique l'heure à laquelle il doit arriver (par exemple, "être là à 9h").
  5. routing_preference (enum - FACULTATIF) :

    • ROUTING_PREFERENCE_TRAFFIC_UNAWARE (par défaut) : ignore le trafic en temps réel, les incidents et les fermetures. Latence la plus faible.
    • ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL : utilise les conditions de circulation en temps réel lorsqu'elles sont disponibles. Non compatible avec WALK ou BICYCLE. Définissez cette valeur UNIQUEMENT lorsque l'utilisateur pose une question sur le trafic, les embouteillages ou l'heure d'arrivée prévue ajustée en fonction du trafic. Cela entraîne des coûts et une latence plus élevés.
  6. location_bias (objet, FACULTATIF) : {"latitude": number, "longitude": number} utilisé pour lever l'ambiguïté des noms de lieux dans les adresses des points de cheminement. Si un nom est ambigu (par exemple, "Springfield") et que l'utilisateur n'a pas indiqué de région, conservez le nom tel qu'il est indiqué dans address et définissez location_bias sur la zone prévue au lieu de deviner une région.

  7. compute_alternative_routes (booléen, FACULTATIF) : défini sur true uniquement lorsque l'utilisateur demande des options ou des alternatives d'itinéraire. La valeur par défaut est false, qui ne renvoie que l'itinéraire recommandé.

  8. include_polyline (booléen, FACULTATIF) : définissez cette option sur true uniquement lorsque la géométrie de l'itinéraire (encoded_polyline) est nécessaire. La valeur par défaut est false.

Instructions pour l'appel d'outil :

  • Si le point de départ ou la destination sont manquants, vous DEVEZ demander des précisions à l'utilisateur avant d'appeler l'outil.
  • Pour les questions du type "À quelle distance se trouve A de B ?", utilisez B comme origin et A comme destination.

Exemple d'appel d'outil : {"origin":{"address":"Tour Eiffel"},"destination":{"place_id":"ChIJt_5xIthw5EARoJ71mGq7t74"},"intermediate_waypoints":[{"address":"Musée du Louvre"}],"travel_mode":"DRIVE","departure_time":"2026-09-19T08:00:00+02:00"}

Instructions for Response:

  • Lorsque des itinéraires alternatifs sont demandés, ils sont classés du plus au moins recommandé.
  • Si routes est vide, indiquez à l'utilisateur qu'aucun itinéraire n'a été trouvé. Ne devinez pas un itinéraire.
  • N'indiquez que les faits renvoyés par l'outil. N'inventez PAS d'itinéraires détaillés, de lignes de transports en commun, de stations, de quais ni de correspondances.
  • La sortie ancrée doit être attribuée à la source à l'aide du champ attribution de chaque itinéraire, lorsqu'il est disponible.

L'exemple de code suivant montre comment utiliser curl pour appeler l'outil MCP compute_routes.

Requête 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
}'

Schéma d'entrée

ComputeRoutesRequest.

ComputeRoutesRequest

Représentation 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.
}
Champs
origin

object (Waypoint)

Obligatoire. Point de cheminement de départ.

destination

object (Waypoint)

Obligatoire. Point de cheminement de destination.

travelMode

enum (RouteTravelMode)

Facultatif. Spécifie le mode de transport.

intermediateWaypoints[]

object (Waypoint)

Facultatif. Arrêts intermédiaires entre le point de départ et la destination, à traverser dans l'ordre. Vous pouvez ajouter jusqu'à 10 points de cheminement intermédiaires. Les points de cheminement intermédiaires ne sont pas acceptés lorsque travel_mode est défini sur TRANSIT.

routingPreference

enum (RoutingPreference)

Facultatif. Détermine comment les données de trafic sont utilisées pour calculer l'itinéraire. ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL n'est pas compatible lorsque travel_mode est défini sur WALK ou BICYCLE. Pour TRANSIT, il permet d'obtenir des données en temps réel sur les transports en commun, telles que les retards et les annulations.

locationBias

object (LatLng)

Facultatif. Emplacement vers lequel orienter les résultats de recherche, par exemple pour lever l'ambiguïté des requêtes textuelles de points de cheminement.

includePolyline

boolean

Facultatif. Indique si la polyligne encodée doit être incluse dans les itinéraires de la réponse. La valeur par défaut est false. Lorsque la valeur est définie sur true, Route.encoded_polyline est renvoyé.

computeAlternativeRoutes

boolean

Facultatif. Indique s'il faut calculer des itinéraires alternatifs en plus de l'itinéraire recommandé. La valeur par défaut est "false", auquel cas seul l'itinéraire recommandé est renvoyé. Lorsque la valeur est "true", tous les itinéraires disponibles sont renvoyés, même si des alternatives ne sont pas forcément disponibles pour chaque requête.

Champ d'union timing. Indique quand partir du point de départ ou arriver au point de cheminement final. Si aucune valeur n'est spécifiée, l'heure de départ par défaut est l'heure actuelle. Pour TRANSIT, l'heure doit être comprise entre sept jours dans le passé et 100 jours dans le futur. Pour les autres modes de transport, l'heure ne doit pas être passée et doit être comprise dans les 365 prochains jours. La timing ne peut être qu'un des éléments suivants :
departureTime

string (Timestamp format)

Facultatif. Indique que l'itinéraire doit être calculé en fonction de l'heure de départ.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

arrivalTime

string (Timestamp format)

Facultatif. Indique que l'itinéraire doit être calculé en fonction de l'heure d'arrivée.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

Code temporel

Représentation JSON
{
  "seconds": string,
  "nanos": integer
}
Champs
seconds

string (int64 format)

Représente les secondes de l'heure UTC à partir de l'epoch Unix 1970-01-01T00:00:00Z. Doit être compris entre -62135596800 et 253402300799 inclus (ce qui correspond à la période allant du 01/01/0001 à 00:00:00 UTC au 31/12/9999 à 23:59:59 UTC).

nanos

integer

Fractions de secondes non négatives avec une précision de l'ordre de la nanoseconde. Ce champ correspond à la partie en nanosecondes de la durée, et non à une alternative aux secondes. Les valeurs de secondes négatives avec des fractions doivent toujours comporter des valeurs de nanosecondes non négatives comptabilisées dans le temps. La valeur doit être comprise entre 0 et 999 999 999 (inclus).

Repère

Représentation 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.
}
Champs
Champ d'union location_type. Différentes façons de représenter un lieu. location_type ne peut être qu'un des éléments suivants :
latLng

object (LatLng)

Point spécifié à l'aide de coordonnées géographiques.

placeId

string

ID de lieu associé au point de cheminement.

address

string

Adresse lisible ou Plus Code. Pour en savoir plus, consultez https://plus.codes.

LatLng

Représentation JSON
{
  "latitude": number,
  "longitude": number
}
Champs
latitude

number

Latitude en degrés. Elle doit être comprise dans la plage [-90.0, +90.0].

longitude

number

Longitude en degrés. Elle doit être comprise dans la plage [-180.0, +180.0].

RouteTravelMode

Ensemble de valeurs utilisées pour spécifier le mode de transport.

Enums
ROUTE_TRAVEL_MODE_UNSPECIFIED Aucun mode de transport spécifié. La valeur par défaut est DRIVE.
DRIVE Trajet en voiture de tourisme.
WALK Se déplacer à pied. REMARQUE : Les itinéraires WALK sont en version bêta et peuvent parfois ne pas inclure de trottoirs ou de voies piétonnes clairs. Vous devez afficher cet avertissement à l'utilisateur pour tous les itinéraires à pied que vous affichez dans votre application.
BICYCLE Voyagez à vélo.
TRANSIT Trajet en transports en commun.

RoutingPreference

Ensemble de valeurs qui spécifient les facteurs à prendre en compte lors du calcul de l'itinéraire.

Enums
ROUTING_PREFERENCE_UNSPECIFIED Aucune préférence de routage spécifiée. La valeur par défaut est ROUTING_PREFERENCE_TRAFFIC_UNAWARE.
ROUTING_PREFERENCE_TRAFFIC_UNAWARE Calcule les itinéraires sans tenir compte des conditions de circulation en temps réel. Cette option est adaptée lorsque les conditions de circulation n'ont pas d'importance ou ne s'appliquent pas. L'utilisation de cette valeur produit la latence la plus faible.
ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL

Calcule les itinéraires en tenant compte des conditions de circulation en temps réel, lorsque les données de trafic sont disponibles. Pour TRANSIT, utilise les données de transports en commun en temps réel, telles que les retards et les annulations, lorsqu'elles sont disponibles.

Cette valeur déclenchera le niveau Pro et entraînera des coûts de facturation et une latence plus élevés. Cette option n'est disponible que pour les clients figurant sur la liste d'autorisation. Si elle n'est pas ajoutée à la liste d'autorisation, la requête est redirigée vers ROUTING_PREFERENCE_TRAFFIC_UNAWARE.

Schéma de sortie

ComputeRoutesResponse.

ComputeRoutesResponse

Représentation JSON
{
  "routes": [
    {
      object (Route)
    }
  ]
}
Champs
routes[]

object (Route)

Contient les itinéraires entre le point de départ et la destination demandés, classés du plus recommandé au moins recommandé. Un seul itinéraire est renvoyé, sauf si ComputeRoutesRequest.compute_alternative_routes est défini sur "true".

Route

Représentation JSON
{
  "distanceMeters": integer,
  "duration": string,
  "attribution": {
    object (Attribution)
  },
  "encodedPolyline": string,
  "retrievalToken": string
}
Champs
distanceMeters

integer

Distance de l'itinéraire, en mètres.

duration

string (Duration format)

Durée nécessaire pour parcourir l'itinéraire.

Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par "s". Exemple : "3.5s"

attribution

object (Attribution)

Attribution requise à afficher avec l'itinéraire.

encodedPolyline

string

Polyligne encodée de l'itinéraire. Consultez https://developers.google.com/maps/documentation/utilities/polylinealgorithm.

retrievalToken

string

Jeton permettant de récupérer cet itinéraire spécifique dans les outils en aval, tels que SearchAlongRoute. Valide pendant 10 minutes.

Durée

Représentation JSON
{
  "seconds": string,
  "nanos": integer
}
Champs
seconds

string (int64 format)

Secondes signées de l'intervalle de temps. Doit être compris entre -315 576 000 000 et +315 576 000 000 inclus. Remarque : Ces limites sont calculées à partir de : 60 s/min * 60 min/h * 24 h/jour * 365,25 jours/an * 10 000 ans.

nanos

integer

Fractions de seconde signées à une résolution de l'ordre de la nanoseconde de l'intervalle de temps. Les durées inférieures à une seconde sont représentées par un champ seconds de valeur 0 et un champ nanos positif ou négatif. Pour les durées d'une seconde ou plus, une valeur non nulle pour le champ nanos doit avoir le même signe que le champ seconds. Doit être compris entre -999 999 999 et +999 999 999 inclus.

Attribution

Représentation JSON
{
  "title": string,
  "url": string
}
Champs
title

string

Titre à afficher pour l'attribution.

url

string

URL vers laquelle rediriger pour l'attribution.

Annotations d'outils

Les annotations d'outil sont envoyées aux clients MCP pour décrire le risque de base d'un outil donné. La plupart des clients considèrent ces indications comme non fiables, mais elles peuvent être utilisées pour décider quand envoyer une invite de confirmation à un utilisateur.

En plus de la chaîne de titre, les indices booléens suivants sont définis comme suit :

  • readOnlyHint : si la valeur est "true", l'outil ne modifie pas son environnement. Valeur par défaut : "false".
  • destructiveHint : si la valeur est "true", l'outil peut effectuer des actions destructrices. Si la valeur est "false", l'outil ne peut effectuer que des actions d'ajout. Valeur par défaut : "true".
  • idempotentHint : si la valeur est "true", l'appel répété de l'outil avec les mêmes arguments n'aura aucun effet supplémentaire sur son environnement. Valeur par défaut : "false".
  • openWorldHint : si la valeur est "true", l'outil peut interagir avec un "monde ouvert" d'entités externes. Si la valeur est "false", l'outil ne peut interagir qu'avec des entités internes. Par exemple, un outil de recherche sur le Web serait en monde ouvert, tandis qu'un outil de mémoire ne le serait pas.

Destructive Hint: ❌ | Idempotent Hint: ❌ | Read Only Hint: ✅ | Open World Hint: ❌