ابزار: 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(آرایه اشیا - اختیاری): حداکثر ۱۰ ایستگاه برای عبور، بهترتیب، بین مبدأ و مقصد. قالب مشابهorigin. باTRANSITپشتیبانی نمیشود. فقط ایستگاههایی را که کاربر درخواست کرده است اضافه کنید.travel_mode(enum - اختیاری):DRIVE(پیشفرض)،WALK،BICYCLE، یاTRANSIT.زمانبندی (اختیاری - حداکثر یک مورد تنظیم شود): مُهرهای زمان RFC 3339 با انحراف UTC، برای نمونه
'2026-09-19T08:00:00-07:00'. بهطور پیشفرض روی «درحال حرکت» تنظیم شده است. برایTRANSIT، زمان میتواند حداکثر ۷ روز در گذشته یا حداکثر ۱۰۰ روز در آینده باشد. برای حالتهای دیگر، زمان میتواند تا ۳۶۵ روز در آینده باشد و نباید در گذشته باشد.departure_time: زمانی استفاده میشود که کاربر میگوید چه زمانی میرود (مثلاً «فردا ساعت ۸ صبح»).arrival_time: زمانی استفاده میشود که کاربر میگوید چه زمانی باید برسد (مثلاً «تا ساعت ۹ صبح آنجا باشم»).
routing_preference(enum - اختیاری):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(بولی - اختیاری): فقط زمانی روی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[] |
اختیاری. ایستگاههای میانی بین مبدأ و مقصد که باید بهترتیب از آنها عبور کرد. حداکثر ۱۰ نقطهمسیر میانی پشتیبانی میشود. وقتی |
routingPreference |
اختیاری. تعیین میکند که چگونه از دادههای ترافیک برای محاسبه مسیر استفاده شود. وقتی |
locationBias |
اختیاری. مکانی برای سوگیری نتایج جستجو بهسمت آن، برای مثال برای ابهامزدایی پُرسمانهای نوشتاری نقطهمسیر. |
includePolyline |
اختیاری. اینکه چندخطی کدبندیشده در مسیرهای پاسخ گنجانده شود یا نه. پیشفرضها به |
computeAlternativeRoutes |
اختیاری. آیا مسیرهای جایگزین علاوهبر مسیر توصیهشده محاسبه شود یا نه. بهطور پیشفرض روی false تنظیم شده است که در این صورت فقط مسیر توصیهشده برگردانده میشود. وقتی روی «درست» تنظیم شود، حداکثر همه مسیرهای دردسترس برگردانده میشود، هرچند ممکن است برای هر درخواست، جایگزینی دردسترس نباشد. |
فیلد اتحادیه timing. مشخص میکند چه زمانی از مبدأ حرکت کنید یا به نقطهمسیر نهایی برسید. اگر مشخص نشده باشد، بهطور پیشفرض زمان حرکت روی زمان فعلی تنظیم میشود. برای TRANSIT، زمان باید حداکثر ۷ روز در گذشته و حداکثر ۱۰۰ روز در آینده باشد. برای حالتهای دیگر سفر، زمان نباید در گذشته باشد و باید حداکثر ۳۶۵ روز در آینده باشد. timing فقط میتواند یکی از موارد زیر باشد: |
|
departureTime |
اختیاری. نشان میدهد که مسیر باید براساس زمان حرکت محاسبه شود. از RFC 3339 استفاده میکند، که در آن خروجی تولیدشده همیشه Z-نرمالشده است و از ۰، ۳، ۶، یا ۹ رقم اعشاری استفاده میکند. انحرافهای غیراز «Z» نیز پذیرفته میشود. مثالها: |
arrivalTime |
اختیاری. نشان میدهد که مسیر باید براساس زمان رسیدن محاسبه شود. از RFC 3339 استفاده میکند، که در آن خروجی تولیدشده همیشه Z-نرمالشده است و از ۰، ۳، ۶، یا ۹ رقم اعشاری استفاده میکند. انحرافهای غیراز «Z» نیز پذیرفته میشود. مثالها: |
مُهر زمان
| نمایش JSON |
|---|
{ "seconds": string, "nanos": integer } |
| فیلدها | |
|---|---|
seconds |
نشاندهنده ثانیههای ساعت هماهنگ جهانی از تاریخ یونیکس 1970-01-01T00:00:00Z است. باید بین -۶۲۱۳۵۵۹۶۸۰۰ و ۲۵۳۴۰۲۳۰۰۷۹۹ باشد (که معادل ۰۰۰۱-۰۱-۰۱T00:00:00Z تا ۹۹۹۹-۱۲-۳۱T23:59:59Z است). |
nanos |
کسرهای غیرمنفی ثانیه با وضوح نانوثانیه. این فیلد بخش نانوثانیه مدت زمان است، نه جایگزینی برای ثانیه. مقادیر منفی ثانیه با کسرها باید همچنان مقادیر نانو غیرمنفی داشته باشند که در زمان به جلو شمارش میشوند. باید بین ۰ و ۹۹۹٬۹۹۹٬۹۹۹ باشد. |
نقطه مسیر
| نمایش JSON |
|---|
{ // Union field |
| فیلدها | |
|---|---|
فیلد اتحادیه location_type. روشهای مختلف برای نمایش مکان. location_type فقط میتواند یکی از موارد زیر باشد: |
|
latLng |
نقطهای که بااستفاده از مختصات جغرافیایی مشخص شده است. |
placeId |
«شناسه مکان» مرتبط با نقطهمسیر. |
address |
نشانی قابلخواندن برای انسان یا کد پلاس. برای جزئیات، به 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، استفاده شود. بهمدت ۱۰ دقیقه معتبر است. |
مدت
| نمایش JSON |
|---|
{ "seconds": string, "nanos": integer } |
| فیلدها | |
|---|---|
seconds |
ثانیههای علامتدار بازه زمانی. باید از -۳۱۵٬۵۷۶٬۰۰۰٬۰۰۰ تا +۳۱۵٬۵۷۶٬۰۰۰٬۰۰۰ (شامل این دو عدد) باشد. توجه: این حدود از این فرمول محاسبه شده است: ۶۰ ثانیه/دقیقه * ۶۰ دقیقه/ساعت * ۲۴ ساعت/روز * ۳۶۵٫۲۵ روز/سال * ۱۰۰۰۰ سال |
nanos |
کسرهای علامتدار ثانیه در وضوح نانوثانیه از بازه زمانی. مدتهای کمتر از یک ثانیه با فیلد 0 |
اِسناد
| نمایش JSON |
|---|
{ "title": string, "url": string } |
| فیلدها | |
|---|---|
title |
عنوان نمایش دادهشده برای ارجاع. |
url |
نشانی وب برای پیوند دادن به اِسناد. |
حاشیهنویسیهای ابزار
حاشیهنویسیهای ابزار به کارخواهان MCP ارسال میشود تا خطر اصلی ابزار موردنظر را شرح دهد. اکثر کارخواهها این راهنماییها را غیرقابلاعتماد تلقی میکنند، اما میتوان از آنها برای تصمیمگیری درباره زمان ارسال پیامواره تأیید به کاربر استفاده کرد.
همراه با رشته عنوان، نکات بولی زیر بهصورت زیر تعریف میشوند:
-
readOnlyHint: اگر درست باشد، ابزار محیط خود را تغییر نمیدهد. پیشفرض: false. -
destructiveHint: اگر درست باشد، ابزار میتواند کنشهای مخرب انجام دهد. اگر نادرست باشد، ابزار فقط میتواند کنشهای افزایشی انجام دهد. پیشفرض: true. idempotentHint: اگر درست باشد، فراخوانی مکرر ابزار با آرگومانهای یکسان تأثیر بیشتری بر محیط آن نخواهد داشت. پیشفرض: false.openWorldHint: اگر درست باشد، ابزار میتواند با «دنیای باز» نهادهای خارجی تعامل داشته باشد. اگر نادرست باشد، ابزار فقط میتواند با نهادهای داخلی تعامل داشته باشد. برای مثال، ابزار جستجوی وب دنیای باز است، درحالیکه ابزار حافظه دنیای باز نیست.
Destructive Hint: ❌ | Idempotent Hint: ❌ | Read Only Hint: ✅ | Open World Hint: ❌