الأداة: 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(مصفوفة من العناصر - اختياري): ما يصل إلى 25 محطة توقّف للمرور بها، بالترتيب، بين نقطة الانطلاق والوجهة. التنسيق نفسه المستخدَم فيorigin. هذه الميزة غير متاحة معTRANSIT. يجب تضمين المحطات التي طلبها المستخدم فقط، لأنّ تحديد أكثر من 10 نقاط على المسار سيؤدي إلى زيادة التكلفة وزمن الاستجابة.
travel_mode(تعداد - اختياري):DRIVE(تلقائي) أوWALKأوBICYCLEأوTRANSITالتوقيت (اختياري - اضبط قيمة واحدة على الأكثر): طوابع زمنية بتنسيق RFC 3339 مع فارق عن التوقيت العالمي المنسَّق، مثل
'2026-09-19T08:00:00-07:00'. يتم ضبط الإعدادات التلقائية على المغادرة الآن. بالنسبة إلىTRANSIT، يمكن أن يصل الوقت إلى 7 أيام في الماضي أو إلى 100 يوم في المستقبل. بالنسبة إلى الأوضاع الأخرى، يمكن أن يصل الوقت إلى 365 يومًا في المستقبل ويجب ألا يكون في الماضي.departure_time: يُستخدَم عندما يذكر المستخدم وقت مغادرته (مثلاً، "غدًا في الساعة 8 صباحًا").arrival_time: يُستخدَم هذا المعامل عندما يحدّد المستخدم وقت الوصول (مثلاً، "أريد الوصول بحلول الساعة 9 صباحًا").
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فارغة، أخبِر المستخدم بأنّه لم يتم العثور على أي مسار. لا تخمِّن المسار. - للعثور على أماكن على طول مسار
DRIVE، مرِّرretrieval_tokenالخاص بالمسار إلىsearch_along_route. ويكون الرمز المميّز صالحًا لمدة 10 دقائق. - اذكر فقط الحقائق التي تعرضها الأداة. لا تخترع اتجاهات مفصّلة أو خطوط نقل عام أو محطات أو أرصفة أو عمليات نقل.
- يجب أن تتم نسبة الناتج المستند إلى المصدر إلى المصدر باستخدام حقل
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[] |
اختياريّ. محطات التوقف الوسيطة بين نقطة الانطلاق والوجهة التي يجب المرور بها بالترتيب يمكن استخدام ما يصل إلى 25 نقطة على المسار. سيؤدي تحديد أكثر من 10 نقاط وسيطة على المسار إلى زيادة التكلفة وزيادة وقت الاستجابة. لا يمكن استخدام النقاط على المسار المتوسطة عندما تكون قيمة |
routingPreference |
اختياريّ. تحدّد هذه المَعلمة كيفية استخدام بيانات حركة المرور لحساب المسار. لا يمكن استخدام |
locationBias |
اختياريّ. موقع جغرافي لتوجيه نتائج البحث نحوه، على سبيل المثال لإزالة الغموض عن طلبات البحث النصية عن النقاط على المسار |
includePolyline |
اختياريّ. ما إذا كان سيتم تضمين الخطوط المتعدّدة المرمّزة في مسارات الاستجابة القيمة التلقائية هي |
computeAlternativeRoutes |
اختياريّ. ما إذا كان سيتم احتساب مسارات بديلة بالإضافة إلى المسار المقترَح تكون القيمة التلقائية false، وفي هذه الحالة يتم عرض المسار المقترَح فقط. عند ضبطها على "صحيح"، يتم عرض جميع المسارات المتاحة، مع العلم أنّ البدائل قد لا تكون متاحة لكل طلب. |
حقل الربط timing تحدّد وقت المغادرة من نقطة الانطلاق أو الوصول إلى النقطة النهائية على المسار. يتم ضبط القيمة تلقائيًا على وقت المغادرة الحالي في حال عدم تحديد أي قيمة. بالنسبة إلى "TRANSIT"، يجب أن يكون الوقت قبل 7 أيام على الأكثر في الماضي وبعد 100 يوم على الأكثر في المستقبل. بالنسبة إلى وسائل النقل الأخرى، يجب ألا يكون الوقت في الماضي ويجب ألا يتجاوز 365 يومًا في المستقبل. يمكن أن يكون التعليق timing إحدى القيم التالية فقط: |
|
departureTime |
اختياريّ. تشير إلى أنّه يجب احتساب المسار استنادًا إلى وقت المغادرة. يستخدم المعيار RFC 3339، حيث يكون الناتج الذي يتم إنشاؤه مُمثلاً بالتوقيت العالمي المنسَّق مع حرف Z في النهاية ويستخدم الأرقام الجزئية 0 أو 3 أو 6 أو 9. تُقبل أيضًا المعادلات الأخرى التي لا تستخدم حرف Z. أمثلة: |
arrivalTime |
اختياريّ. تشير إلى أنّه يجب احتساب المسار استنادًا إلى وقت الوصول. يستخدم المعيار RFC 3339، حيث يكون الناتج الذي يتم إنشاؤه مُمثلاً بالتوقيت العالمي المنسَّق مع حرف Z في النهاية ويستخدم الأرقام الجزئية 0 أو 3 أو 6 أو 9. تُقبل أيضًا المعادلات الأخرى التي لا تستخدم حرف Z. أمثلة: |
النقطة الوسيطة
| تمثيل 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]. |
الطابع الزمني
| تمثيل JSON |
|---|
{ "seconds": string, "nanos": integer } |
| الحقول | |
|---|---|
seconds |
تشير هذه السمة إلى عدد ثواني التوقيت العالمي المنسق (UTC) المنقضية منذ بداية حقبة يونكس 1970-01-01T00:00:00Z. يجب أن تتراوح القيمة بين -62135596800 و253402300799، بما في ذلك طرفي النطاق (ما يعادل 0001-01-01T00:00:00Z إلى 9999-12-31T23:59:59Z). |
nanos |
تشير هذه السمة إلى أجزاء الثانية غير السالبة بدقة النانو ثانية هذا الحقل هو جزء النانو ثانية من المدة، وليس بديلاً للثواني. يجب أن تظل قيم الثواني السالبة التي تحتوي على كسور تحتوي على قيم نانو ثانية غير سالبة يتم احتسابها للأمام في الوقت المناسب. يجب أن تتراوح القيمة بين 0 و999,999,999، بما في ذلك طرفي النطاق. |
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 يوم/سنة * 10000 سنة |
nanos |
تشير هذه السمة إلى أجزاء الثانية الموقَّعة بدقة النانو ثانية للفترة الزمنية. يتم تمثيل المدد التي تقل عن ثانية واحدة بحقل |
تحديد المصدر
| تمثيل JSON |
|---|
{ "title": string, "url": string } |
| الحقول | |
|---|---|
title |
العنوان الذي سيتم عرضه في المصدر |
url |
عنوان URL الذي سيتم ربطه بمصدر المحتوى |
التعليقات التوضيحية للأدوات
يتم إرسال تعليقات توضيحية للأدوات إلى عملاء MCP لوصف المخاطر الأساسية لأداة معيّنة. تتعامل معظم البرامج مع هذه التلميحات على أنّها غير موثوق بها، ولكن يمكن استخدامها لتحديد الحالات التي قد يتم فيها إرسال طلب تأكيد إلى المستخدم.
إلى جانب سلسلة العنوان، يتم تحديد التلميحات المنطقية التالية على النحو التالي:
-
readOnlyHint: إذا كانت القيمة "صحيح"، لا تعدّل الأداة بيئتها. القيمة التلقائية: false -
destructiveHint: إذا كانت القيمة "صحيح"، يمكن للأداة تنفيذ إجراءات مدمّرة. إذا كانت القيمة "خطأ"، يمكن للأداة تنفيذ إجراءات إضافية فقط. القيمة التلقائية: true -
idempotentHint: إذا كانت القيمة "صحيح"، لن يؤدي استدعاء الأداة بشكل متكرّر باستخدام الوسيطات نفسها إلى أي تأثير إضافي على بيئتها. القيمة التلقائية: false -
openWorldHint: إذا كانت القيمة "صحيح"، يمكن للأداة التفاعل مع "عالم مفتوح" من الكيانات الخارجية. إذا كانت القيمة "خطأ"، يمكن للأداة التفاعل مع الكيانات الداخلية فقط. على سبيل المثال، أداة بحث الويب هي أداة عالم مفتوح، بينما أداة الذاكرة ليست كذلك.
Destructive Hint: ❌ | Idempotent Hint: ❌ | Read Only Hint: ✅ | Open World Hint: ❌