Решил проверить MCP для Xcode на реальном проекте. Взял старый CatShop - магазин был чистой заглушкой.
💻 Как шёл процесс:
1️⃣ MCP начал с разведки - сам открыл
ClickerState, CatShopScenario, CatItem, просмотрел, как всё связано.“Теперь давайте посмотрим на связанные модели и состояния”
2️⃣ Нашёл, чего не хватает - в состоянии нет данных о покупках и экипировке.
“Давайте доработаем ClickerState, добавив поддержку покупки и экипировки предметов”
var ownedItems: Set<String> = []
var equippedItems: [CatItem.Slot: String] = [:]
3️⃣ Починил заглушки в логике:
“В isEquipped и isOwned используются заглушки, заменим их на реальные проверки”
4️⃣ Обновил UI - в CatShopView появились кнопки «Купить» и «Экипировать» с условиями, показ цены и бонусов:
“Показываем бонус предмета”
case .tapPower(let power):
Text("💪 +\(power) к силе удара")
5️⃣ Добавил реакцию кота - после экипировки предметы сразу отображаются на модели:
“Уведомляем CatViewModel об обновлении предметов”
6️⃣ Поймал мелкую ошибку - CatItem.Slot не Hashable, из-за чего не работали словари. MCP тут же сделал фикс.
🪄 Всё это было в одной сессии в Cursor: я пишу «добавь поддержку экипировки», он идёт по проекту, проверяет зависимости, сам правит импорты и обновляет логику так, чтобы всё стыковалось.
📦 Как подключить MCP к Cursor для Xcode:
brew install mise
В mcpServers:
"XcodeBuildMCP": {
"command": "mise",
"args": [
"x",
"npm:xcodebuildmcp@1.11.2",
"--",
"xcodebuildmcp"
]
}⚡️ Ощущение, что MCP реально действует как разработчик - идёт по коду, понимает контекст и аккуратно встраивает изменения, пока ты просто ставишь задачи.