MCP Tools Reference: mapstools.googleapis.com

Alat: compute_routes

Menghitung rute perjalanan antara tempat asal dan tujuan, secara opsional melalui perhentian di antaranya. Menampilkan jarak dan durasi untuk setiap rute.

Persyaratan Input (PENTING):

  1. origin dan destination (objek - WAJIB): Masing-masing harus disediakan menggunakan salah satu dari:

    • address (string, misalnya, 'Eiffel Tower, Paris'). Tempat, tempat terkenal, dan bisnis yang diberi nama akan di-resolve secara langsung, jadi JANGAN panggil search_places terlebih dahulu hanya untuk melakukan geocoding pada titik jalan. Sertakan kota, wilayah, atau negara yang disebutkan pengguna.
    • lat_lng (objek, {"latitude": number, "longitude": number}).
    • place_id (string, misalnya, 'ChIJOwE_Id1w5EAR4Q27FkL6T_0'), misalnya dari search_places.
  2. intermediate_waypoints (array objek - OPSIONAL): Maksimal 10 perhentian yang harus dilewati, secara berurutan, antara tempat asal dan tujuan. Format sama seperti origin. Tidak didukung dengan TRANSIT. Hanya sertakan perhentian yang diminta pengguna.

  3. travel_mode (enum - OPSIONAL): DRIVE (default), WALK, BICYCLE, atau TRANSIT.

  4. Timing (OPSIONAL - tetapkan maksimal SATU): Stempel waktu RFC 3339 dengan offset UTC, misalnya, '2026-09-19T08:00:00-07:00'. Defaultnya adalah berangkat sekarang. Untuk TRANSIT, waktunya dapat ditetapkan hingga 7 hari yang lalu atau hingga 100 hari ke depan. Untuk mode lainnya, waktu dapat ditetapkan hingga 365 hari ke depan dan tidak boleh di masa lalu.

    • departure_time: Gunakan saat pengguna menyebutkan waktu keberangkatan (misalnya, "besok pukul 08.00").
    • arrival_time: Gunakan saat pengguna menyebutkan waktu kedatangan yang diinginkan (misalnya, "tiba di sana pukul 09.00").
  5. routing_preference (enum - OPSIONAL):

    • ROUTING_PREFERENCE_TRAFFIC_UNAWARE (default): mengabaikan lalu lintas langsung, insiden, dan penutupan. Latensi terendah.
    • ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL: menggunakan kondisi lalu lintas real-time jika tersedia. Tidak didukung untuk WALK atau BICYCLE. Tetapkan ini HANYA jika pengguna bertanya tentang lalu lintas, kemacetan, atau perkiraan waktu tiba (ETA) yang disesuaikan dengan lalu lintas. Hal ini menimbulkan biaya dan latensi yang lebih tinggi.
  6. location_bias (objek - OPSIONAL): {"latitude": number, "longitude": number} digunakan untuk memperjelas nama tempat di alamat titik jalan. Jika nama bersifat ambigu (misalnya, "Springfield") dan pengguna tidak memberikan wilayah, pertahankan nama seperti yang diberikan di address dan tetapkan location_bias ke area yang dimaksud, bukan menebak wilayah.

  7. compute_alternative_routes (boolean - OPSIONAL): Tetapkan ke true hanya jika pengguna meminta opsi atau alternatif rute. Defaultnya adalah false, yang hanya menampilkan rute yang direkomendasikan.

  8. include_polyline (boolean - OPSIONAL): Setel ke true hanya jika geometri rute (encoded_polyline) diperlukan. Nilai defaultnya adalah false.

Petunjuk untuk Panggilan Alat:

  • Jika asal atau tujuan tidak ada, Anda HARUS meminta klarifikasi kepada pengguna sebelum memanggil alat.
  • Untuk pertanyaan "Seberapa jauh A dari B?", gunakan B sebagai origin dan A sebagai destination.

Contoh Panggilan Alat: {"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:

  • Saat rute alternatif diminta, rute akan diurutkan dari yang paling direkomendasikan hingga yang paling tidak direkomendasikan.
  • Jika routes kosong, beri tahu pengguna bahwa tidak ada rute yang ditemukan. Jangan menebak rute.
  • Hanya nyatakan fakta yang ditampilkan oleh alat. JANGAN membuat rute belokan demi belokan, jalur transportasi umum, stasiun, peron, atau transfer.
  • Output yang di-grounding harus diatribusikan ke sumber menggunakan kolom attribution setiap rute jika tersedia.

Contoh kode berikut menunjukkan cara menggunakan curl untuk memanggil alat MCP compute_routes.

Permintaan 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
}'

Skema Input

ComputeRoutesRequest.

ComputeRoutesRequest

Representasi 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.
}
Kolom
origin

object (Waypoint)

Wajib. Titik jalan asal.

destination

object (Waypoint)

Wajib. Titik jalan tujuan.

travelMode

enum (RouteTravelMode)

Opsional. Menentukan moda transportasi.

intermediateWaypoints[]

object (Waypoint)

Opsional. Perhentian sementara antara tempat asal dan tujuan yang harus dilewati secara berurutan. Maksimal 10 titik jalan perantara yang didukung. Titik jalan perantara tidak didukung jika travel_mode adalah TRANSIT.

routingPreference

enum (RoutingPreference)

Opsional. Menentukan cara data lalu lintas digunakan untuk menghitung rute. ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL tidak didukung jika travel_mode adalah WALK atau BICYCLE. Untuk TRANSIT, fitur ini mengaktifkan data transportasi umum real-time, seperti keterlambatan dan pembatalan.

locationBias

object (LatLng)

Opsional. Lokasi untuk membiaskan hasil penelusuran, misalnya untuk memperjelas kueri teks titik jalan.

includePolyline

boolean

Opsional. Apakah akan menyertakan polyline yang dienkode dalam rute respons. Default-nya adalah false. Jika ditetapkan ke true, Route.encoded_polyline akan ditampilkan.

computeAlternativeRoutes

boolean

Opsional. Apakah akan menghitung rute alternatif selain rute yang direkomendasikan. Nilai defaultnya adalah false, yang berarti hanya rute yang direkomendasikan yang akan ditampilkan. Jika ditetapkan ke true, semua rute yang tersedia akan ditampilkan, meskipun alternatif mungkin tidak tersedia untuk setiap permintaan.

Kolom union timing. Menentukan kapan harus berangkat dari tempat asal atau tiba di titik jalan akhir. Jika tidak ditentukan, setelan defaultnya adalah keberangkatan pada waktu saat ini. Untuk TRANSIT, waktu harus maksimal 7 hari yang lalu dan maksimal 100 hari ke depan. Untuk mode transportasi lainnya, waktu tidak boleh di masa lalu dan harus maksimal 365 hari di masa mendatang. timing hanya dapat berupa salah satu dari hal berikut:
departureTime

string (Timestamp format)

Opsional. Menunjukkan bahwa rute harus dihitung berdasarkan waktu keberangkatan.

Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

arrivalTime

string (Timestamp format)

Opsional. Menunjukkan bahwa rute harus dihitung berdasarkan waktu tiba.

Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

Stempel waktu

Representasi JSON
{
  "seconds": string,
  "nanos": integer
}
Kolom
seconds

string (int64 format)

Mewakili detik waktu UTC sejak epoch Unix 1970-01-01T00:00:00Z. Harus antara -62135596800 dan 253402300799 inklusif (yang sesuai dengan 0001-01-01T00:00:00Z hingga 9999-12-31T23:59:59Z).

nanos

integer

Pecahan detik non-negatif pada resolusi nanodetik. Kolom ini adalah bagian nanodetik dari durasi, bukan alternatif untuk detik. Nilai detik negatif dengan pecahan harus tetap memiliki nilai nano non-negatif yang dihitung maju dalam waktu. Harus antara 0 dan 999.999.999 inklusif.

Waypoint

Representasi 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.
}
Kolom
Kolom union location_type. Berbagai cara untuk merepresentasikan lokasi. location_type hanya dapat berupa salah satu dari berikut:
latLng

object (LatLng)

Titik yang ditentukan menggunakan koordinat geografis.

placeId

string

ID Tempat yang terkait dengan titik jalan.

address

string

Alamat yang dapat dibaca manusia atau plus code. Lihat https://plus.codes untuk mengetahui detailnya.

LatLng

Representasi JSON
{
  "latitude": number,
  "longitude": number
}
Kolom
latitude

number

Lintang dalam derajat. Harus dalam rentang [-90.0, +90.0].

longitude

number

Bujur dalam derajat. Harus dalam rentang [-180.0, +180.0].

RouteTravelMode

Kumpulan nilai yang digunakan untuk menentukan mode perjalanan.

Enum
ROUTE_TRAVEL_MODE_UNSPECIFIED Tidak ada mode perjalanan yang ditentukan. Default-nya adalah DRIVE.
DRIVE Bepergian dengan mobil penumpang.
WALK Bepergian dengan berjalan kaki. CATATAN: Rute WALK masih dalam versi beta dan terkadang mungkin tidak memiliki trotoar atau jalur pejalan kaki yang jelas. Anda harus menampilkan peringatan ini kepada pengguna untuk semua rute jalan kaki yang Anda tampilkan di aplikasi.
BICYCLE Bepergian dengan sepeda.
TRANSIT Bepergian dengan transportasi umum.

RoutingPreference

Serangkaian nilai yang menentukan faktor yang perlu dipertimbangkan saat menghitung rute.

Enum
ROUTING_PREFERENCE_UNSPECIFIED Tidak ada preferensi pemilihan rute yang ditentukan. Default-nya adalah ROUTING_PREFERENCE_TRAFFIC_UNAWARE.
ROUTING_PREFERENCE_TRAFFIC_UNAWARE Menghitung rute tanpa mempertimbangkan kondisi lalu lintas real-time. Cocok jika kondisi lalu lintas tidak penting atau tidak berlaku. Penggunaan nilai ini akan menghasilkan latensi terendah.
ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL

Menghitung rute dengan mempertimbangkan kondisi lalu lintas real-time, jika data lalu lintas tersedia. Untuk TRANSIT, menggunakan data transportasi umum real-time, seperti keterlambatan dan pembatalan, jika tersedia.

Nilai ini akan memicu paket Pro dan menimbulkan biaya yang ditagih serta latensi yang lebih tinggi. Fitur ini hanya tersedia untuk pelanggan yang diizinkan. Jika tidak diizinkan, permintaan akan kembali ke ROUTING_PREFERENCE_TRAFFIC_UNAWARE.

Skema Output

ComputeRoutesResponse.

ComputeRoutesResponse

Representasi JSON
{
  "routes": [
    {
      object (Route)
    }
  ]
}
Kolom
routes[]

object (Route)

Berisi rute antara tempat asal dan tujuan yang diminta, diurutkan dari yang paling direkomendasikan hingga yang paling tidak direkomendasikan. Hanya satu rute yang ditampilkan kecuali jika ComputeRoutesRequest.compute_alternative_routes ditetapkan ke true.

Rute

Representasi JSON
{
  "distanceMeters": integer,
  "duration": string,
  "attribution": {
    object (Attribution)
  },
  "encodedPolyline": string,
  "retrievalToken": string
}
Kolom
distanceMeters

integer

Jarak perjalanan rute, dalam meter.

duration

string (Duration format)

Durasi waktu yang diperlukan untuk menavigasi rute.

Durasi dalam detik dengan maksimal sembilan digit pecahan, diakhiri dengan 's'. Contoh: "3.5s".

attribution

object (Attribution)

Atribusi yang diperlukan untuk ditampilkan bersama rute.

encodedPolyline

string

Polyline rute yang dienkode. Lihat https://developers.google.com/maps/documentation/utilities/polylinealgorithm

retrievalToken

string

Token yang dapat digunakan untuk mengambil rute spesifik ini di alat downstream, seperti SearchAlongRoute. Berlaku selama 10 menit.

Durasi

Representasi JSON
{
  "seconds": string,
  "nanos": integer
}
Kolom
seconds

string (int64 format)

Detik bertanda dari rentang waktu. Harus dari -315.576.000.000 hingga +315.576.000.000 inklusif. Catatan: batas ini dihitung dari: 60 dtk/mnt * 60 mnt/jam * 24 jam/hari * 365,25 hari/tahun * 10.000 tahun

nanos

integer

Pecahan detik bertanda tangan pada resolusi nanodetik dari rentang waktu. Durasi kurang dari satu detik direpresentasikan dengan kolom seconds 0 dan kolom nanos positif atau negatif. Untuk durasi satu detik atau lebih, nilai bukan nol untuk kolom nanos harus memiliki tanda yang sama dengan kolom seconds. Harus dari -999.999.999 hingga +999.999.999 inklusif.

Atribusi

Representasi JSON
{
  "title": string,
  "url": string
}
Kolom
title

string

Judul yang akan ditampilkan untuk atribusi.

url

string

URL yang akan ditautkan untuk atribusi.

Anotasi Alat

Anotasi alat dikirim ke klien MCP untuk menjelaskan risiko dasar alat tertentu. Sebagian besar klien memperlakukan petunjuk ini sebagai tidak tepercaya, tetapi petunjuk tersebut dapat digunakan untuk memutuskan kapan perintah konfirmasi dapat dikirim kepada pengguna.

Bersama dengan string judul, petunjuk boolean berikut ditentukan sebagai berikut:

  • readOnlyHint: Jika benar, alat tidak akan mengubah lingkungannya. Default: false.
  • destructiveHint: Jika benar, alat dapat melakukan tindakan destruktif. Jika salah (false), alat hanya dapat melakukan tindakan aditif. Default: true.
  • idempotentHint: Jika benar, memanggil alat berulang kali dengan argumen yang sama tidak akan memberikan efek tambahan pada lingkungannya. Default: false.
  • openWorldHint: Jika benar, alat dapat berinteraksi dengan 'open world' entitas eksternal. Jika salah, alat hanya dapat berinteraksi dengan entity internal. Misalnya, alat penelusuran web akan bersifat open world, sedangkan alat memori tidak akan bersifat open world.

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