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. Время (НЕОБЯЗАТЕЛЬНО – укажите не более одного значения): временные метки RFC 3339 с разницей с UTC, например '2026-09-19T08:00:00-07:00'. По умолчанию используется текущее время. Для TRANSIT можно указать время в пределах семи дней в прошлом или 100 дней в будущем. Для других режимов время может быть установлено на 365 дней вперед и не должно быть в прошлом.

    • departure_time – используйте, когда пользователь говорит, когда он уедет (например, "завтра в 8 утра").
    • arrival_time – используйте, когда пользователь говорит, к какому времени ему нужно прибыть (например, "быть там к 9:00").
  5. routing_preference (enum – НЕОБЯЗАТЕЛЬНО):

    • ROUTING_PREFERENCE_TRAFFIC_UNAWARE (по умолчанию): не учитывает текущую загруженность дорог, инциденты и перекрытия. Самая низкая задержка.
    • ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL – используются данные о загруженности дорог в реальном времени (если доступны). Не поддерживается для WALK и BICYCLE. Устанавливайте этот параметр, ТОЛЬКО когда пользователь спрашивает о дорожном движении, пробках или расчетном времени прибытия с учетом пробок. Это приводит к более высоким затратам и задержкам.
  6. location_bias (объект, НЕОБЯЗАТЕЛЬНО). {"latitude": number, "longitude": number}, используемый для устранения неоднозначности названий мест в адресах путевых точек. Если название неоднозначно (например, "Спрингфилд"), а пользователь не указал регион, оставьте название в address как есть и установите location_bias в направлении нужной области, а не угадывайте регион.

  7. compute_alternative_routes (логическое значение, НЕОБЯЗАТЕЛЬНО). Установите значение true, только если пользователь запрашивает варианты маршрута. По умолчанию используется значение false, при котором возвращается только рекомендуемый маршрут.

  8. 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 (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

Необязательное поле. Нужно ли рассчитывать альтернативные маршруты в дополнение к рекомендуемому. По умолчанию используется значение false, при котором возвращается только рекомендуемый маршрут. Если задано значение true, возвращаются все доступные маршруты, хотя альтернативные варианты могут быть доступны не для каждого запроса.

Объединенное поле timing. Указывает, когда нужно отправиться из начальной точки или прибыть в конечную путевую точку. Если не указано, по умолчанию используется текущее время отправления. Для TRANSIT время должно быть не более 7 дней в прошлом и не более 100 дней в будущем. Для других способов передвижения время не должно быть в прошлом и должно быть не более 365 дней в будущем. Поле timing может иметь одно из следующих значений:
departureTime

string (Timestamp format)

Необязательное поле. Указывает, что маршрут должен рассчитываться на основе времени отправления.

Используется формат RFC 3339. Результат всегда будет Z-нормализованным, и в нем будут использоваться цифры дробных частей 0, 3, 6 или 9. Допустимы и другие типы нормализации. Примеры: "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. Допустимы и другие типы нормализации. Примеры: "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 (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.
}
Поля
Объединенное поле 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

Набор значений, используемых для указания способа передвижения.

Перечисления
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

При расчете маршрутов учитывается загруженность дорог в реальном времени (если доступны данные о трафике). Для TRANSIT используются данные о транспорте в реальном времени, например о задержках и отменах, если они доступны.

Это значение активирует уровень Pro, что приведет к увеличению суммы к оплате и задержки. Эта функция доступна только клиентам из белого списка. Если он не добавлен в белый список, запрос будет перенаправлен на ROUTING_PREFERENCE_TRAFFIC_UNAWARE.

Схема вывода

ComputeRoutesResponse.

ComputeRoutesResponse

JSON-представление
{
  "routes": [
    {
      object (Route)
    }
  ]
}
Поля
routes[]

object (Route)

Содержит маршруты между запрошенными пунктами отправления и назначения, упорядоченные от наиболее рекомендуемых к наименее рекомендуемым. Возвращается только один маршрут, если для параметра ComputeRoutesRequest.compute_alternative_routes не задано значение true.

Маршрут

JSON-представление
{
  "distanceMeters": integer,
  "duration": string,
  "attribution": {
    object (Attribution)
  },
  "encodedPolyline": string,
  "retrievalToken": string
}
Поля
distanceMeters

integer

Расстояние маршрута в метрах.

duration

string (Duration format)

Время, необходимое для прохождения маршрута.

Продолжительность в секундах, может содержать до девяти дробных цифр и заканчиваться на букву 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

Доли секунды со знаком и наносекундным разрешением. Продолжительность менее одной секунды представлена полем seconds со значением 0 и полем nanos с положительным или отрицательным значением. Если продолжительность составляет одну секунду или больше, ненулевое значение в поле nanos должно иметь тот же знак, что и в поле seconds. Допустимы значения от -999 999 999 до +999 999 999 включительно.

Атрибуция

JSON-представление
{
  "title": string,
  "url": string
}
Поля
title

string

Заголовок, который будет показываться в атрибуции.

url

string

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: ❌