/ الدليل / الملعب / XcodeBuild
● رسمي getsentry ⚡ فوري

XcodeBuild

بواسطة getsentry · getsentry/XcodeBuildMCP

أتمم حلقة تطوير iOS/macOS بالذكاء الاصطناعي — البناء والاختبار والتشغيل على المحاكي والتقاط السجلات والصور، كل شيء من الدردشة

XcodeBuildMCP (من Sentry، عضو سابق في منظمة getsentry كاميرون) يغلّف xcodebuild و xcrun simctl وتشغيل المحاكي. يتيح للوكيل ترجمة مشروع واختبار وتشغيل محاكي وتثبيت التطبيق واختباره بشكل تفاعلي وقراءة السجلات أو الصور — حلقة التغذية الراجعة المفقودة لكود iOS المكتوب بالذكاء الاصطناعي

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

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

عرض مباشر

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

xcodebuild.replay ▶ جاهز
0/0

التثبيت

اختر العميل

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "xcodebuild": {
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  }
}

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

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "xcodebuild": {
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  }
}

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

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "xcodebuild": {
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  }
}

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

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "xcodebuild": {
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  }
}

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

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "xcodebuild",
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  ]
}

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

~/.config/zed/settings.json
{
  "context_servers": {
    "xcodebuild": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "xcodebuildmcp@latest"
        ]
      }
    }
  }
}

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

claude mcp add xcodebuild -- npx -y xcodebuildmcp@latest

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

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

استخدامات عملية: XcodeBuild

تحقق من أن كود iOS الذي يولده الذكاء الاصطناعي يُترجم فعلاً ويعمل على محاكي

👤 مطورو iOS الذين يستخدمون Claude للعمل على الميزات وتطوير نماذج SwiftUI ⏱ ~15 min intermediate

متى تستخدمه: عندما يكون Claude قد كتب أو عدّل views من SwiftUI للتو. قبل القول 'انتهى'، تريد أن تترجم وتشغل على محاكي وتلتقط صورة

المتطلبات الأساسية
  • Xcode مثبت — Xcode 15+ من Mac App Store؛ تأكد عبر xcodebuild -version
  • محاكي قابل للتشغيل — Xcode → Settings → Platforms → تحميل iOS Simulator
الخطوات
  1. اكتشف المشروع والترجمة
    ابحث عن مشروع Xcode في /Users/me/Projects/MyApp. ابنِ خطة 'MyApp' لوجهة محاكي iOS 'iPhone 16'. أبلغ عن أي أخطاء أو تحذيرات✓ تم النسخ
    → البناء ينجح أو أخطاء محددة مع file:line
  2. شغّل المحاكي وثبّت وشغّل التطبيق
    شغّل محاكي iPhone 16 إذا لم يكن مشغلاً. ثبّت التطبيق المُترجم وشغّله. التقط صورة بعد 3 ثوانٍ✓ تم النسخ
    → التطبيق يعمل؛ الصورة التقطت
  3. اختبر الميزة
    انقر على زر 'Sign Up'، اكتب '[email protected]' في حقل البريد الإلكتروني، انقر Submit. التقط صورة بعد كل خطوة✓ تم النسخ
    → سلسلة من الصور توضح سير العملية أو خطأ واضح في النقر

النتيجة: صور قبل/بعد تثبت أن الميزة تعمل، مرفقة مع الكود

المزالق
  • النقر بالإحداثي هش عبر أحجام الأجهزة — فضّل النقرات المبنية على accessibility-label عندما يدعمها MCP؛ استخدم الإحداثيات فقط كحل بديل
  • بناء المحاكي يستخدم معمارية مختلفة عن جهاز حقيقي — للكود الحساس للمعمارية، ابنِ أيضاً على جهاز فعلي مرة واحدة على الأقل قبل الدمج
اجمعها مع: filesystem · github

شغّل اختبارات Xcode للوحدات والواجهة من الدردشة وفرز الأعطال

👤 مطورو iOS الذين يريدون تعليقات اختبار سريعة دون التبديل إلى Xcode ⏱ ~10 min beginner

متى تستخدمه: أجريت تغييراً وتريد تشغيل ما يعادل ⌘U ويحلل Claude الأعطال

الخطوات
  1. شغّل الاختبارات
    شغّل جميع الاختبارات لخطة 'MyApp' على وجهة 'iPhone 16'. أظهر لي أي أعطال مع file و line والتوقع✓ تم النسخ
    → عدد النجاحات بالإضافة إلى قائمة الأعطال مع المواقع
  2. اركز على عطل واحد
    للعطل الأول، اقرأ ملف المصدر وأخبرني ما إذا كان الاختبار خاطئاً أم أن الكود خاطئ. كن محدداً✓ تم النسخ
    → تشخيص واضح وليس 'قد يكون أحد الاثنين'
  3. أصلح وشغّل مرة أخرى
    طبّق الإصلاح. شغّل مرة أخرى فقط الاختبار الفاشل للتأكد من النجاح✓ تم النسخ
    → تشغيل أخضر

النتيجة: الاختبارات تعود للنجاح مع تشغيل مركّز وليس إعادة تشغيل المجموعة كاملة

المزالق
  • xcodebuild test بطيء مع الذاكرات الباردة — استخدم علم -only-testing: للتضييق؛ ينقل MCP هذا عبر test-by-identifier
اجمعها مع: github

شخّص خطأ ترجمة Xcode الغامض

👤 مطورو iOS الذين يصطدمون بجدار 'خطأ linker / framework مفقود / signing' ⏱ ~20 min intermediate

متى تستخدمه: xcodebuild يفشل والمخرجات تحتوي على 4000 سطر من الضوضاء

الخطوات
  1. ابنِ والتقط الفشل الخام
    ابنِ خطة 'MyApp' وأرجع فقط السطور التي تحتوي على 'error:' أو 'warning:'، بالإضافة إلى 3 سطور سياق حول كل واحدة✓ تم النسخ
    → قائمة أخطاء مركزة بدون ضوضاء
  2. اشرح الخطأ الأول
    اشرح الخطأ الأول بلغة إنسانية. ماذا يشتكي Xcode فعلاً وما أفضل 3 أسباب؟✓ تم النسخ
    → تشخيص بسيط مع الأسباب المحتملة
  3. طبّق الإصلاح وأعد البناء
    طبّق الإصلاح الأكثر احتمالاً (افحص Info.plist/entitlements/Package.swift حسب الحاجة)، أعد البناء، وتأكد من اختفاء الخطأ✓ تم النسخ
    → بناء نظيف

النتيجة: تحرر من جدار البناء دون الوقوع في ثقب أرنب Stack Overflow لمدة ساعتين

المزالق
  • بعض الأخطاء سببها قِدَم DerivedData — عندما تفشل كل المحاولات: نظّف DerivedData عبر أداة clean في MCP ثم أعد البناء
اجمعها مع: filesystem

التقط انهيار تطبيق على محاكي وجد السبب الجذري

👤 مطورو iOS يصطادون انهياراً قابلاً للتكرار ⏱ ~20 min advanced

متى تستخدمه: تطبيقك ينهار على سير عملية محددة في المحاكي وتريد Claude أن يقرأ سجل الانهيار

الخطوات
  1. كرّر مع التقاط السجلات
    شغّل MyApp على محاكي iPhone 16. ابدأ التقاط السجلات. قم بهذا السير: افتح Settings، انقر 'Clear Cache'. توقف عن التقاط السجلات عندما ينهار التطبيق✓ تم النسخ
    → الانهيار كُرّر وحُفظت السجلات
  2. اقرأ الانهيار
    ابحث عن الانهيار في السجلات الملتقطة. رموز إذا لزم الأمر. أخبرني عن الخيط الفاشل و5 أطر stack العليا والسطر المحتمل في كودنا✓ تم النسخ
    → تتبع stack مرموز يشير إلى ملف مصدر محدد
  3. اقترح الإصلاح
    بناءً على تتبع stack والكود المحيط، ما أقل تغيير لإصلاحه؟ طبّقه✓ تم النسخ
    → إصلاح مستهدف وليس إعادة هيكلة كبيرة

النتيجة: انهيار مُصلّح مع أدلة مرموزة يمكنك لصقها في PR

المزالق
  • انهيارات Release-config لا ترموز بدون dSYMs — استخدم Debug configuration للتكرار؛ اختبر Release بشكل منفصل للتأكد من الإصلاح
اجمعها مع: sentry · github

التركيبات

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

xcodebuild + filesystem

عدّل Swift → ابنِ → التقط صورة → كرّر، كل شيء في دردشة واحدة

عدّل ContentView.swift لإضافة تبديل dark-mode. ابنِ MyApp لـ iPhone 16، شغّله، التقط صورة في كلا الوضعين الفاتح والغامق✓ تم النسخ
xcodebuild + github

أصلح مشكلة وتحقق على محاكي وافتح PR مع صورة

المشكلة #42 تقول أن زر تسجيل الدخول غير متوازي في الوضع الأفقي. كرّر على محاكي iPad وأصلح تخطيط SwiftUI وأرفق صور قبل/بعد بـ PR✓ تم النسخ
xcodebuild + sentry

كرّر انهياراً مُبلّغاً عنه في Sentry على محاكي بنفس الشروط

انهيار Sentry iOS-113 حدث على iOS 18.1 مع لغة المستخدم fr-FR. شغّل محاكي متطابقاً وكرّره وأصلحه✓ تم النسخ

الأدوات

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

الأداةالمدخلاتمتى تستدعيهاالتكلفة
discover_projects directory: str ابحث عما ستبنيه في repo دون كتابة المسارات free
build_project project: str, scheme: str, destination: str, configuration?: 'Debug'|'Release' ابنِ .xcodeproj أو .xcworkspace لوجهة free
build_spm_package path: str ابنِ Swift Package (بدون .xcodeproj) free
test_project project, scheme, destination, only_testing?: str[] شغّل مجموعة الاختبارات؛ استخدم only_testing للتضييق free
list_simulators none انظر ما هي المحاكيات الموجودة وأيها مشغّلة free
boot_simulator simulator_id or name: str شغّل محاكي قبل تثبيت التطبيقات free
install_app simulator_id: str, app_path: str ثبّت .app المُترجم على محاكي مشغّل free
launch_app simulator_id: str, bundle_id: str شغّل التطبيق المثبّت free
tap_at / type_text / send_url simulator params قيادة الواجهة free
screenshot simulator_id: str, path?: str التقط الحالة البصرية free
start_log_capture / stop_log_capture simulator_id التقط سجلات console/system لجلسة free
clean project, scheme? احذف DerivedData للمشروع عندما تصير الأبنية غريبة free

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

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

حصة API
لا شيء — كل شيء يعمل محلياً عبر xcodebuild/simctl
الرموز لكل استدعاء
سجلات البناء قد تكون ضخمة. فضّل التصفية للأخطاء/التحذيرات بدلاً من تفريغ السجلات الكاملة
التكلفة المالية
مجاني (يتطلب Mac مع Xcode وهو تكلفة بحد ذاته)
نصيحة
شغّل أبنية متزايدة وليس أبنية نظيفة بشكل افتراضي. ونظّف فقط عندما يصير DerivedData غريباً

الأمان

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

تخزين بيانات الاعتماد: لا توجد بيانات اعتماد على مستوى MCP. بيانات اعتماد التوقيع الكودي تعيش في Keychain من Mac كالمعتاد
نقل البيانات الخارجي: لا شيء من MCP. قد ينقل xcodebuild المعتمديات (SPM و CocoaPods) من مصادرها المعتادة
لا تمنح أبدًا: لا تسمح للوكيل بتعديل هويات codesign أو ملفات provisioning بدون تأكيد

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

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

xcodebuild: command not found

أدوات سطر الأوامر Xcode مفقودة أو لم تُختر. شغّل xcode-select --install ثم sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

تحقق: xcodebuild -version
No such destination 'iPhone 16'

المحاكي بهذا الاسم لم يُحمّل لـ Xcode النشط. افتح Xcode → Settings → Platforms → حمّل iOS runtime. أو استخدم list_simulators واختر واحداً موجوداً

تحقق: xcrun simctl list devices
Build succeeds but app won't launch — 'NSException'

افحص سجلات التطبيق عبر start_log_capture قبل التشغيل مباشرة. غالباً ما يكون Info.plist فقد مفتاح أو عدم تطابق entitlements

Tests hang on a SwiftUI preview

معاينات SwiftUI قد تتسبب في deadlock لـ xcodebuild test في حالات نادرة. عطّل preview helpers في test schemes أو شغّل بـ -disable-concurrent-testing

البدائل

XcodeBuild مقابل البدائل

البديلمتى تستخدمهاالمقايضة
Direct shell MCP running xcodebuildتريد أقصى مرونة وتقبل المقايضة الأمنية لـ raw shell MCPلا توجد راحة؛ على Claude أن يعرف كل علم xcodebuild
JetBrains MCP (AppCode is EOL)أنت في JetBrains IDE — لم يعد ينطبق على iOSلا توجد بديل iOS اليوم
Fastlane via shellتحتاج إلى أبنية موقعة وتحميلات TestFlight وليس فقط التحقق من المحاكيأثقل بكثير؛ خارج نطاق تطوير inner-loop

المزيد

الموارد

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

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

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