工具:compute_routes
计算出发地和目的地之间的行程路线,可选择经过中间停靠点。返回每条路线的距离和时长。
输入要求(至关重要):
origin和destination(对象 - 必需):每个对象都必须使用以下其中一项提供:address(字符串,例如'Eiffel Tower, Paris')。系统会直接解析命名的地点、地标和商家,因此请勿仅为了对航点进行地理编码而先调用search_places。包括用户提到的任何城市、地区或国家/地区。lat_lng(对象,{"latitude": number, "longitude": number})。place_id(字符串,例如'ChIJOwE_Id1w5EAR4Q27FkL6T_0'),例如来自search_places。
intermediate_waypoints(对象数组 - 可选):在起点和终点之间最多可按顺序经过 10 个经停点。格式与origin相同。TRANSIT不支持此功能。仅包含用户要求的停靠点。travel_mode(枚举 - 可选):DRIVE(默认)、WALK、BICYCLE或TRANSIT。时间(可选 - 最多设置一个):采用 RFC 3339 时间戳格式,并带有 UTC 偏移量,例如
'2026-09-19T08:00:00-07:00'。默认设置为立即出发。对于TRANSIT,时间可以是过去 7 天内或未来 100 天内的某个时间。对于其他模式,时间最长可为未来 365 天,且不得为过去的时间。departure_time:在用户说出他们何时离开时使用(例如,“明天早上 8 点”)。arrival_time:当用户说出他们必须到达的时间(例如“上午 9 点前到”)时使用。
routing_preference(枚举 - 可选):ROUTING_PREFERENCE_TRAFFIC_UNAWARE(默认):忽略实时路况、异常路况和封路情况。延迟时间最短。ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL:使用实时路况信息(如有)。WALK或BICYCLE不支持此方法。仅当用户询问路况、拥堵情况或根据路况调整后的预计到达时间时,才设置此参数。这会产生更高的费用和延迟时间。
location_bias(对象 - 可选):{"latitude": number, "longitude": number},用于消除航点地址中地名的歧义。如果名称不明确(例如“Springfield”),并且用户未提供区域,请保留address中给出的名称,并将location_bias设置为目标区域,而不是猜测区域。compute_alternative_routes(布尔值 - 可选):仅当用户询问路线选项或替代路线时,才设置为true。默认值为false,仅返回推荐路线。include_polyline(布尔值 - 可选):仅在需要路线几何图形 (encoded_polyline) 时设置为true。默认值为false。
工具调用说明:
- 如果缺少出发地或目的地,您必须先要求用户澄清,然后再调用该工具。
- 对于“A 距离 B 有多远?”这类问题,请将 B 用作
origin,将 A 用作destination。
工具调用示例:{"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:
- 请求备选路线时,路线会按推荐程度从高到低排序。
- 如果
routes为空,请告知用户未找到路线。请勿猜测路线。 - 仅陈述工具返回的事实。请勿虚构精细导航、公交线路、车站、站台或换乘信息。
- 必须使用每条路线的
attribution字段(如有)将接地输出归因于来源。
以下代码示例展示了如何使用 curl 调用 compute_routes MCP 工具。
| 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 ( |
| 字段 | |
|---|---|
origin |
必需。起点航点。 |
destination |
必需。目的地航点。 |
travelMode |
可选。指定交通方式。 |
intermediateWaypoints[] |
可选。出发地和目的地之间要按顺序经过的中间停靠点。最多支持 10 个中间航点。当 |
routingPreference |
可选。确定如何使用路况数据来计算路线。当 |
locationBias |
可选。搜索结果偏向的位置,例如,用于消除航点文本查询的歧义。 |
includePolyline |
可选。是否在响应路线中包含编码多段线。默认为 |
computeAlternativeRoutes |
可选。是否计算除推荐路线之外的备选路线。默认值为 false,在这种情况下,系统只会返回推荐路线。如果设置为 true,系统会返回最多所有可用路线,但并非每个请求都有备选路线。 |
联合字段 timing。指定何时从起点出发或何时到达最终航点。如果未指定,则默认为当前时间出发。对于 TRANSIT,时间必须最多是过去 7 天,最长是未来 100 天。对于其他出行方式,时间不得早于当前时间,且不得晚于当前时间 365 天。timing 只能是下列其中一项: |
|
departureTime |
可选。表示应根据出发时间计算路线。 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不进行“Z”归一化处理的偏差时间也是可以接受的。示例: |
arrivalTime |
可选。表示应根据到达时间计算路线。 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不进行“Z”归一化处理的偏差时间也是可以接受的。示例: |
时间戳
| JSON 表示法 |
|---|
{ "seconds": string, "nanos": integer } |
| 字段 | |
|---|---|
seconds |
表示世界协调时间 (UTC) 的秒数(从 Unix 纪元 1970-01-01T00:00:00Z 开始算起)。必须介于 -62135596800 到 253402300799 之间(含边界值,对应于 0001-01-01T00:00:00Z 到 9999-12-31T23:59:59Z)。 |
nanos |
秒数的非负小数部分(以纳秒为单位)。此字段是时长的纳秒部分,而不是秒的替代。对于含小数部分的负秒数,仍必须包含按时间递升的非负纳秒值。必须在 0 到 999,999,999 之间(含边界值)。 |
航点
| JSON 表示法 |
|---|
{ // Union field |
| 字段 | |
|---|---|
联合字段 location_type。表示位置的不同方式。location_type 只能是下列其中一项: |
|
latLng |
使用地理坐标指定的点。 |
placeId |
与航点关联的地点 ID。 |
address |
人类可读地址或 Plus Code。如需了解详情,请参阅 https://plus.codes。 |
LatLng
| JSON 表示法 |
|---|
{ "latitude": number, "longitude": number } |
| 字段 | |
|---|---|
latitude |
纬度(以度为单位)。它必须在 [-90.0, +90.0] 范围内。 |
longitude |
经度(以度为单位)。它必须在 [-180.0, +180.0] 范围内。 |
RouteTravelMode
一组用于指定出行方式的值。
| 枚举 | |
|---|---|
ROUTE_TRAVEL_MODE_UNSPECIFIED |
未指定出行方式。默认为 DRIVE。 |
DRIVE |
乘轿车出行。 |
WALK |
步行出行。注意:WALK路线功能目前处于 Beta 版阶段,有时可能无法提供清晰的人行道或步行路线。对于应用中显示的所有步行路线,您都必须向用户显示此警告。 |
BICYCLE |
骑自行车出行。 |
TRANSIT |
乘坐公共交通工具出行。 |
RoutingPreference
一组值,用于指定计算路线时要考虑的因素。
| 枚举 | |
|---|---|
ROUTING_PREFERENCE_UNSPECIFIED |
未指定路由偏好设置。默认为 ROUTING_PREFERENCE_TRAFFIC_UNAWARE。 |
ROUTING_PREFERENCE_TRAFFIC_UNAWARE |
计算路线时不考虑实时路况信息。适用于路况信息不重要或不适用的情况。使用此值可实现最低延迟。 |
ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL |
在有路况数据的情况下,计算路线时会考虑实时路况。对于 此值会触发 Pro 层级,并产生更高的结算费用和延迟时间。此功能仅面向列入许可清单的客户提供。如果未列入许可清单,请求将回退到 |
输出架构
ComputeRoutesResponse。
ComputeRoutesResponse
| JSON 表示法 |
|---|
{
"routes": [
{
object ( |
| 字段 | |
|---|---|
routes[] |
包含所请求的出发地和目的地之间的路线,按推荐程度从高到低排序。除非 |
路由
| JSON 表示法 |
|---|
{
"distanceMeters": integer,
"duration": string,
"attribution": {
object ( |
| 字段 | |
|---|---|
distanceMeters |
路线的行程距离(以米为单位)。 |
duration |
沿路线导航所需的时间。 该时长以秒为单位,最多包含九个小数位,以“ |
attribution |
与路线一起显示的必需属性。 |
encodedPolyline |
路线的编码多段线。请参阅 https://developers.google.com/maps/documentation/utilities/polylinealgorithm |
retrievalToken |
一个令牌,可用于在下游工具(例如 SearchAlongRoute)中检索此特定路线。有效期为 10 分钟。 |
时长
| JSON 表示法 |
|---|
{ "seconds": string, "nanos": integer } |
| 字段 | |
|---|---|
seconds |
时间跨度的带符号秒数。必须介于 -315,576,000,000 到 +315,576,000,000 之间(含边界值)。注意:这些边界的计算公式为:60 秒/分钟 * 60 分钟/小时 * 24 小时/天 * 365.25 天/年 * 10000 年 |
nanos |
时间跨度的秒数的有符号小数部分(以纳秒为单位)。小于 1 秒的时长用 0 |
归因
| JSON 表示法 |
|---|
{ "title": string, "url": string } |
| 字段 | |
|---|---|
title |
要为提供方显示的标题。 |
url |
要链接到的归因网址。 |
工具注释
工具注解会发送到 MCP 客户端,用于描述给定工具的基本风险。大多数客户端会将这些提示视为不可信,但可用于决定何时向用户发送确认提示。
除了标题字符串之外,还定义了以下布尔值提示:
readOnlyHint:如果为 true,则该工具不会修改其环境。默认值:false。destructiveHint:如果为 true,则该工具可以执行破坏性操作。如果为 false,则该工具只能执行添加操作。默认值:true。idempotentHint:如果为 true,则使用相同参数重复调用该工具不会对其环境产生额外影响。默认值:false。openWorldHint:如果为 true,则该工具可以与外部实体的“开放世界”进行交互。如果为 false,则该工具只能与内部实体交互。例如,网页搜索工具是开放世界,而记忆工具不是开放世界。
破坏性提示:❌ | 幂等性提示:❌ | 只读提示:✅ | 开放世界提示:❌