MCP

أتمتة Safari الذي سجّلت الدخول إليه أصلًا (macOS فقط)

لمن يريد تشغيل Safari مسجّل الدخول أصلًا على macOS لقراءة الصفحات والنقر/التعبئة بالمرجع؛ يلزم Node.js 20+ وتشغيل ميزات المطوّر في Safari وApple Events.

Official source · safari-mcp

Install

npx safari-mcp

لمن يناسب

إن أردت أن يرى المساعد الصفحة بوضوح أولًا في Safari المفتوح والمسجّل أصلًا، ثم ينقر أو يملأ بالمرجع، فإن هذا المسار يناسب. يشغّل Safari المستقر المرفق مع macOS لا متصفحًا معزولًا نظيفًا يُشغَّل على حدة. راجع صلب: يجب أن يكون الجهاز macOS وأن يكون Node.js 20+ مثبتًا هنا أصلًا. Windows أو Linux بلا خطوات قابلة للاستخدام في الشرح القائم.

يضع المستودع نفسه على خط «استمر في استخدام جلسات Gmail وGitHub وAhrefs وSlack والخدمات المصرفية التي سجّلت الدخول إليها أصلًا»، ويذكر WebKit الأصلي والتشغيل في الخلفية. يعني ذلك أن المساعد يلتقي حالة دخول حقيقية لا جلسة عرض فارغة. من يستدعيه يُعامل كمن سُمح له برؤية ما ظهر أصلًا في تلك الألسنة.

لا يناسب من يريد فقط نقر صفحة في بيئة معزولة أو لا يريد أن يرى المساعد حسابات حقيقية. الأنظمة غير التابعة لآبل بلا مسار تثبيت ثانٍ. إن كان هدفك «جلسة جديدة، بلا دخول، تُرمى بعد الاستخدام»، فإن الشرح القائم لا يصف ذلك المسار.

أول محاولة في 3 دقائق

المسار الرئيسي الرسمي واحد فقط: على Mac يستوفي المتطلبات شغّل

npx safari-mcp

المستودع يقول إن التثبيت العام غير مطلوب أولًا. التثبيت الدائم الاختياري هو npm install -g safari-mcp؛ لا تسلكه في المحاولة الأولى.

قبل التشغيل راجع هذه الأربع: النظام أي macOS فيه Safari؛ Node.js هو 20 أو أحدث؛ Safari فيه Settings → Advanced → Show features for web developers مفعّل؛ ثم Develop → Allow JavaScript from Apple Events مفعّل. إن نقص بند فلا أساس للاستدعاءات اللاحقة.

موضع الإعداد هو أمر التشغيل هذا نفسه. سلّمه لمضيف MCP لرفع الخدمة. الشرح القائم لا يعطي أسماء حقول JSON لعميل محدد، لذا لا نضيف قالب إعداد ولا نخترع أعلام تشغيل إضافية.

في المرة الأولى راقب فقط: استدعِ safari_snapshot واقرأ accessibility tree للصفحة الحالية. علامة النجاح حالة صفحة معادة لا خطأ ولا شجرة فارغة. هذه القراءة ترى بنية الصفحة الحقيقية التي تنظر إليها، بما فيها عناصر التحكم الظاهرة في المواقع المسجّل دخولها. ليست بلا مخاطر ولا تُفهم على أنها «بلا قراءة محلية وبلا شبكة».

إن استخدم عدة مساعدين على الجهاز نفسه Safari معًا، فصيغة المشاركة في الشرح هي:

SAFARI_MCP_HTTP=1 SAFARI_MCP_HTTP_PORT=9225 npx safari-mcp

التجربة الأولى لشخص واحد لا تحتاج فتح هذا.

حالات الاستخدام

الحالة 1: انظر اللسان الحالي ثم قرّر الخطوة التالية. استدعِ safari_snapshot على صفحة Safari المفتوحة أصلًا لتحصل على accessibility tree وحالة الصفحة. الشرح يدرجها كخطوة أولى في السير الموصى وهدفها Get page state. تناسب تأكيد الصفحة التي توقفت عندها وعناصر التحكم القابلة للإشارة. بنية حقول الإرجاع الكاملة غير موسّعة؛ المؤكد فقط أنك تحصل على حالة الصفحة وaccessibility tree. لا تفهم هذه الخطوة كتنقل أو تغيير صفحة؛ الشرح القائم لا يعطي أوامر تنقل.

الحالة 2: تفاعل مرة بالمرجع وأعد القراءة. الخطوة الثانية هي safari_click/fill/... للنقر أو التعبئة حسب ref؛ الثالثة تعيد تشغيل safari_snapshot للتحقق. هذا يتطلب ref من الحالة 1؛ لا تنقر إحداثيات من الفراغ. النقر والتعبئة يغيّران الصفحة ولهما آثار جانبية؛ قبل الفعل حدّد نقطة تأكيد — هل تغيّر عنصر التحكم أو النص المطابق كما هو متوقع في الـ snapshot الثاني. اسم الأداة مكتوب safari_click/fill/...؛ أسماء التفاعل الأخرى غير مدرجة بندًا بندًا، فلا تضف أوامر غير ظاهرة.

حدود الاستخدام

macOS فقط. يلزم Node.js 20+ وتشغيل ميزات المطوّر في Safari وJavaScript من Apple Events. الخدمة تفتح Safari المستقر الذي سجّلت الدخول إليه أصلًا؛ البريد واستضافة الشيفرة وخوادم التحليل والدردشة والجلسات المصرفية قد تدخل مجال رؤية المساعد. لا تفترض عزل شبكة أو صندوق رمل محلي للقراءة فقط.

عند التزامن شارك خادمًا بـ SAFARI_MCP_HTTP=1؛ الشرح يقول أيضًا إنه عند فشل تتبع اللسان يُغلق بدل أن يضرب اللسان النشط الذي تستخدمه. رموز الفشل وخطوات التراجع ومعاملات الأدوات خارج safari_snapshot وsafari_click/fill غير موجودة في الشرح القائم. التشغيل في الخلفية وCPU أقل هما مقارنة المستودع نفسه لا ضمان لهذا الجهاز. إن كانت المحاولة الأولى snapshot فقط فما زالت تقرأ صفحة حقيقية؛ تجنّب أولًا الألسنة المصرفية أو أي لسان لا تنوي كشفه.