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 (آرایه اشیا - اختیاری): حداکثر ۱۰ ایستگاه برای عبور، به‌ترتیب، بین مبدأ و مقصد. قالب مشابه origin. با TRANSIT پشتیبانی نمی‌شود. فقط ایستگاه‌هایی را که کاربر درخواست کرده است اضافه کنید.

  3. travel_mode (enum - اختیاری): DRIVE (پیش‌فرض)، WALK، BICYCLE، یا TRANSIT.

  4. زمان‌بندی (اختیاری - حداکثر یک مورد تنظیم شود): مُهرهای زمان RFC 3339 با انحراف UTC، برای نمونه '2026-09-19T08:00:00-07:00'. به‌طور پیش‌فرض روی «درحال حرکت» تنظیم شده است. برای TRANSIT، زمان می‌تواند حداکثر ۷ روز در گذشته یا حداکثر ۱۰۰ روز در آینده باشد. برای حالت‌های دیگر، زمان می‌تواند تا ۳۶۵ روز در آینده باشد و نباید در گذشته باشد.

    • departure_time: زمانی استفاده می‌شود که کاربر می‌گوید چه زمانی می‌رود (مثلاً «فردا ساعت ۸ صبح»).
    • arrival_time: زمانی استفاده می‌شود که کاربر می‌گوید چه زمانی باید برسد (مثلاً «تا ساعت ۹ صبح آنجا باشم»).
  5. routing_preference (enum - اختیاری):

    • ROUTING_PREFERENCE_TRAFFIC_UNAWARE (پیش‌فرض): ترافیک زنده، حوادث، و راه‌بندان‌ها را نادیده می‌گیرد. کمترین تأخیر.
    • ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL: از شرایط ترافیک زنده درصورت دردسترس بودن استفاده می‌کند. برای WALK یا BICYCLE پشتیبانی نمی‌شود. این را «فقط» زمانی تنظیم کنید که کاربر درباره ترافیک، ازدحام، یا زمان تخمینی ورود اصلاح‌شده براساس ترافیک سؤال می‌کند. این کار هزینه و تأخیر بیشتری دارد.
  6. location_bias (شیء - اختیاری): {"latitude": number, "longitude": number} برای ابهام‌زدایی از نام مکان‌ها در نشانی‌های نقطه‌مسیر استفاده می‌شود. اگر نامی مبهم است (مثلاً «Springfield») و کاربر منطقه‌ای را ارائه نکرده است، نام را همان‌طور که در 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)

اختیاری. ایستگاه‌های میانی بین مبدأ و مقصد که باید به‌ترتیب از آن‌ها عبور کرد. حداکثر ۱۰ نقطه‌مسیر میانی پشتیبانی می‌شود. وقتی travel_mode روی TRANSIT باشد، نقاط‌مسیر میانی پشتیبانی نمی‌شود.

routingPreference

enum (RoutingPreference)

اختیاری. تعیین می‌کند که چگونه از داده‌های ترافیک برای محاسبه مسیر استفاده شود. وقتی travel_mode WALK یا BICYCLE باشد، از ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL پشتیبانی نمی‌شود. برای TRANSIT، داده‌های هم‌زمان حمل‌ونقل عمومی، مثل تأخیرها و لغوها، را فعال می‌کند.

locationBias

object (LatLng)

اختیاری. مکانی برای سوگیری نتایج جستجو به‌سمت آن، برای مثال برای ابهام‌زدایی پُرسمان‌های نوشتاری نقطه‌مسیر.

includePolyline

boolean

اختیاری. اینکه چندخطی کدبندی‌شده در مسیرهای پاسخ گنجانده شود یا نه. پیش‌فرض‌ها به false. وقتی روی true تنظیم شود، Route.encoded_polyline برگردانده می‌شود.

computeAlternativeRoutes

boolean

اختیاری. آیا مسیرهای جایگزین علاوه‌بر مسیر توصیه‌شده محاسبه شود یا نه. به‌طور پیش‌فرض روی false تنظیم شده است که در این صورت فقط مسیر توصیه‌شده برگردانده می‌شود. وقتی روی «درست» تنظیم شود، حداکثر همه مسیرهای دردسترس برگردانده می‌شود، هرچند ممکن است برای هر درخواست، جایگزینی دردسترس نباشد.

فیلد اتحادیه timing. مشخص می‌کند چه زمانی از مبدأ حرکت کنید یا به نقطه‌مسیر نهایی برسید. اگر مشخص نشده باشد، به‌طور پیش‌فرض زمان حرکت روی زمان فعلی تنظیم می‌شود. برای TRANSIT، زمان باید حداکثر ۷ روز در گذشته و حداکثر ۱۰۰ روز در آینده باشد. برای حالت‌های دیگر سفر، زمان نباید در گذشته باشد و باید حداکثر ۳۶۵ روز در آینده باشد. timing فقط می‌تواند یکی از موارد زیر باشد:
departureTime

string (Timestamp format)

اختیاری. نشان می‌دهد که مسیر باید براساس زمان حرکت محاسبه شود.

از RFC 3339 استفاده می‌کند، که در آن خروجی تولیدشده همیشه Z-نرمال‌شده است و از ۰، ۳، ۶، یا ۹ رقم اعشاری استفاده می‌کند. انحراف‌های غیراز «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-نرمال‌شده است و از ۰، ۳، ۶، یا ۹ رقم اعشاری استفاده می‌کند. انحراف‌های غیراز «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)

نشان‌دهنده ثانیه‌های ساعت هماهنگ جهانی از تاریخ یونیکس ‎1970-01-01T00:00:00Z است. باید بین ‎-۶۲۱۳۵۵۹۶۸۰۰ و ۲۵۳۴۰۲۳۰۰۷۹۹ باشد (که معادل ۰۰۰۱-۰۱-۰۱T00:00:00Z تا ۹۹۹۹-۱۲-۳۱T23:59:59Z است).

nanos

integer

کسرهای غیرمنفی ثانیه با وضوح نانوثانیه. این فیلد بخش نانوثانیه مدت زمان است، نه جایگزینی برای ثانیه. مقادیر منفی ثانیه با کسرها باید همچنان مقادیر نانو غیرمنفی داشته باشند که در زمان به جلو شمارش می‌شوند. باید بین ۰ و ۹۹۹٬۹۹۹٬۹۹۹ باشد.

نقطه مسیر

نمایش 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

نشانی قابل‌خواندن برای انسان یا کد پلاس. برای جزئیات، به 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 روی «درست» تنظیم شده باشد.

مسیر

نمایش 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، استفاده شود. به‌مدت ۱۰ دقیقه معتبر است.

مدت

نمایش JSON
{
  "seconds": string,
  "nanos": integer
}
فیلدها
seconds

string (int64 format)

ثانیه‌های علامت‌دار بازه زمانی. باید از ‎-۳۱۵٬۵۷۶٬۰۰۰٬۰۰۰ تا ‎+۳۱۵٬۵۷۶٬۰۰۰٬۰۰۰ (شامل این دو عدد) باشد. توجه: این حدود از این فرمول محاسبه شده است: ۶۰ ثانیه/دقیقه * ۶۰ دقیقه/ساعت * ۲۴ ساعت/روز * ۳۶۵٫۲۵ روز/سال * ۱۰۰۰۰ سال

nanos

integer

کسرهای علامت‌دار ثانیه در وضوح نانوثانیه از بازه زمانی. مدت‌های کمتر از یک ثانیه با فیلد 0 seconds و فیلد مثبت یا منفی nanos نشان داده می‌شوند. برای مدت‌های یک ثانیه یا بیشتر، مقدار غیرصفر برای فیلد nanos باید همان علامت فیلد seconds را داشته باشد. باید از ‎-۹۹۹٬۹۹۹٬۹۹۹ تا ‎+۹۹۹٬۹۹۹٬۹۹۹ (شامل این دو عدد) باشد.

اِسناد

نمایش JSON
{
  "title": string,
  "url": string
}
فیلدها
title

string

عنوان نمایش داده‌شده برای ارجاع.

url

string

نشانی وب برای پیوند دادن به اِسناد.

حاشیه‌نویسی‌های ابزار

حاشیه‌نویسی‌های ابزار به کارخواهان MCP ارسال می‌شود تا خطر اصلی ابزار موردنظر را شرح دهد. اکثر کارخواه‌ها این راهنمایی‌ها را غیرقابل‌اعتماد تلقی می‌کنند، اما می‌توان از آن‌ها برای تصمیم‌گیری درباره زمان ارسال پیام‌واره تأیید به کاربر استفاده کرد.

همراه با رشته عنوان، نکات بولی زیر به‌صورت زیر تعریف می‌شوند:

  • ‫readOnlyHint: اگر درست باشد، ابزار محیط خود را تغییر نمی‌دهد. پیش‌فرض: false.
  • ‫destructiveHint: اگر درست باشد، ابزار می‌تواند کنش‌های مخرب انجام دهد. اگر نادرست باشد، ابزار فقط می‌تواند کنش‌های افزایشی انجام دهد. پیش‌فرض: true.
  • idempotentHint: اگر درست باشد، فراخوانی مکرر ابزار با آرگومان‌های یکسان تأثیر بیشتری بر محیط آن نخواهد داشت. پیش‌فرض: false.
  • openWorldHint: اگر درست باشد، ابزار می‌تواند با «دنیای باز» نهادهای خارجی تعامل داشته باشد. اگر نادرست باشد، ابزار فقط می‌تواند با نهادهای داخلی تعامل داشته باشد. برای مثال، ابزار جستجوی وب دنیای باز است، درحالی‌که ابزار حافظه دنیای باز نیست.

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