MCP Reference: mapstools.googleapis.com

این سرور MCP است که توسط ابزارهای عامل Maps Experience ارائه شده است. این سرور ابزارهایی را برای توسعه‌دهندگان فراهم می‌کند تا برنامه‌های LLM را روی «پلاتفرم Google Maps» بسازند.

سرور «پروتکل بافتار مدل» (MCP) به‌عنوان یک پراکسی بین یک سرویس خارجی که بافتار، داده، یا قابلیت‌ها را به یک «مدل زبانی بزرگ» (LLM) یا برنامه هوش مصنوعی ارائه می‌دهد، عمل می‌کند. سرورهای MCP برنامه‌های هوش مصنوعی را به سیستم‌های خارجی مانند پایگاه‌های داده و سرویس‌های وب متصل می‌کنند و پاسخ‌های آن‌ها را به قالبی ترجمه می‌کنند که برنامه هوش مصنوعی بتواند درک کند.

راه‌اندازی سرور

باید قبل‌از استفاده، سرورهای MCP را فعال کنید و اصالت‌سنجی را راه‌اندازی کنید. برای اطلاعات بیشتر درباره استفاده از سرورهای MCP راه دور Google و Google Cloud، به نمای کلی سرورهای Google Cloud MCP مراجعه کنید.

نقطه‌های پایانی سرور

نقطه پایان سرویس MCP نشانی شبکه و میانای ارتباطی (معمولاً یک نشانی وب) سرور MCP است که برنامه هوش مصنوعی (میزبان کارخواه MCP) از آن برای برقراری اتصال ایمن و استاندارد استفاده می‌کند. این نقطه تماس برای LLM است تا زمینه را درخواست کند، ابزاری را فراخوانی کند، یا به منبعی دسترسی پیدا کند.

سرور MCP ابزارهای عامل Maps Experience دارای نقطه پایانی MCP جهانی زیر است:

  • https://mapstools.googleapis.com/mcp

ابزارهای «پروتکل زمینه‌ای مدل» (MCP)

ابزار MCP یک تابع یا قابلیت اجرایی است که سرور MCP برای انجام کنشی در دنیای واقعی دراختیار LLM یا برنامه هوش مصنوعی قرار می‌دهد.

ابزارها

سرور MCP‏ mapstools.googleapis.com ابزارهای زیر را دارد:

ابزارهای «پروتکل زمینه‌ای مدل» (MCP)
search_places

وقتی درخواست کاربر پیدا کردن مکان‌ها، کسب‌وکارها، نشانی‌ها، موقعیت‌ها، نقاط دیدنی، یا هر جستجوی دیگری مربوط به Google Maps است، این ابزار را فراخوانی کنید.

الزامات ورودی (بسیار مهم):

  1. text_query (رشته - اجباری): پُرسمان جستجوی اصلی. این باید به‌وضوح آنچه را که کاربر به‌دنبال آن است تعریف کند.

    • نمونه‌ها: 'restaurants in New York'، 'coffee shops near Golden Gate Park'، 'SF MoMA'، '1600 Amphitheatre Pkwy, Mountain View, CA, USA'، 'pets friendly parks in Manhattan, New York'، 'date night restaurants in Chicago'، 'accessible public libraries in Los Angeles'.
    • برای جزئیات مکان خاص: مشخصه درخواستی را اضافه کنید (برای مثال، 'Google Store Mountain View opening hours'، 'SF MoMa phone number'، 'Shoreline Park Mountain View address').
  2. location_bias (شیء - اختیاری): از این پارامتر برای اولویت‌بندی نتایج نزدیک به یک منطقه جغرافیایی خاص استفاده کنید.

    • قالب: {"location_bias": {"circle": {"center": {"latitude": [value], "longitude": [value]}, "radius_meters": [value (optional)]}}}
    • کاربرد:
      • برای سوگیری به شعاع ۵ کیلومتری: {"location_bias": {"circle": {"center": {"latitude": 34.052235, "longitude": -118.243683}, "radius_meters": 5000}}}
      • برای سوگیری قوی به نقطه مرکزی: {"location_bias": {"circle": {"center": {"latitude": 34.052235, "longitude": -118.243683}}}} (حذف radius_meters).
  3. ‫language_code (رشته - اختیاری): زبانی که خلاصه نتایج جستجو به آن نشان داده می‌شود.

    • قالب: کد زبان دوحرفی (ISO 639-1)، به‌صورت اختیاری با زیرخط و کد کشور دوحرفی (ISO 3166-1 alpha-2)، مثلاً en، ja، en_US، zh_CN، es_MX. اگر کد زبان ارائه نشود، نتایج به زبان انگلیسی خواهد بود.
  4. region_code (رشته - اختیاری): کد منطقه CLDR یونی‌کد کاربر. این پارامتر برای نمایش جزئیات مکان، مانند نام مکان خاص منطقه، درصورت دردسترس بودن، استفاده می‌شود. این پارامتر می‌تواند براساس قانون ذی‌ربط بر نتایج تأثیر بگذارد.

    • قالب: کد کشور دوحرفی (ISO 3166-1 alpha-2)، مثلاً US، CA.
  5. page_size (عدد صحیح - اختیاری): حداکثر تعداد مکان‌هایی که باید برگردانده شود، از 1 تا 10. پیش‌فرض‌ها به 5. فقط زمانی روی بالاتر از 5 تنظیم شود که کاربر بخواهد بیش‌از ۵ مکان را مقایسه کند؛ مقادیر از 6 تا 10 هزینه بیشتر و تأخیر بالاتری دارند.

  6. include_extended_details (بولی - اختیاری): وقتی درخواست کاربر به اطلاعات آماری کیفی غنی، پویایی هم‌زمان، یا مشخصه‌های نهاد تخصصی نیاز دارد، این فیلد را روی true تنظیم کنید. پیش‌فرض‌ها به false. تنظیم این مقدار روی true باعث افزایش هزینه و تأخیر می‌شود.

دستورالعمل‌های فراخوانی ابزار:

  • اطلاعات مکان (بسیار مهم): جستجو باید حاوی اطلاعات مکان کافی باشد. اگر مکان مبهم است (مثلاً فقط «پیتزافروشی‌ها»)، باید آن را در text_query مشخص کنید (مثلاً «پیتزافروشی‌ها در نیویورک») یا از پارامتر location_bias استفاده کنید. درصورت نیاز به ابهام‌زدایی، نام شهر، ایالت/ استان، و منطقه/ کشور را اضافه کنید.

  • همیشه دقیق‌ترین و غنی‌ترین text_query ممکن را ازنظر بافت ارائه دهید.

  • فقط زمانی از location_bias استفاده کنید که مختصات به‌طور صریح ارائه شده باشد یا استنباط مکان از بافت شناخته‌شده کاربر مناسب و برای نتایج بهتر ضروری باشد.

  • خروجی مستند باید بااستفاده از اطلاعات فیلد attribution (درصورت وجود) به منبع نسبت داده شود.

lookup_weather اطلاعات جامع زیست‌محیطی را برای یک مکان بازیابی می‌کند، ازجمله آب‌وهوا، کیفیت هوا (AQI و آلاینده‌ها)، و گرده (سطوح آلرژن گونه‌های درخت، چمن، علف هرز، و گیاه): شرایط فعلی، پیش‌بینی‌ها/سابقه ساعتی، و پیش‌بینی‌های روزانه برای آب‌وهوا و کیفیت هوا؛ گرده فقط پیش‌بینی روزانه است (امروز تا ۴ روز آینده، بدون داده‌های ساعتی یا گذشته). دامنه‌ها و قابلیت‌های محیطی دردسترس (capabilities: WEATHER، AIR_QUALITY، POLLEN — مهم): * انتخاب صریح اجباری: باید حداقل یکی از WEATHER، AIR_QUALITY، یا POLLEN را در capabilities در هر تماس بگنجانید. حذف capabilities مجاز نیست. * پرس‌وجوهای کلی / مبهم درباره فضای باز (مجموعه کامل محیطی فضای باز): اگر کاربر سؤالی کلی درباره فضای باز، سفر، یا موقعیت خاصی بپرسد بدون اینکه آن را به دامنه خاصی محدود کند (مثلاً «درحال‌حاضر شرایط فضای باز برای دویدن چطور است؟»)، هر سه قابلیت را به‌طور صریح اضافه کنید (capabilities: ["WEATHER", "AIR_QUALITY", "POLLEN"]) تا مجموعه کامل محیطی فضای باز (آب‌وهوا + کیفیت هوا + گرده) برگردانده شود؛ برای date/hour گذشته، POLLEN را که سابقه ندارد حذف کنید. * انتخاب دامنه هدفمند (پرس‌وجوهای خاص): اگر کاربر به‌طور خاص فقط یک یا دو دامنه را درخواست کند (مثلاً «درحال‌حاضر AQI در سیاتل چقدر است؟»)، فقط قابلیت‌های درخواست‌شده (WEATHER، AIR_QUALITY، و/یا POLLEN) را اضافه کنید. فقط دامنه(های) درخواست‌شده اجرا و برگردانده خواهد شد. داده‌های خاص دردسترس براساس دامنه: * آب‌وهوا (weather): دما (فعلی، دمای حسی، حداکثر/حداقل، شاخص گرما)، باد (سرعت، تندباد، جهت)، رویدادهای آسمانی (طلوع/غروب خورشید، فاز ماه)، بارش (نوع، احتمال، مقدار/QPF)، و شرایط جوی (شاخص فرابنفش، رطوبت، پوشش ابر، احتمال رعدوبرق، فشار هوا). * کیفیت هوا (air_quality): «شاخص‌های کیفیت هوای» جهانی و محلی (مقدار AQI، دسته، آلاینده غالب)، توصیه‌های بهداشتی در ۷ گروه حساسیت، و غلظت آلاینده‌ها (include_pollutant_concentration: true). هر شاخص آلاینده غالب خود را دارد؛ آن را برای هر شاخص گزارش کنید (برای مثال، آلاینده «شاخص کیفیت هوای» جهانی را برای «شاخص کیفیت هوای» ایالات متحده ارائه نکنید). * گرده (pollen): «شاخص جهانی گرده» (UPI،‏ ۰ تا ۵) روزانه برای هر دسته درخت، چمن، و علف هرز و برای هر گونه گیاهی (index.value با index.category آن، مثلاً ۱ = «بسیار کم»)، وضعیت فصلی، واکنش‌های متقاطع، و توصیه‌های بهداشتی. * فیلدهای گرده ازدست‌رفته: in_season ازدست‌رفته یعنی فصل آن نیست. گونه‌های گیاهی را که بدون index برگردانده شده‌اند حذف کن، مگراینکه کاربر درباره آن گیاه بپرسد؛ در این صورت بگو هیچ داده‌ای درباره گرده آن برای امروز گزارش نشده است (سطحی را استنباط نکن). قوانین مکان (بسیار مهم): مکان هدف باید در location بااستفاده از فقط یکی از زیرفیلدهای oneof زیر مشخص شود: ۱. مختصات جغرافیایی (lat_lng): * زمانی استفاده کنید که مختصات دقیق عرض جغرافیایی/ طول جغرافیایی مشخص باشد. * مثال: {"location": {"lat_lng": {"latitude": 34.0522, "longitude": -118.2437}}} ۲. شناسه مکان (place_id): * شناسه مکان Google Maps بدون ابهام (مثلاً، از search_places یا resolve_names دریافت شده باشد). * مثال: {"location": {"place_id": "ChIJLU7jZClu5kcR4PcOOO6p3I0"}} ۳. رشته نشانی (address): * شهر/منطقه، محله، نقطه عطف یا مکان جالب، نشانی خیابان، یا کد پستی، ترجیحاً همراه با شهر/کشور. * مثال: {"location": {"address": "Paris, France"}} حالت‌های زمان و استفاده (date و hour — بحرانی): * مرجع منطقه زمانی محلی: همه ورودی‌های date ({year, month, day}) و hour (0-23) باید در منطقه زمانی رسمی محلی location درخواست‌شده بیان شوند (برای مثال، پُرسمان برای "Paris tomorrow at 13:00" از تاریخ و ساعت محلی Europe/Paris 13 استفاده می‌کند)، هرگز از ساعت هماهنگ جهانی یا منطقه زمانی تماس‌گیرنده استفاده نمی‌شود. * ۱. شرایط فعلی (date حذف شده و hour حذف شده): * location و capabilities هدف (WEATHER، AIR_QUALITY، POLLEN) را ارائه دهید. date یا hour را مشخص نکنید. * «شرایط کنونی» (CC) را به‌صورت هم‌زمان برای دامنه(های) درخواست‌شده برمی‌گرداند (آب‌وهوای کنونی، کیفیت هوای ساعت کنونی، و/یا پیش‌بینی گرده امروز). * برای کیفیت هوا، «شرایط فعلی» مربوط به یک ساعت است: از آن به‌تنهایی برای پاسخ دادن به سؤالات مربوط به کیفیت هوا یا سؤالات کلی درباره فضای باز برای کل امروز استفاده نکنید (از «پرسمان‌های روزانه» در زیر استفاده کنید). * ‫۲. پیش‌بینی ساعت‌به‌ساعت / سابقه (date مشخص‌شده و hour مشخص‌شده 0-23): * location،‏ date ({year, month, day})،‏ hour (0-23)، و capabilities هدف را ارائه دهید. اگر دقیقه ذکر شده است، آن را به نزدیک‌ترین ساعت گرد کنید. * محدودیت بحرانی (وقتی hour تنظیم شده باشد، date الزامی است): ارائه hour بدون date (date حذف شده، hour تنظیم شده) مجاز نیست و با خطا مواجه خواهد شد. حتی وقتی کاربر درباره ساعت خاصی در امروز (مثلاً "at 13:00 today") می‌پرسد، باید هم date (تاریخ امروز در location) و هم hour را پر کنید. * هر ساعت یک‌بار برای «آب‌وهوا» و/یا «کیفیت هوا» درخواست‌شده در YYYY-MM-DD-HH و هر روز یک‌بار برای «گرده» درخواست‌شده در YYYY-MM-DD جستجو می‌کند. * سؤالات «چه زمانی» درباره آب‌وهوا: برای سؤالات مربوط به آب‌وهوا که چه زمانی / چه ساعتی / بهترین زمان را می‌پرسند (برای مثال، "what time will it stop raining?")، از فراخوانی‌های ساعتی WEATHER (date + hour) برای ساعت‌های مربوطه استفاده کنید. پیش‌بینی روزانه «آب‌وهوا» مقادیر ساعتی ندارد. برای سؤالات کلی درباره فضای باز «چه زمانی / بهترین زمان» (مثلاً "when is the best time to go walking today?")، این فراخوانی‌های ساعتی WEATHER را علاوه‌بر فراخوانی تمام‌روز برای «کیفیت هوا» (و گرده) که در «پرس‌وجوهای روزانه» شرح داده شده است انجام دهید. * ‫۳. پرس‌وجوهای روزانه (date مشخص شده و hour حذف شده): * location، date ({year, month, day} در زمان مدنی محلی location درخواست‌شده) را بدون hour، و capabilities هدف را برای پرس‌وجوهای کل روز (مثلاً "weather and pollen in London tomorrow") ارائه دهید. * کیفیت هوا و سؤالات کلی درباره فضای باز برای امروز: برای سؤالات مربوط به کیفیت هوا و سؤالات کلی درباره فضای باز (که شامل کیفیت هوا می‌شود) درباره امروز (مثلاً "how will the air quality change today"، "is today a good day for a picnic?")، date را روی تاریخ امروز در location (ساعت حذف شده) تنظیم کنید تا سری ساعتی کیفیت هوای روز را دریافت کنید. فراخوانی «شرایط کنونی» به‌تنهایی فقط کیفیت هوای ساعت کنونی را برمی‌گرداند و کافی نیست؛ اگر کاربر درباره «اکنون» هم سؤال کرد، می‌توانید یکی اضافه کنید. * پنجره‌های زمانی کیفیت هوا: برای پرسش‌های مربوط به کیفیت هوا درباره پنجره‌ای در یک روز (مثلاً "air quality between noon and 6 PM")، یک تماس روزانه را برای آن تاریخ ترجیح دهید و ساعت‌های پنجره را از سری «کیفیت هوا» بخوانید، به‌جای اینکه ساعت‌های تکی را نمونه‌برداری کنید. اگر از تماس‌های ساعتی استفاده می‌کنید، همه ساعت‌های پنجره را پوشش دهید. * پیش‌بینی‌های روزانه را برای آب‌وهوا و/یا گرده درخواستی و سری ساعتی کیفیت هوا روز که کل روز محلی را پوشش می‌دهد (۰۰:۰۰ تا ۲۳:۰۰ محلی) برمی‌گرداند: ۲۴ ساعت پیشین برای تاریخ گذشته، ۲۴ ساعت پیش‌بینی‌شده برای تاریخ آینده، و برای امروز ساعت‌های قبلی (سابقه)، ساعت فعلی، و ساعت‌های باقی‌مانده (پیش‌بینی). افق‌های زمانی پشتیبانی‌شده براساس دامنه: * آب‌وهوا: ساعتی از ۲۴ ساعت گذشته تا ۲۴۰ ساعت (۱۰ روز) آینده (ساعت‌های گذشته به هر دو date و hour نیاز دارند)؛ روزانه تا ۱۰ روز شامل امروز (امروز تا ۹ روز آینده)؛ بدون سابقه روزانه. * کیفیت هوا: ساعتی از ۷۲۰ ساعت (۳۰ روز) قبل تا ۹۶ ساعت (۴ روز) بعد؛ تماس تمام‌روز باید در آن پنجره قرار گیرد (در عمل امروز −۲۹ روز تا +۳ روز). * گرده: فقط روزانه، از امروز تا ۴ روز آینده (۵ روز با احتساب امروز)؛ تاریخ‌های گذشته وجود ندارد و hour نادیده گرفته می‌شود. * (توجه: اگر چندین قابلیت درخواست شود و date/hour خارج از یکی از محدوده‌های آن‌ها باشد، تماس همچنان موفقیت‌آمیز خواهد بود و فقط موارد پشتیبانی‌شده را برمی‌گرداند.) * درخواست‌های خارج از محدوده: اگر تاریخ یا ساعت درخواستی خارج از محدوده پشتیبانی‌شده دامنه در بالا باشد (برای مثال، گرده برای تاریخ گذشته)، همچنان lookup_weather را برای تاریخ/ ساعت درخواست‌شده فراخوانی کنید؛ خطا محدوده پشتیبانی‌شده را بیان می‌کند. تاریخ، ساعت، یا دامنه دیگری را به‌عنوان جایگزین فراخوانی نکنید. گزینه‌های دامنه و ارجاع: * زبان (language_code): کد زبان اختیاری BCP-47 (مثلاً "fr"). پیش‌فرض "en" است. * واحدهای آب‌وهوا (weather_options.units_system یا units_system): پیش‌فرض روی METRIC است. اگر کاربر به استانداردهای ایالات متحده اشاره می‌کند یا صریحاً واحدهای امپریال را درخواست می‌کند، روی IMPERIAL (فارنهایت/ مایل بر ساعت) تنظیم کنید. در هر دو weather_options.units_system (ترجیحی) و units_system سطح بالا پشتیبانی می‌شود؛ اگر هر دو مشخص شده باشند، نباید باهم تداخل داشته باشند. * Air Quality Options (air_quality_options): Set include_pollutant_concentration: true when specific pollutant concentrations (PM2.5, PM10, O3, NO2, SO2, CO) are needed; optionally set index_region_code (2-letter ISO country code, e.g., "US") to request a specific regional AQI scale. به‌طور پیش‌فرض، پاسخ شامل «شاخص کیفیت هوای جهانی» و شاخص کیفیت هوای منطقه‌ای مکان است. * ارجاع: برونداد مستندشده باید بااستفاده از فیلد attribution در داخل هر محفظه دامنه برگردانده‌شده (weather.attribution، air_quality.attribution، pollen.attribution) به منبع ارجاع داده شود. * زمان‌های برگردانده‌شده: مقادیر date_time کیفیت هوا ازقبل به وقت محلی مکان (utc_offset گنجانده‌شده) هستند؛ آن‌ها را همان‌طور که هستند ارائه دهید. زمان‌های date_time آب‌وهوا (فعلی و ساعتی) و طلوع/غروب آفتاب به وقت UTC هستند؛ آن‌ها را بااستفاده از time_zone به وقت محلی مکان تبدیل کنید. همه زمان‌ها را به‌عنوان محلی برچسب‌گذاری کنید.
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 خالی است، به کاربر بگو هیچ مسیری پیدا نشد. مسیر را حدس نزنید.
  • برای پیدا کردن مکان‌ها درطول مسیر DRIVE، retrieval_token مسیر را به search_along_route ارسال کنید. کد به‌مدت ۱۰ دقیقه معتبر است.
  • فقط حقایق برگردانده‌شده توسط ابزار را بیان کن. مسیرهای گام‌به‌گام، خطوط حمل‌ونقل عمومی، ایستگاه‌ها، سکوها، یا انتقالات را از خودتان نسازید.
  • برونداد مستندشده باید بااستفاده از فیلد attribution هر مسیر (درصورت دردسترس بودن) به منبع نسبت داده شود.
search_along_route

وقتی کاربر می‌خواهد مکان‌ها، کسب‌وکارها، یا نقاط جالب را درطول مسیر سفر پیدا کند (مثلاً «پمپ بنزین در مسیرم به تاهو»، «کافی‌شاپ‌های بین سان‌فرانسیسکو و سن خوزه»)، این ابزار را فراخوانی کنید. فراخوانی این ابزار هزینه بیشتری نسبت‌به search_places دارد، بنابراین هنگام جستجو در نزدیکی یک مکان به‌جای جستجو درطول مسیر، از search_places استفاده کنید.

الزامات ورودی (بسیار مهم):

  1. text_query (رشته - اجباری): شرحی به زبان طبیعی از آنچه باید درطول مسیر جستجو شود.

    • نمونه‌ها: 'ev chargers'، 'coffee'، 'vegetarian restaurants'، 'rest stops'.
  2. مشخصات مسیر (اجباری - دقیقاً یکی از موارد زیر را ارائه دهید):

    • retrieval_token (رشته): retrieval_token برگردانده‌شده توسط فراخوانی قبلی compute_routes برای مسیر DRIVE. هرگاه مسیر قبلاً محاسبه شده باشد، این گزینه را ترجیح دهید. کد به‌مدت ۱۰ دقیقه معتبر است.
    • route_endpoints (شیء): origin و destination مسیر. هرکدام باید بااستفاده از یکی‌از address، lat_lng، یا place_id ارائه شود.
      • مثال: {"route_endpoints": {"origin": {"address": "San Francisco, CA"}, "destination": {"address": "Lake Tahoe, CA"}}}
    • encoded_polyline (رشته): چندخطی کدبندی‌شده‌ای که نشان‌دهنده مسیر DRIVE است.
  3. travel_mode (enum - اختیاری): DRIVE (پیش‌فرض)، WALK، یا BICYCLE. ‫WALK و BICYCLE فقط با route_endpoints پشتیبانی می‌شوند. ‫TRANSIT پشتیبانی نمی‌شود.

  4. routing_preference (enum - اختیاری):

    • ROUTING_PREFERENCE_TRAFFIC_UNAWARE (پیش‌فرض): مسیر و مسیرهای فرعی را بدون ترافیک زنده محاسبه می‌کند. کمترین تأخیر.
    • ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL: درصورت دردسترس بودن، از شرایط ترافیک زنده استفاده می‌کند. برای WALK یا BICYCLE پشتیبانی نمی‌شود. این را «فقط» زمانی تنظیم کنید که کاربر درباره ترافیک، ازدحام، یا زمان‌های انحراف مسیر تنظیم‌شده براساس ترافیک سؤال می‌کند. تأخیر بیشتری ایجاد می‌کند.
  5. include_extended_details (مقدار منطقی - اختیاری): فقط زمانی روی true تنظیم کنید که درخواست به اطلاعات آماری بازبینی کیفی، گزینه‌ها یا پیشنهادهای منو خاص، اتمسفر، نکته‌های بازدیدکننده یا شلوغی، دردسترس بودن شارژر خودرو برقی، قیمت بنزین، یا دیگر جزئیات کیفی غنی نیاز داشته باشد. پیش‌فرض‌ها به false. فعال کردن آن ممکن است تأخیر را افزایش دهد.

  6. ‫language_code (رشته - اختیاری): زبان خلاصه نتایج و جزئیات مکان، برای مثال، en،‏ ja،‏ en-US. پیش‌فرض‌ها به en-US.

  7. ‫region_code (رشته - اختیاری): کد منطقه CLDR یونی‌کد کاربر، مثلاً US، CA.

دستورالعمل‌های فراخوانی ابزار:

  • هر نتیجه شامل یک detour_summary (درصورت دردسترس بودن) است که مسافت اضافی (localized_detour_distance) و زمان اضافی (detour_duration) ناشی از توقف در آن مکان را توصیف می‌کند، مگراینکه مسیر به‌عنوان encoded_polyline ارائه شده باشد. از آن برای مقایسه گزینه‌ها استفاده کنید.
  • پاسخ summary ممکن است حاوی ارجاع‌های صفرپایه (مثلاً «[0]») باشد که به ورودی‌های results ارجاع می‌دهند.
  • برونداد مستندشده باید بااستفاده از فیلد attribution هر results[].place (درصورت دردسترس بودن) به منبع نسبت داده شود.
resolve_names

فهرست دسته‌ای از پُرسمان‌های مکان خاص (نام نشانگرهای مکانی یا نشانی‌های دقیق) را به «شناسه‌های جا» در Google Maps متعارف تبدیل می‌کند.

الزامات ورودی (بسیار مهم):

  1. queries (آرایه اشیاء - اجباری): فهرستی از پرسمان‌های مکان برای حل کردن. می‌توانید حداکثر ۲۰ پُرسمان مشخص کنید.

    • هر شیء پُرسمان باید دارای موارد زیر باشد:
      • text (رشته - اجباری): پُرسمان نوشتاری که نشان‌دهنده نام یا نشانی مکان خاصی برای حل‌وفصل است.
        • نمونه‌ها: 'Googleplex, Mountain View, CA'، '1600 Amphitheatre Pkwy, Mountain View, CA'، 'Eiffel Tower, Paris'.
  2. location_bias (شیء - اختیاری): از این پارامتر برای اولویت‌بندی نتایج نزدیک به یک منطقه جغرافیایی خاص استفاده کنید.

    • قالب: {"viewport": {"low": {"latitude": [value], "longitude": [value]}, "high": {"latitude": [value], "longitude": [value]}}}
  3. ‫region_code (رشته - اختیاری): کد منطقه Unicode CLDR (کد کشور دوحرفی، برای مثال US، CA) کاربر برای سوگیری نتایج.

دستورالعمل‌های فراخوانی ابزار:

  • خاص بودن (بسیار مهم): پُرسمان‌ها باید نام یا نشانی مکان خاصی را نشان دهند. جستجوهای عمومی مانند 'restaurants' یا نام‌های زنجیره‌ای مانند 'Starbucks' پشتیبانی نمی‌شوند.
  • اگر ابزارهای پایین‌دستی که قصد دارید فراخوانی کنید ازقبل رشته‌های نام مکان یا نشانی خام را مستقیماً می‌پذیرند، این ابزار را فراخوانی نکنید.

ذخیره در Google Maps:

  • پاسخ شامل فیلد save_to_maps_url است: یک پیوند Google Maps که حاوی همه مکان‌های با موفقیت حل‌شده است.
  • وقتی کاربر می‌خواهد مکان‌های حل‌شده را به‌عنوان فهرستی در Google Maps ذخیره، هم‌رسانی، یا باز کند، این پیوند را به کاربر ارائه دهید. این پیوند را خودتان نسازید.

مدیریت خطا (بسیار مهم):

  • این ابزار پردازش دسته‌ای است. ممکن است درخواست «نتایج مختلط» برگرداند (مثلاً برخی‌از پُرسمان‌ها با موفقیت حل‌وفصل شوند درحالی‌که برخی دیگر ناموفق باشند).
  • تضمین می‌شود که فهرست خروجی results با نمایه‌های ورودی queries به‌صورت ۱:۱ نگاشت شود. پرسمان ناموفق منجر به پیام Result خالی (هیچ entity تنظیم نشده است) در نمایه مربوطه در فهرست results می‌شود.
  • باید فیلد نقشه failed_requests را در پاسخ بررسی کنید تا مشخص شود کدام نمایه پُرسمان خاص ناموفق بوده است. کلید failed_requests نشان‌دهنده نمایه مبتنی بر صفر پُرسمان ناموفق در درخواست است. فرض نکنید که کل تماس دسته‌ای به‌دلیل یک شکست جزئی ناموفق بوده است.
resolve_maps_urls

فهرستی از نشانی‌های وب Google Maps را به «شناسه‌های مکان» متعارف Google Maps تبدیل می‌کند.

چه زمانی این ابزار را فراخوانی کنید (بسیار مهم):

  • وقتی کاربر یک یا چند پیوند یا نشانی وب هم‌رسانی Google Maps (مثلاً «https://maps.app.goo.gl/...») ارائه می‌دهد، از این ابزار استفاده کنید. 'https://www.google.com/maps/place/...'، یا 'https://maps.google.com/...') و باید «شناسه‌های مکان» متعارف زیربنایی را استخراج کنید.
  • می‌توانید حداکثر ۲۰ نشانی وب را برای حل‌وفصل در یک درخواست دسته‌ای مشخص کنید.

الزامات ورودی (بسیار مهم):

  • urls (آرایه رشته‌ها - اجباری): فهرست نشانی‌های وب Google Maps برای حل کردن. هر نشانی وب باید نشانی وب معتبر و تک‌مکانی Google Maps باشد.

ذخیره در Google Maps:

  • پاسخ شامل فیلد save_to_maps_url است: یک پیوند Google Maps که حاوی همه مکان‌های با موفقیت حل‌شده است.
  • وقتی کاربر می‌خواهد مکان‌های حل‌شده را به‌عنوان فهرستی در Google Maps ذخیره، هم‌رسانی، یا باز کند (مثلاً جمع‌آوری مکان‌های هم‌رسانی‌شده در مکالمه)، این پیوند را به کاربر ارائه دهید. این پیوند را خودتان نسازید.

مدیریت خطا (بسیار مهم):

  • این ابزار پردازش دسته‌ای است. ممکن است درخواست «نتایج مختلط» برگرداند (مثلاً برخی‌از نشانی‌های وب باموفقیت حل‌وفصل شوند درحالی‌که برخی دیگر ناموفق باشند).
  • تضمین می‌شود که فهرست خروجی entities با نمایه‌های ورودی urls به‌صورت ۱:۱ نگاشت شود. وضوح نشانی وب ناموفق منجر به پیام Entity خالی (هیچ فیلدی تنظیم نشده است) در نمایه مربوطه در فهرست entities می‌شود.
  • باید فیلد نقشه failed_requests را در پاسخ بررسی کنید تا مشخص شود کدام نمایه نشانی وب خاص ناموفق بوده است. کلید failed_requests نشان‌دهنده نمایه مبتنی بر صفر نشانی وب ناموفق در درخواست است. فرض نکنید که کل تماس دسته‌ای به‌دلیل یک شکست جزئی ناموفق بوده است.

دریافت مشخصات ابزار MCP

برای دریافت مشخصات ابزار MCP برای همه ابزارهای موجود در سرور MCP، از روش tools/list استفاده کنید. مثال زیر نشان می‌دهد که چگونه می‌توان از curl برای فهرست کردن همه ابزارها و مشخصات آن‌ها که درحال‌حاضر در سرور MCP دردسترس هستند استفاده کرد.

درخواست Curl
curl --location 'https://mapstools.googleapis.com/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--data '{
    "method": "tools/list",
    "jsonrpc": "2.0",
    "id": 1
}'