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):
origindandestination(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 panggilsearch_placesterlebih 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 darisearch_places.
intermediate_waypoints(array objek - OPSIONAL): Maksimal 10 perhentian yang harus dilewati, secara berurutan, antara tempat asal dan tujuan. Format sama sepertiorigin. Tidak didukung denganTRANSIT. Hanya sertakan perhentian yang diminta pengguna.travel_mode(enum - OPSIONAL):DRIVE(default),WALK,BICYCLE, atauTRANSIT.Timing (OPSIONAL - tetapkan maksimal SATU): Stempel waktu RFC 3339 dengan offset UTC, misalnya,
'2026-09-19T08:00:00-07:00'. Defaultnya adalah berangkat sekarang. UntukTRANSIT, 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").
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 untukWALKatauBICYCLE. 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.
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 diaddressdan tetapkanlocation_biaske area yang dimaksud, bukan menebak wilayah.compute_alternative_routes(boolean - OPSIONAL): Tetapkan ketruehanya jika pengguna meminta opsi atau alternatif rute. Defaultnya adalahfalse, yang hanya menampilkan rute yang direkomendasikan.include_polyline(boolean - OPSIONAL): Setel ketruehanya jika geometri rute (encoded_polyline) diperlukan. Nilai defaultnya adalahfalse.
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
origindan A sebagaidestination.
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
routeskosong, 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
attributionsetiap 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 ( |
| Kolom | |
|---|---|
origin |
Wajib. Titik jalan asal. |
destination |
Wajib. Titik jalan tujuan. |
travelMode |
Opsional. Menentukan moda transportasi. |
intermediateWaypoints[] |
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 |
routingPreference |
Opsional. Menentukan cara data lalu lintas digunakan untuk menghitung rute. |
locationBias |
Opsional. Lokasi untuk membiaskan hasil penelusuran, misalnya untuk memperjelas kueri teks titik jalan. |
includePolyline |
Opsional. Apakah akan menyertakan polyline yang dienkode dalam rute respons. Default-nya adalah |
computeAlternativeRoutes |
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 |
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: |
arrivalTime |
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: |
Stempel waktu
| Representasi JSON |
|---|
{ "seconds": string, "nanos": integer } |
| Kolom | |
|---|---|
seconds |
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 |
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 |
| Kolom | |
|---|---|
Kolom union location_type. Berbagai cara untuk merepresentasikan lokasi. location_type hanya dapat berupa salah satu dari berikut: |
|
latLng |
Titik yang ditentukan menggunakan koordinat geografis. |
placeId |
ID Tempat yang terkait dengan titik jalan. |
address |
Alamat yang dapat dibaca manusia atau plus code. Lihat https://plus.codes untuk mengetahui detailnya. |
LatLng
| Representasi JSON |
|---|
{ "latitude": number, "longitude": number } |
| Kolom | |
|---|---|
latitude |
Lintang dalam derajat. Harus dalam rentang [-90.0, +90.0]. |
longitude |
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 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 |
Skema Output
ComputeRoutesResponse.
ComputeRoutesResponse
| Representasi JSON |
|---|
{
"routes": [
{
object ( |
| Kolom | |
|---|---|
routes[] |
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 |
Rute
| Representasi JSON |
|---|
{
"distanceMeters": integer,
"duration": string,
"attribution": {
object ( |
| Kolom | |
|---|---|
distanceMeters |
Jarak perjalanan rute, dalam meter. |
duration |
Durasi waktu yang diperlukan untuk menavigasi rute. Durasi dalam detik dengan maksimal sembilan digit pecahan, diakhiri dengan ' |
attribution |
Atribusi yang diperlukan untuk ditampilkan bersama rute. |
encodedPolyline |
Polyline rute yang dienkode. Lihat https://developers.google.com/maps/documentation/utilities/polylinealgorithm |
retrievalToken |
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 |
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 |
Pecahan detik bertanda tangan pada resolusi nanodetik dari rentang waktu. Durasi kurang dari satu detik direpresentasikan dengan kolom |
Atribusi
| Representasi JSON |
|---|
{ "title": string, "url": string } |
| Kolom | |
|---|---|
title |
Judul yang akan ditampilkan untuk atribusi. |
url |
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: ❌