/ الدليل / الملعب / iOS Simulator MCP
● مجتمع joshuayoes ⚡ فوري

iOS Simulator MCP

بواسطة joshuayoes · joshuayoes/ios-simulator-mcp

شغِّل xcrun simctl + idb من Claude — أقلِع المحاكي وثبِّت .app وانقر واكتب والتقط لقطة شاشة وسجِّل فيديو، كل ذلك دون التبديل إلى Xcode.

يُغلِّف iOS Simulator MCP أوامر xcrun simctl من Apple بالإضافة إلى idb من Facebook ليتمكن Claude من تشغيل محاكي iOS. مثالي لحلقات اختبار UI وإعادة إنتاج الأخطاء والتقاط لقطات الشاشة/الفيديو لتذاكر المشكلات — بالضبط ذلك النوع من العمل الذي يجعل التبديل بين Xcode والدردشة مُرهِقاً.

لماذا تستخدمه

الميزات الأساسية

عرض مباشر

كيف يبدو في الممارسة

ios-simulator-mcp.replay ▶ جاهز
0/0

التثبيت

اختر العميل

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

افتح Claude Desktop → Settings → Developer → Edit Config. أعد التشغيل بعد الحفظ.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

يستخدم Cursor نفس مخطط mcpServers مثل Claude Desktop. إعدادات المشروع أولى من الإعدادات العامة.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

انقر على أيقونة MCP Servers في شريط Cline الجانبي، ثم "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

نفس الصيغة مثل Claude Desktop. أعد تشغيل Windsurf لتطبيق التغييرات.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ios-simulator-mcp",
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  ]
}

يستخدم Continue مصفوفة من كائنات الخادم بدلاً من خريطة.

~/.config/zed/settings.json
{
  "context_servers": {
    "ios-simulator-mcp": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "ios-simulator-mcp"
        ]
      }
    }
  }
}

أضف إلى context_servers. يعيد Zed التحميل تلقائيًا عند الحفظ.

claude mcp add ios-simulator-mcp -- npx -y ios-simulator-mcp

أمر من سطر واحد. تحقق باستخدام claude mcp list. احذف باستخدام claude mcp remove.

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

استخدامات عملية: iOS Simulator MCP

توليد لقطات شاشة App Store عبر الأجهزة

👤 مطورو iOS الذين يجهِّزون إصداراً ⏱ ~25 min intermediate

متى تستخدمه: تحتاج لقطات شاشة 6.5" و6.7" وiPad في الوضع الفاتح والداكن، وسريعاً.

المتطلبات الأساسية
  • Xcode + simctl — تثبيت Xcode القياسي
  • idb مُثبَّتbrew tap facebook/fb && brew install idb-companion
  • حزمة .app مبنيةxcodebuild -scheme YourApp -destination 'platform=iOS Simulator' build
الخطوات
  1. إعداد الأجهزة
    Boot iPhone 15 Pro Max and iPad Pro 13-inch sims. List them when ready.✓ تم النسخ
    → list_simulators يُظهر كلاهما Booted
  2. ضبط شريط الحالة
    Set status bar to 9:41, full battery, full signal on both. App Store style.✓ تم النسخ
    → status_bar_set ينجح؛ مظهر نظيف
  3. تثبيت + لقطات الشاشة
    Install MyApp.app on both. Launch, navigate Home → Profile → Settings, screenshot each in light and dark mode. Save under /screenshots/<device>/<mode>/.✓ تم النسخ
    → مجلد لكل جهاز مع متغيرات فاتحة وداكنة لكل شاشة

النتيجة: حزمة لقطات شاشة كاملة لـ App Store في ~10 دقائق، بلا التقاط يدوي.

المزالق
  • المحاكي يُقلِع لكن التطبيق يتعطل عند الإطلاق — اسحب سجل simctl؛ تحقق من entitlements المفقودة
  • محتوى Dynamic Island يغطي تعديلات شريط الحالة — على Pro Max، status_bar_set لا يزال يُطبَّق تحت DI
اجمعها مع: filesystem

التقاط فيديو إعادة إنتاج نظيف لخطأ UI

👤 مطورو iOS / QA ⏱ ~10 min beginner

متى تستخدمه: خطأ يُعاد إنتاجه في المحاكي فقط؛ تريد فيديو للتذكرة.

الخطوات
  1. بدء التسجيل
    Boot iPhone 15. Install build.app. Start screen recording.✓ تم النسخ
    → يُعيد record_video_start معرِّف التسجيل
  2. إعادة الإنتاج
    Open the app. Tap Profile, then the Edit pencil. Type 'Test' in the name field. Tap Save. Wait 2 seconds.✓ تم النسخ
    → التسلسل مُنفَّذ؛ الخطأ مرئي إذا أُعيد إنتاجه
  3. إيقاف والإرفاق
    Stop recording, save as bug-1234.mov in /tickets/.✓ تم النسخ
    → MOV محفوظ

النتيجة: فيديو إعادة إنتاج جاهز للإرفاق بالتذكرة.

المزالق
  • النقر لم يصِب لأن التخطيط يختلف عن المتوقع — استخدم describe_ui أولاً لإيجاد الإطارات الحالية
اجمعها مع: filesystem · github

تشغيل حلقة اختبار دخان بعد كل إعادة بناء

👤 مطورو iOS في دورة بناء/اختبار مضيقة ⏱ ~15 min intermediate

متى تستخدمه: تتكرر على شاشة ما وتريد اختبار دخان لـ 30 ثانية بعد كل إعادة بناء.

الخطوات
  1. إعادة البناء + إعادة التثبيت
    Run xcodebuild for scheme MyApp Debug, then reinstall on the booted sim.✓ تم النسخ
    → التثبيت ينجح بحزمة جديدة
  2. تشغيل مسار الدخان
    Open app, sign in with test account, navigate to the screen I'm working on, screenshot.✓ تم النسخ
    → لقطة الشاشة تبدو صحيحة؛ لا تعطلات في السجل

النتيجة: دورة بناء/اختبار أسرع دون النقر اليدوي.

المزالق
  • تدفق تسجيل الدخول يحتوي captcha — استخدم بناء يتجاوز captcha أو اعمل stub لتدفق auth

التركيبات

اجمعها مع خوادم MCP أخرى لتحقيق نتائج x10

ios-simulator-mcp + filesystem

حفظ لقطات الشاشة في المستودع

Capture screenshots for all main screens, save to /design/screenshots/.✓ تم النسخ
ios-simulator-mcp + github

فتح issue خطأ مع فيديو إعادة إنتاج

Record the bug, then file a GitHub issue attaching the MOV and reproducer steps.✓ تم النسخ
ios-simulator-mcp + xcodebuildmcp

بناء وتشغيل اختبار دخان فوراً

XcodeBuild: build Debug. Sim: install + launch + screenshot.✓ تم النسخ

الأدوات

ما يوفره هذا الـ MCP

الأداةالمدخلاتمتى تستدعيهاالتكلفة
list_simulators (none) الخطوة الأولى free
boot_simulator device_id: str تشغيل محاكٍ free
install_app device_id, path: str (.app) دفع بناء free
launch_app device_id, bundle_id: str فتح التطبيق free
tap device_id, x, y النقر على إحداثيات free
type_text device_id, text: str إدخال نص free
screenshot device_id, path? التقاط الحالة free
record_video_start device_id, path: str بدء الفيديو free
record_video_stop recording_id إنهاء الفيديو free
describe_ui device_id إيجاد إحداثيات النقر free
status_bar_set device_id, time, battery, signal لقطات شاشة App Store نظيفة free

التكلفة والحدود

تكلفة التشغيل

حصة API
لا شيء — محلي
الرموز لكل استدعاء
100–800؛ لقطات الشاشة مُشار إليها بالمسار لا مُضمَّنة
التكلفة المالية
مجاني مفتوح المصدر
نصيحة
استخدم describe_ui لإيجاد إحداثيات النقر مرة واحدة بدلاً من التخمين مراراً

الأمان

الصلاحيات والأسرار ونطاق الأثر

الحد الأدنى من الصلاحيات: execute simctl + idb
تخزين بيانات الاعتماد: لا شيء — لكن بيانات التطبيق في المحاكي ملكك
نقل البيانات الخارجي: محلي فقط
لا تمنح أبدًا: root / kernel access

استكشاف الأخطاء

الأخطاء الشائعة وحلولها

idb not found

brew tap facebook/fb && brew install idb-companion; also pip install fb-idb

تحقق: idb list-targets
Tap doesn't land

استخدم describe_ui؛ الإحداثيات تختلف بين أحجام الأجهزة؛ قد يكون العنصر في sheet

Sim booted but stays black

أوقف المحاكي + أعِد تعيينه؛ أحياناً runtime Xcode يحتاج إعادة تنزيل

Recording corrupts

استخدم simctl io recordVideo مباشرة؛ غلاف idb يفشل أحياناً عند نوم macOS

البدائل

iOS Simulator MCP مقابل البدائل

البديلمتى تستخدمهاالمقايضة
XcodeBuildMCP (Sentry)تريد البناء + المحاكي في MCP واحدأثقل؛ نطاق أوسع
Maestroتريد DSL كامل لاختبار UIلا يُشغَّل بـ LLM افتراضياً
Xcode Cloud / FastlaneCI في الإنتاجطبقة مختلفة؛ غير تفاعلي

المزيد

الموارد

📖 اقرأ ملف README الرسمي على GitHub

🐙 تصفح القضايا المفتوحة

🔍 تصفح أكثر من 400 خادم MCP و Skills