MCP Tools Reference: mapstools.googleapis.com

เครื่องมือ: compute_routes

คำนวณเส้นทางการเดินทางระหว่างต้นทางและปลายทาง โดยอาจผ่านจุดแวะพักระหว่างทาง แสดงระยะทางและระยะเวลาของแต่ละเส้นทาง

ข้อกำหนดในการป้อนข้อมูล (สำคัญ):

  1. origin และ destination (ออบเจ็กต์ - บังคับ): ต้องระบุแต่ละรายการโดยใช้รายการใดรายการหนึ่งต่อไปนี้เท่านั้น

    • address (สตริง เช่น 'Eiffel Tower, Paris') ระบบจะแก้ไขชื่อสถานที่ จุดสังเกต และธุรกิจโดยตรง ดังนั้นอย่าเรียกใช้ search_places ก่อนเพียงเพื่อเข้ารหัสพิกัดภูมิศาสตร์ของจุดอ้างอิง ระบุเมือง ภูมิภาค หรือประเทศที่ผู้ใช้พูดถึง
    • lat_lng (ออบเจ็กต์, {"latitude": number, "longitude": number})
    • place_id (สตริง เช่น 'ChIJOwE_Id1w5EAR4Q27FkL6T_0') เช่น จาก search_places
  2. intermediate_waypoints (อาร์เรย์ของออบเจ็กต์ - ไม่บังคับ): จุดแวะพักสูงสุด 10 จุดที่ต้องผ่านตามลำดับระหว่างต้นทางและปลายทาง รูปแบบเดียวกับ origin ไม่รองรับ TRANSIT รวมเฉพาะจุดแวะพักที่ผู้ใช้ขอเท่านั้น

  3. travel_mode (enum - ไม่บังคับ): DRIVE (ค่าเริ่มต้น), WALK, BICYCLE หรือ TRANSIT

  4. เวลา (ไม่บังคับ - ตั้งค่าได้ไม่เกิน 1 รายการ): การประทับเวลา RFC 3339 ที่มีการชดเชยเวลา UTC เช่น '2026-09-19T08:00:00-07:00' ค่าเริ่มต้นคือออกเดินทางตอนนี้ สำหรับ TRANSIT เวลาอาจเป็นอดีตได้สูงสุด 7 วันหรืออนาคตได้สูงสุด 100 วัน สำหรับโหมดอื่นๆ เวลาอาจเป็นเวลาในอนาคตได้สูงสุด 365 วัน และต้องไม่เป็นเวลาในอดีต

    • departure_time: ใช้เมื่อผู้ใช้ระบุเวลาที่จะออก (เช่น "พรุ่งนี้ตอน 8 โมงเช้า")
    • arrival_time: ใช้เมื่อผู้ใช้ระบุเวลาที่ต้องไปถึง (เช่น "ไปถึงที่นั่นภายใน 9:00 น.")
  5. routing_preference (enum - ไม่บังคับ):

    • ROUTING_PREFERENCE_TRAFFIC_UNAWARE (ค่าเริ่มต้น): ไม่สนใจสภาพการจราจรแบบเรียลไทม์ เหตุการณ์ และการปิดถนน เวลาในการตอบสนองต่ำที่สุด
    • ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL: ใช้สภาพการจราจรแบบเรียลไทม์เมื่อพร้อมใช้งาน ไม่รองรับ WALK หรือ BICYCLE ตั้งค่านี้เมื่อผู้ใช้ถามเกี่ยวกับการจราจร ความแออัด หรือ ETA ที่ปรับตามการจราจรเท่านั้น ซึ่งทำให้มีค่าใช้จ่ายและเวลาในการตอบสนองสูงขึ้น
  6. location_bias (ออบเจ็กต์ - ไม่บังคับ): {"latitude": number, "longitude": number} ใช้เพื่อแก้ความกำกวมของชื่อสถานที่ในที่อยู่จุดอ้างอิง หากชื่อมีความกำกวม (เช่น "Springfield") และผู้ใช้ไม่ได้ระบุภูมิภาค ให้คงชื่อตามที่ระบุไว้ใน address และตั้งค่า location_bias ไปยังพื้นที่ที่ต้องการแทนการเดาภูมิภาค

  7. compute_alternative_routes (บูลีน - ไม่บังคับ): ตั้งค่าเป็น true เฉพาะเมื่อผู้ใช้ขอตัวเลือกเส้นทางหรือทางเลือกอื่น ค่าเริ่มต้นคือ false ซึ่งจะแสดงเฉพาะเส้นทางที่แนะนำ

  8. include_polyline (บูลีน - ไม่บังคับ): ตั้งค่าเป็น true เฉพาะเมื่อจำเป็นต้องใช้เรขาคณิตของเส้นทาง (encoded_polyline) ค่าเริ่มต้นคือ false

วิธีการเรียกใช้เครื่องมือ

  • หากไม่มีต้นทางหรือปลายทาง คุณต้องขอให้ผู้ใช้ชี้แจงก่อนเรียกใช้เครื่องมือ
  • สำหรับคำถาม "A อยู่ห่างจาก B เท่าใด" ให้ใช้ B เป็น origin และ A เป็น destination

ตัวอย่างการเรียกใช้เครื่องมือ: {"origin":{"address":"หอไอเฟล"},"destination":{"place_id":"ChIJt_5xIthw5EARoJ71mGq7t74"},"intermediate_waypoints":[{"address":"พิพิธภัณฑ์ลูฟวร์"}],"travel_mode":"DRIVE","departure_time":"2026-09-19T08:00:00+02:00"}

วิธีการตอบกลับ

  • เมื่อมีการขอเส้นทางอื่น ระบบจะจัดเรียงเส้นทางจากเส้นทางที่แนะนำมากที่สุดไปจนถึงน้อยที่สุด
  • หาก routes ว่างเปล่า ให้แจ้งผู้ใช้ว่าไม่พบเส้นทาง อย่าเดาเส้นทาง
  • ระบุเฉพาะข้อเท็จจริงที่เครื่องมือแสดงผลเท่านั้น อย่าสร้างเส้นทางแบบเลี้ยวต่อเลี้ยว สายขนส่งสาธารณะ สถานี ชานชาลา หรือการเปลี่ยนสายขึ้นมาเอง
  • เอาต์พุตที่มีการตรวจสอบข้อมูลจากแหล่งที่มาต้องระบุแหล่งที่มาโดยใช้ช่อง attribution ของแต่ละเส้นทาง (หากมี)

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีใช้ curl เพื่อเรียกใช้เครื่องมือ MCP compute_routes

คำขอ 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
}'

สคีมาอินพุต

ComputeRoutesRequest

ComputeRoutesRequest

การแสดง 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.
}
ช่อง
origin

object (Waypoint)

ต้องระบุ จุดอ้างอิงต้นทาง

destination

object (Waypoint)

ต้องระบุ จุดอ้างอิงปลายทาง

travelMode

enum (RouteTravelMode)

ไม่บังคับ ระบุรูปแบบการเดินทาง

intermediateWaypoints[]

object (Waypoint)

ไม่บังคับ จุดแวะพักระหว่างต้นทางและปลายทางที่ต้องผ่านตามลำดับ รองรับจุดอ้างอิงระหว่างทางได้สูงสุด 10 จุด ระบบไม่รองรับจุดอ้างอิงระดับกลางเมื่อ travel_mode เป็น TRANSIT

routingPreference

enum (RoutingPreference)

ไม่บังคับ กำหนดวิธีใช้ข้อมูลการจราจรเพื่อคำนวณเส้นทาง ไม่รองรับ ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL เมื่อ travel_mode เป็น WALK หรือ BICYCLE สำหรับ TRANSIT จะเปิดใช้ข้อมูลขนส่งสาธารณะแบบเรียลไทม์ เช่น ความล่าช้าและการยกเลิก

locationBias

object (LatLng)

ไม่บังคับ ตำแหน่งที่จะให้น้ำหนักผลการค้นหา เช่น เพื่อแก้ความกำกวมของคำค้นหาข้อความจุดอ้างอิง

includePolyline

boolean

ไม่บังคับ ระบุว่าจะรวมเส้นประกอบที่เข้ารหัสไว้ในเส้นทางการตอบกลับหรือไม่ ค่าเริ่มต้นคือ false เมื่อตั้งค่าเป็น true ระบบจะแสดงผล Route.encoded_polyline

computeAlternativeRoutes

boolean

ไม่บังคับ เลือกว่าจะคำนวณเส้นทางอื่นนอกเหนือจากเส้นทางที่แนะนำหรือไม่ ค่าเริ่มต้นคือ "เท็จ" ซึ่งในกรณีนี้ระบบจะแสดงเฉพาะเส้นทางที่แนะนำ เมื่อตั้งค่าเป็น "จริง" ระบบจะแสดงผลเส้นทางที่ใช้ได้ทั้งหมด แม้ว่าอาจไม่มีทางเลือกอื่นสำหรับคำขอทั้งหมดก็ตาม

ฟิลด์ Union timing ระบุเวลาที่จะออกจากต้นทางหรือมาถึงจุดอ้างอิงสุดท้าย ค่าเริ่มต้นจะเป็นการออกเดินทาง ณ เวลาปัจจุบัน หากไม่ได้ระบุไว้ สำหรับ TRANSIT เวลาต้องไม่เกิน 7 วันในอดีตและไม่เกิน 100 วันในอนาคต สำหรับโหมดการเดินทางอื่นๆ เวลาต้องไม่เป็นเวลาในอดีตและต้องไม่เกิน 365 วันในอนาคต timing ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น
departureTime

string (Timestamp format)

ไม่บังคับ ระบุว่าควรคำนวณเส้นทางตามเวลาออกเดินทาง

ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30"

arrivalTime

string (Timestamp format)

ไม่บังคับ ระบุว่าควรคำนวณเส้นทางตามเวลาที่มาถึง

ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30"

การประทับเวลา

การแสดง JSON
{
  "seconds": string,
  "nanos": integer
}
ช่อง
seconds

string (int64 format)

แสดงวินาทีของเวลา UTC นับตั้งแต่ Unix Epoch 1970-01-01T00:00:00Z ต้องอยู่ระหว่าง -62135596800 ถึง 253402300799 (ซึ่งสอดคล้องกับ 0001-01-01T00:00:00Z ถึง 9999-12-31T23:59:59Z)

nanos

integer

เศษส่วนของวินาทีที่ไม่เป็นค่าลบที่ความละเอียดระดับนาโนวินาที ช่องนี้เป็นส่วนนาโนวินาทีของระยะเวลา ไม่ใช่ทางเลือกแทนวินาที ค่าที่สองที่เป็นลบซึ่งมีเศษส่วนยังคงต้องมีค่านาโนที่ไม่เป็นลบซึ่งนับเวลาไปข้างหน้า ต้องอยู่ระหว่าง 0 ถึง 999,999,999

จุดบอกทาง

การแสดง 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.
}
ช่อง
ฟิลด์ Union location_type วิธีต่างๆ ในการแสดงสถานที่ตั้ง location_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น
latLng

object (LatLng)

จุดที่ระบุโดยใช้พิกัดทางภูมิศาสตร์

placeId

string

รหัสสถานที่ที่เชื่อมโยงกับจุดอ้างอิง

address

string

ที่อยู่ที่มนุษย์อ่านได้หรือ Plus Code ดูรายละเอียดได้ที่ https://plus.codes

LatLng

การแสดง JSON
{
  "latitude": number,
  "longitude": number
}
ช่อง
latitude

number

ละติจูดในหน่วยองศา โดยต้องอยู่ในช่วง [-90.0, +90.0]

longitude

number

ลองจิจูดเป็นองศา โดยต้องอยู่ในช่วง [-180.0, +180.0]

RouteTravelMode

ชุดค่าที่ใช้ระบุโหมดการเดินทาง

Enum
ROUTE_TRAVEL_MODE_UNSPECIFIED ไม่ได้ระบุโหมดการเดินทาง ค่าเริ่มต้นคือ DRIVE
DRIVE เดินทางโดยรถยนต์นั่งส่วนบุคคล
WALK เดินทางด้วยการเดิน หมายเหตุ: เส้นทางWALKอยู่ในเวอร์ชันเบต้า และบางครั้งอาจไม่มีทางเท้าหรือทางเดินเท้าที่ชัดเจน คุณต้องแสดงคำเตือนนี้แก่ผู้ใช้สำหรับการเดินทั้งหมดที่แสดงในแอป
BICYCLE เดินทางโดยจักรยาน
TRANSIT เดินทางโดยขนส่งสาธารณะ

RoutingPreference

ชุดค่าที่ระบุปัจจัยที่ต้องพิจารณาเมื่อคำนวณเส้นทาง

Enum
ROUTING_PREFERENCE_UNSPECIFIED ไม่ได้ระบุค่ากำหนดการกำหนดเส้นทาง ค่าเริ่มต้นคือ ROUTING_PREFERENCE_TRAFFIC_UNAWARE
ROUTING_PREFERENCE_TRAFFIC_UNAWARE คำนวณเส้นทางโดยไม่พิจารณาสภาพการจราจรแบบเรียลไทม์ เหมาะสำหรับกรณีที่สภาพการจราจรไม่สำคัญหรือไม่เกี่ยวข้อง การใช้ค่านี้จะทำให้เกิดเวลาในการตอบสนองต่ำที่สุด
ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL

คำนวณเส้นทางโดยพิจารณาสภาพการจราจรแบบเรียลไทม์ (หากมีข้อมูลการจราจร) สำหรับ TRANSIT จะใช้ข้อมูลขนส่งสาธารณะแบบเรียลไทม์ เช่น ความล่าช้าและการยกเลิก เมื่อมีให้บริการ

ค่านี้จะทริกเกอร์ระดับ Pro และทำให้มีค่าใช้จ่ายที่เรียกเก็บและเวลาในการตอบสนองสูงขึ้น ฟีเจอร์นี้พร้อมให้บริการแก่ลูกค้าที่อยู่ในรายการที่อนุญาตเท่านั้น หากไม่อยู่ในรายการที่อนุญาต คำขอจะกลับไปเป็น ROUTING_PREFERENCE_TRAFFIC_UNAWARE

สคีมาเอาต์พุต

ComputeRoutesResponse

ComputeRoutesResponse

การแสดง JSON
{
  "routes": [
    {
      object (Route)
    }
  ]
}
ช่อง
routes[]

object (Route)

มีเส้นทางระหว่างต้นทางและปลายทางที่ขอ โดยเรียงลำดับจากเส้นทางที่แนะนำมากที่สุดไปจนถึงเส้นทางที่แนะนำน้อยที่สุด ระบบจะแสดงผลเส้นทางเดียวเท่านั้น เว้นแต่จะตั้งค่า ComputeRoutesRequest.compute_alternative_routes เป็น "จริง"

เส้นทาง

การแสดง JSON
{
  "distanceMeters": integer,
  "duration": string,
  "attribution": {
    object (Attribution)
  },
  "encodedPolyline": string,
  "retrievalToken": string
}
ช่อง
distanceMeters

integer

ระยะทางการเดินทางของเส้นทางเป็นเมตร

duration

string (Duration format)

ระยะเวลาที่ต้องใช้ในการเดินทางตามเส้นทาง

ระยะเวลาเป็นวินาทีที่มีเศษส่วนไม่เกิน 9 หลัก โดยลงท้ายด้วย "s" เช่น "3.5s"

attribution

object (Attribution)

การระบุแหล่งที่มาที่จำเป็นต้องแสดงพร้อมกับเส้นทาง

encodedPolyline

string

เส้นประกอบที่เข้ารหัสของเส้นทาง ดู https://developers.google.com/maps/documentation/utilities/polylinealgorithm

retrievalToken

string

โทเค็นที่ใช้ดึงข้อมูลเส้นทางที่เฉพาะเจาะจงนี้ในเครื่องมือดาวน์สตรีม เช่น SearchAlongRoute ใช้ได้ 10 นาที

ระยะเวลา

การแสดง JSON
{
  "seconds": string,
  "nanos": integer
}
ช่อง
seconds

string (int64 format)

วินาทีที่ลงชื่อของช่วงเวลา ต้องอยู่ระหว่าง -315,576,000,000 ถึง +315,576,000,000 หมายเหตุ: ขอบเขตเหล่านี้คำนวณจาก 60 วินาที/นาที * 60 นาที/ชม. * 24 ชม./วัน * 365.25 วัน/ปี * 10,000 ปี

nanos

integer

เศษส่วนของวินาทีที่มีเครื่องหมายที่ความละเอียดระดับนาโนวินาทีของช่วงเวลา ระยะเวลาที่น้อยกว่า 1 วินาทีจะแสดงด้วยช่อง seconds ที่มีค่าเป็น 0 และช่อง nanos ที่มีค่าเป็นบวกหรือลบ สำหรับระยะเวลาตั้งแต่ 1 วินาทีขึ้นไป ค่าที่ไม่ใช่ 0 สำหรับช่อง nanos ต้องมีเครื่องหมายเดียวกับช่อง seconds ต้องอยู่ระหว่าง -999,999,999 ถึง +999,999,999

การระบุแหล่งที่มา

การแสดง JSON
{
  "title": string,
  "url": string
}
ช่อง
title

string

ชื่อที่จะแสดงสำหรับการระบุแหล่งที่มา

url

string

URL ที่จะลิงก์ไปเพื่อระบุแหล่งที่มา

คำอธิบายประกอบเครื่องมือ

ระบบจะส่งคำอธิบายประกอบเครื่องมือไปยังไคลเอ็นต์ MCP เพื่ออธิบายความเสี่ยงพื้นฐานของเครื่องมือหนึ่งๆ ไคลเอ็นต์ส่วนใหญ่จะถือว่าคำแนะนำเหล่านี้ไม่น่าเชื่อถือ แต่สามารถใช้เพื่อตัดสินใจว่าจะส่งข้อความแจ้งยืนยันไปยังผู้ใช้เมื่อใด

นอกจากสตริงชื่อแล้ว ยังมีการกำหนดคำแนะนำบูลีนต่อไปนี้ด้วย

  • readOnlyHint: หากเป็นจริง เครื่องมือจะไม่แก้ไขสภาพแวดล้อมของตนเอง ค่าเริ่มต้น: false
  • destructiveHint: หากเป็น "จริง" เครื่องมือจะดำเนินการที่ทำลายล้างได้ หากเป็นเท็จ เครื่องมือจะดำเนินการได้เฉพาะการดำเนินการแบบเพิ่มเท่านั้น ค่าเริ่มต้น: true
  • idempotentHint: หากเป็นจริง การเรียกใช้เครื่องมือซ้ำๆ ด้วยอาร์กิวเมนต์เดียวกันจะไม่มีผลเพิ่มเติมต่อสภาพแวดล้อม ค่าเริ่มต้น: false
  • openWorldHint: หากเป็นจริง เครื่องมือจะโต้ตอบกับ "โอเพนเวิลด์" ของเอนทิตีภายนอกได้ หากเป็นเท็จ เครื่องมือจะโต้ตอบได้เฉพาะกับเอนทิตีภายในเท่านั้น ตัวอย่างเช่น เครื่องมือค้นเว็บจะเป็นแบบโอเพนเวิลด์ ส่วนเครื่องมือความทรงจำจะไม่ใช่แบบโอเพนเวิลด์

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