Инструмент: 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(enum – НЕОБЯЗАТЕЛЬНО):DRIVE(по умолчанию),WALK,BICYCLEилиTRANSIT.Время (НЕОБЯЗАТЕЛЬНО – укажите не более одного значения): временные метки RFC 3339 с разницей с UTC, например
'2026-09-19T08:00:00-07:00'. По умолчанию используется текущее время. ДляTRANSITможно указать время в пределах семи дней в прошлом или 100 дней в будущем. Для других режимов время может быть установлено на 365 дней вперед и не должно быть в прошлом.departure_time– используйте, когда пользователь говорит, когда он уедет (например, "завтра в 8 утра").arrival_time– используйте, когда пользователь говорит, к какому времени ему нужно прибыть (например, "быть там к 9:00").
routing_preference(enum – НЕОБЯЗАТЕЛЬНО):ROUTING_PREFERENCE_TRAFFIC_UNAWARE(по умолчанию): не учитывает текущую загруженность дорог, инциденты и перекрытия. Самая низкая задержка.ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL– используются данные о загруженности дорог в реальном времени (если доступны). Не поддерживается дляWALKиBICYCLE. Устанавливайте этот параметр, ТОЛЬКО когда пользователь спрашивает о дорожном движении, пробках или расчетном времени прибытия с учетом пробок. Это приводит к более высоким затратам и задержкам.
location_bias(объект, НЕОБЯЗАТЕЛЬНО).{"latitude": number, "longitude": number}, используемый для устранения неоднозначности названий мест в адресах путевых точек. Если название неоднозначно (например, "Спрингфилд"), а пользователь не указал регион, оставьте название вaddressкак есть и установитеlocation_biasв направлении нужной области, а не угадывайте регион.compute_alternative_routes(логическое значение, НЕОБЯЗАТЕЛЬНО). Установите значениеtrue, только если пользователь запрашивает варианты маршрута. По умолчанию используется значениеfalse, при котором возвращается только рекомендуемый маршрут.include_polyline(логическое значение, НЕОБЯЗАТЕЛЬНО). Установите значениеtrue, только если требуется геометрия маршрута (encoded_polyline). Значение по умолчанию –false.
Инструкции по вызову инструмента
- Если пункт отправления или назначения отсутствует, вы ДОЛЖНЫ попросить пользователя уточнить информацию, прежде чем вызывать инструмент.
- Для вопросов типа "Как далеко А от Б?" используйте Б в качестве
originи А в качестве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"}
Инструкции по ответу:
- Если запрашиваются альтернативные маршруты, они упорядочиваются от наиболее рекомендуемых к наименее рекомендуемым.
- Если
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 ( |
| Поля | |
|---|---|
origin |
Обязательно. Начальная путевая точка. |
destination |
Обязательно. Путевая точка пункта назначения. |
travelMode |
Необязательное поле. Указывает способ передвижения. |
intermediateWaypoints[] |
Необязательное поле. Промежуточные остановки между пунктами отправления и назначения, через которые нужно проехать по порядку. Поддерживается не более 10 промежуточных путевых точек. Промежуточные путевые точки не поддерживаются, если для параметра |
routingPreference |
Необязательное поле. Определяет, как данные о трафике используются для расчета маршрута. |
locationBias |
Необязательное поле. Местоположение, которое будет использоваться для уточнения результатов поиска, например для устранения неоднозначности текстовых запросов путевых точек. |
includePolyline |
Необязательное поле. Следует ли включать закодированную ломаную линию в маршруты ответа. Значение по умолчанию – |
computeAlternativeRoutes |
Необязательное поле. Нужно ли рассчитывать альтернативные маршруты в дополнение к рекомендуемому. По умолчанию используется значение false, при котором возвращается только рекомендуемый маршрут. Если задано значение true, возвращаются все доступные маршруты, хотя альтернативные варианты могут быть доступны не для каждого запроса. |
Объединенное поле timing. Указывает, когда нужно отправиться из начальной точки или прибыть в конечную путевую точку. Если не указано, по умолчанию используется текущее время отправления. Для TRANSIT время должно быть не более 7 дней в прошлом и не более 100 дней в будущем. Для других способов передвижения время не должно быть в прошлом и должно быть не более 365 дней в будущем. Поле timing может иметь одно из следующих значений: |
|
departureTime |
Необязательное поле. Указывает, что маршрут должен рассчитываться на основе времени отправления. Используется формат RFC 3339. Результат всегда будет Z-нормализованным, и в нем будут использоваться цифры дробных частей 0, 3, 6 или 9. Допустимы и другие типы нормализации. Примеры: |
arrivalTime |
Необязательное поле. Указывает, что маршрут должен рассчитываться на основе времени прибытия. Используется формат RFC 3339. Результат всегда будет Z-нормализованным, и в нем будут использоваться цифры дробных частей 0, 3, 6 или 9. Допустимы и другие типы нормализации. Примеры: |
Временная метка
| 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 |
Идентификатор места, связанный с путевой точкой. |
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 находятся на этапе бета-тестирования. Иногда на них могут отсутствовать тротуары или пешеходные дорожки. Вы должны показывать это предупреждение пользователю для всех пеших маршрутов, которые вы показываете в своем приложении. |
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 дней/год * 10 000 лет. |
nanos |
Доли секунды со знаком и наносекундным разрешением. Продолжительность менее одной секунды представлена полем |
Атрибуция
| JSON-представление |
|---|
{ "title": string, "url": string } |
| Поля | |
|---|---|
title |
Заголовок, который будет показываться в атрибуции. |
url |
URL, на который ведет ссылка для атрибуции. |
Аннотации инструментов
Аннотации инструментов отправляются клиентам MCP, чтобы описать базовый риск, связанный с определенным инструментом. Большинство клиентов считают эти подсказки ненадежными, но их можно использовать, чтобы решить, когда пользователю может быть отправлен запрос на подтверждение.
Помимо строки заголовка, определены следующие логические подсказки:
readOnlyHint: если задано значение true, инструмент не изменяет свою среду. Значение по умолчанию – false.destructiveHint: если задано значение True, инструмент может выполнять деструктивные действия. Если задано значение false, инструмент может выполнять только действия по добавлению. Значение по умолчанию: true.idempotentHint. Если задано значение True, повторный вызов инструмента с теми же аргументами не будет иметь дополнительного эффекта в его среде. Значение по умолчанию – false.openWorldHint: если задано значение true, инструмент может взаимодействовать с открытым миром внешних объектов. Если false, то инструмент может взаимодействовать только с внутренними объектами. Например, инструмент веб-поиска будет открытым миром, а инструмент памяти – нет.
Destructive Hint: ❌ | Idempotent Hint: ❌ | Read Only Hint: ✅ | Open World Hint: ❌