Narzędzie: compute_routes
Oblicza trasy podróży między miejscem początkowym a docelowym, opcjonalnie z przystankami pośrednimi. Zwraca odległość i czas trwania każdej trasy.
Wymagania dotyczące danych wejściowych (KRYTYCZNE):
originidestination(obiekty – WYMAGANE): każdy z nich musi być podany za pomocą dokładnie jednej z tych opcji:address(ciąg znaków, np.'Eiffel Tower, Paris'). Nazwane miejsca, punkty orientacyjne i firmy są rozpoznawane bezpośrednio, więc NIE wywołuj najpierwsearch_placestylko po to, aby uzyskać kod geograficzny punktu na trasie. Uwzględnij miasto, region lub kraj, o którym wspomniał użytkownik.lat_lng(obiekt,{"latitude": number, "longitude": number}).place_id(ciąg znaków, np.'ChIJOwE_Id1w5EAR4Q27FkL6T_0'), na przykład zsearch_places.
intermediate_waypoints(tablica obiektów – OPCJONALNIE): maksymalnie 10 przystanków, przez które należy przejechać, w kolejności między miejscem początkowym a docelowym. Taki sam format jak w poluorigin. Nieobsługiwane w przypadkuTRANSIT. Uwzględniaj tylko przystanki, o które prosi użytkownik.travel_mode(typ wyliczeniowy – OPCJONALNY):DRIVE(domyślny),WALK,BICYCLElubTRANSIT.Czas (OPCJONALNIE – ustaw maksymalnie JEDNĄ wartość): sygnatury czasowe RFC 3339 z przesunięciem UTC, np.
'2026-09-19T08:00:00-07:00'. Domyślnie jest to odjazd teraz. W przypadkuTRANSITczas może wynosić do 7 dni w przeszłości lub do 100 dni w przyszłości. W przypadku innych trybów czas może wynosić do 365 dni w przyszłości i nie może być w przeszłości.departure_time: użyj, gdy użytkownik podaje, kiedy wyjeżdża (np. „jutro o 8:00”).arrival_time: używaj, gdy użytkownik określa, kiedy musi dotrzeć na miejsce (np. „bądź tam o 9:00”).
routing_preference(typ wyliczeniowy – OPCJONALNY):ROUTING_PREFERENCE_TRAFFIC_UNAWARE(domyślna): ignoruje aktualne informacje o natężeniu ruchu, zdarzeniach drogowych i zamkniętych drogach. Najkrótszy czas oczekiwania.ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL: korzysta z informacji o warunkach na drodze w czasie rzeczywistym, jeśli są dostępne. Nieobsługiwane w przypadkuWALKiBICYCLE. Ustaw tę opcję TYLKO wtedy, gdy użytkownik pyta o ruch, korki lub szacowany czas dotarcia na miejsce dostosowany do natężenia ruchu. Powoduje to wyższe koszty i dłuższy czas oczekiwania.
location_bias(obiekt – OPCJONALNY):{"latitude": number, "longitude": number}używany do uściślania nazw miejsc w adresach punktów orientacyjnych. Jeśli nazwa jest niejednoznaczna (np. „Springfield”), a użytkownik nie podał regionu, zachowaj nazwę podaną w poluaddressi ustaw polelocation_biasna obszar docelowy, zamiast zgadywać region.compute_alternative_routes(wartość logiczna – OPCJONALNA): ustaw natruetylko wtedy, gdy użytkownik prosi o opcje lub alternatywne trasy. Domyślna wartość tofalse, co powoduje zwrócenie tylko zalecanej trasy.include_polyline(wartość logiczna – OPCJONALNA): ustaw wartośćtruetylko wtedy, gdy potrzebna jest geometria trasy (encoded_polyline). Domyślna wartość tofalse.
Instrukcje dotyczące wywołania narzędzia:
- Jeśli brakuje miejsca wylotu lub przylotu, przed wywołaniem narzędzia MUSISZ poprosić użytkownika o wyjaśnienie.
- W przypadku pytań typu „Jak daleko jest z A do B?” użyj B jako
origini A jakodestination.
Przykładowe wywołanie narzędzia: {"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"}
Instrukcje dotyczące odpowiedzi:
- Gdy wysyłane jest żądanie tras alternatywnych, trasy są uporządkowane od najbardziej do najmniej zalecanych.
- Jeśli
routesjest puste, poinformuj użytkownika, że nie znaleziono trasy. Nie zgaduj trasy. - Podawaj tylko fakty zwrócone przez narzędzie. NIE wymyślaj szczegółowych wskazówek dojazdu, linii transportu publicznego, stacji, peronów ani przesiadek.
- Uziemione dane wyjściowe muszą być przypisane do źródła za pomocą pola
attributionkażdej trasy, jeśli jest dostępne.
Poniższy przykładowy kod pokazuje, jak używać curl do wywoływania narzędzia MCP compute_routes.
| Żądanie 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 }' |
Schemat wejściowy
ComputeRoutesRequest.
ComputeRoutesRequest
| Zapis JSON |
|---|
{ "origin": { object ( |
| Pola | |
|---|---|
origin |
Wymagane. Punkt orientacyjny punktu początkowego. |
destination |
Wymagane. Punkt na trasie miejsca docelowego. |
travelMode |
Opcjonalnie: Określa środek transportu. |
intermediateWaypoints[] |
Opcjonalnie: Przystanki pośrednie między miejscem początkowym a docelowym, przez które należy przejechać w odpowiedniej kolejności. Obsługiwanych jest maksymalnie 10 pośrednich punktów orientacyjnych. Punkty pośrednie nie są obsługiwane, gdy parametr |
routingPreference |
Opcjonalnie: Określa, jak dane o natężeniu ruchu są używane do obliczania trasy. |
locationBias |
Opcjonalnie: Lokalizacja, która ma być preferowana w wynikach wyszukiwania, np. w celu uściślenia zapytań tekstowych dotyczących punktów pośrednich. |
includePolyline |
Opcjonalnie: Określa, czy w trasach odpowiedzi ma być uwzględniona zakodowana linia łamana. Domyślna wartość to |
computeAlternativeRoutes |
Opcjonalnie: Określa, czy oprócz zalecanej trasy mają być obliczane trasy alternatywne. Wartość domyślna to false, co oznacza, że zwracana jest tylko zalecana trasa. Jeśli ustawiona jest wartość prawda, zwracane są wszystkie dostępne trasy, ale alternatywne trasy mogą nie być dostępne w przypadku każdego żądania. |
Pole zbiorcze timing. Określa, kiedy należy wyruszyć z miejsca początkowego lub dotrzeć do ostatniego punktu na trasie. Jeśli nie zostanie podany, domyślnie przyjmuje się bieżący czas odjazdu. W przypadku TRANSIT czas musi przypadać maksymalnie 7 dni w przeszłości i maksymalnie 100 dni w przyszłości. W przypadku innych środków transportu czas nie może być w przeszłości i może wynosić maksymalnie 365 dni w przyszłości. timing może mieć tylko jedną z tych wartości: |
|
departureTime |
Opcjonalnie: Wskazuje, że trasa powinna być obliczana na podstawie czasu wyjazdu. Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: |
arrivalTime |
Opcjonalnie: Wskazuje, że trasa powinna być obliczana na podstawie czasu przybycia. Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: |
Sygnatura czasowa
| Zapis JSON |
|---|
{ "seconds": string, "nanos": integer } |
| Pola | |
|---|---|
seconds |
Reprezentuje sekundy czasu UTC od epoki uniksowej 1970-01-01T00:00:00Z. Musi mieścić się w zakresie od -62135596800 do 253402300799 włącznie (co odpowiada zakresowi od 0001-01-01T00:00:00Z do 9999-12-31T23:59:59Z). |
nanos |
Nieujemne ułamki sekundy w rozdzielczości nanosekundowej. To pole zawiera nanosekundy, a nie sekundy. Ujemne wartości sekund z ułamkami muszą mieć nieujemne wartości nanosekund, które są liczone do przodu. Musi mieścić się w zakresie od 0 do 999 999 999 włącznie. |
Punkt pośredni
| Zapis JSON |
|---|
{ // Union field |
| Pola | |
|---|---|
Pole zbiorcze location_type. Różne sposoby przedstawiania lokalizacji. location_type może mieć tylko jedną z tych wartości: |
|
latLng |
Punkt określony za pomocą współrzędnych geograficznych. |
placeId |
Identyfikator miejsca powiązany z punktem na trasie. |
address |
Adres zrozumiały dla człowieka lub Plus Code. Więcej informacji znajdziesz na stronie https://plus.codes. |
LatLng
| Zapis JSON |
|---|
{ "latitude": number, "longitude": number } |
| Pola | |
|---|---|
latitude |
Szerokość geograficzna w stopniach. Musi mieścić się w zakresie [-90,0, +90,0]. |
longitude |
Długość geograficzna w stopniach. Musi mieścić się w zakresie [-180,0, +180,0]. |
RouteTravelMode
Zestaw wartości używanych do określania środka transportu.
| Wartości w polu enum | |
|---|---|
ROUTE_TRAVEL_MODE_UNSPECIFIED |
Nie określono środka transportu. Domyślna wartość to DRIVE. |
DRIVE |
Podróż samochodem osobowym. |
WALK |
Podróżuj pieszo. UWAGA: trasy WALK są w wersji beta i czasami mogą nie zawierać wyraźnych chodników lub ścieżek dla pieszych. Musisz wyświetlać to ostrzeżenie użytkownikowi w przypadku wszystkich tras pieszych, które wyświetlasz w aplikacji. |
BICYCLE |
Podróżuj rowerem. |
TRANSIT |
Podróż transportem publicznym. |
RoutingPreference
Zbiór wartości określających czynniki, które należy wziąć pod uwagę podczas obliczania trasy.
| Wartości w polu enum | |
|---|---|
ROUTING_PREFERENCE_UNSPECIFIED |
Nie określono preferencji routingu. Domyślna wartość to ROUTING_PREFERENCE_TRAFFIC_UNAWARE. |
ROUTING_PREFERENCE_TRAFFIC_UNAWARE |
Oblicza trasy bez uwzględniania aktualnych warunków na drodze. Odpowiednie, gdy warunki na drodze nie mają znaczenia lub nie mają zastosowania. Użycie tej wartości zapewnia najniższe opóźnienie. |
ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL |
Oblicza trasy, biorąc pod uwagę aktualne warunki na drodze, jeśli dane o ruchu są dostępne. W przypadku Ta wartość spowoduje aktywowanie poziomu Pro i wyższe rozliczone koszty oraz dłuższy czas oczekiwania. Ta funkcja jest dostępna tylko dla klientów z listy dozwolonych. Jeśli nie znajduje się na liście dozwolonych, żądanie zostanie przekierowane do |
Schemat wyjściowy
ComputeRoutesResponse.
ComputeRoutesResponse
| Zapis JSON |
|---|
{
"routes": [
{
object ( |
| Pola | |
|---|---|
routes[] |
Zawiera trasy między żądanym miejscem początkowym a docelowym, uporządkowane od najbardziej do najmniej zalecanych. Zwracana jest tylko jedna trasa, chyba że parametr |
Trasa
| Zapis JSON |
|---|
{
"distanceMeters": integer,
"duration": string,
"attribution": {
object ( |
| Pola | |
|---|---|
distanceMeters |
Odległość do pokonania na trasie w metrach. |
duration |
czas potrzebny na pokonanie trasy. Czas trwania w sekundach z maksymalnie 9 miejscami po przecinku, zakończony literą „ |
attribution |
Wymagane informacje o autorze, które mają być wyświetlane wraz z trasą. |
encodedPolyline |
zakodowaną linię łamaną trasy, Zobacz https://developers.google.com/maps/documentation/utilities/polylinealgorithm. |
retrievalToken |
Token, którego można użyć do pobrania tej konkretnej trasy w narzędziach podrzędnych, takich jak SearchAlongRoute. Jest ważny przez 10 minut. |
Czas trwania
| Zapis JSON |
|---|
{ "seconds": string, "nanos": integer } |
| Pola | |
|---|---|
seconds |
Sekundy ze znakiem w przedziale czasu. Musi mieścić się w zakresie od -315 576 000 000 do +315 576 000 000 włącznie. Uwaga: te granice są obliczane na podstawie: 60 s/min * 60 min/godz. * 24 godz./dzień * 365,25 dnia/rok * 10 000 lat |
nanos |
Ułamki sekundy ze znakiem w rozdzielczości nanosekundowej przedziału czasu. Czas trwania krótszy niż 1 sekunda jest reprezentowany przez pole |
Atrybucja
| Zapis JSON |
|---|
{ "title": string, "url": string } |
| Pola | |
|---|---|
title |
Tytuł, który ma być wyświetlany w atrybucji. |
url |
Adres URL, do którego ma prowadzić link w atrybucji. |
Adnotacje dotyczące narzędzi
Adnotacje narzędzi są wysyłane do klientów MCP, aby opisać podstawowe ryzyko związane z danym narzędziem. Większość klientów traktuje te wskazówki jako niezaufane, ale można ich użyć do określenia, kiedy wysłać użytkownikowi prośbę o potwierdzenie.
Oprócz ciągu tytułu zdefiniowane są te wskazówki logiczne:
readOnlyHint: jeśli ma wartość „true”, narzędzie nie modyfikuje swojego środowiska. Wartość domyślna: false.destructiveHint: jeśli ma wartość „true”, narzędzie może wykonywać działania destrukcyjne. Jeśli ma wartość false, narzędzie może wykonywać tylko działania dodawania. Wartość domyślna: true.idempotentHint: jeśli ma wartość „true”, wielokrotne wywoływanie narzędzia z tymi samymi argumentami nie będzie miało dodatkowego wpływu na jego środowisko. Wartość domyślna: false.openWorldHint: jeśli ma wartość true, narzędzie może wchodzić w interakcje z „otwartym światem” elementów zewnętrznych. Jeśli ma wartość false, narzędzie może wchodzić w interakcje tylko z elementami wewnętrznymi. Na przykład narzędzie do wyszukiwania w internecie jest narzędziem typu Otwarty świat, ale narzędzie do zapamiętywania już nie.
Wskazówka dotycząca destrukcyjności: ❌ | Wskazówka dotycząca idempotencji: ❌ | Wskazówka dotycząca tylko do odczytu: ✅ | Wskazówka dotycząca otwartego świata: ❌