/ Diretório / Playground / iOS Simulator MCP
● Comunidade joshuayoes ⚡ Instantâneo

iOS Simulator MCP

por joshuayoes · joshuayoes/ios-simulator-mcp

Controle xcrun simctl + idb a partir do Claude — inicialize simuladores, instale seu .app, toque, digite, capture screenshots e grave vídeos, sem precisar trocar para o Xcode.

O iOS Simulator MCP encapsula o xcrun simctl da Apple mais o idb do Facebook para que o Claude possa operar o iOS Simulator. Perfeito para loops de testes de UI, reprodução de bugs e captura de screenshots/vídeos para tickets — exatamente o tipo de trabalho em que alternar entre Xcode e chat é tedioso.

Por que usar

Principais recursos

Demo ao vivo

Como fica na prática

ios-simulator-mcp.replay ▶ pronto
0/0

Instalar

Escolha seu cliente

~/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"
      ]
    }
  }
}

Abra Claude Desktop → Settings → Developer → Edit Config. Reinicie após salvar.

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

Cursor usa o mesmo esquema mcpServers que o Claude Desktop. Config de projeto vence a global.

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

Clique no ícone MCP Servers na barra lateral do Cline, depois "Edit Configuration".

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

Mesmo formato do Claude Desktop. Reinicie o Windsurf para aplicar.

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

O Continue usa um array de objetos de servidor em vez de um map.

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

Adicione em context_servers. Zed recarrega automaticamente ao salvar.

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

Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.

Casos de uso

Usos do mundo real: iOS Simulator MCP

Gere screenshots do App Store em vários dispositivos

👤 Devs iOS preparando um release ⏱ ~25 min intermediate

Quando usar: Você precisa de screenshots 6.5", 6.7" e iPad em modo claro + escuro, rapidamente.

Pré-requisitos
  • Xcode + simctl — Instalação padrão do Xcode
  • idb instaladobrew tap facebook/fb && brew install idb-companion
  • Bundle .app compiladoxcodebuild -scheme YourApp -destination 'platform=iOS Simulator' build
Fluxo
  1. Configure os dispositivos
    Inicialize os simuladores iPhone 15 Pro Max e iPad Pro 13-inch. Liste-os quando prontos.✓ Copiado
    → list_simulators mostra ambos como Booted
  2. Defina a status bar
    Defina a status bar como 9:41, bateria cheia, sinal cheio em ambos. Estilo App Store.✓ Copiado
    → status_bar_set bem-sucedido; visual limpo
  3. Instale + screenshots
    Instale MyApp.app em ambos. Execute, navegue Home → Profile → Settings, capture screenshot de cada um no modo claro e escuro. Salve em /screenshots/<dispositivo>/<modo>/.✓ Copiado
    → Pasta por dispositivo, com variantes claro + escuro de cada tela

Resultado: Pack completo de screenshots do App Store em ~10 min, sem captura manual.

Armadilhas
  • Simulador inicializa mas o app crasha ao lançar — Acesse o log do simctl; verifique entitlements faltando
  • Conteúdo da Dynamic Island cobre os ajustes da status bar — No Pro Max, status_bar_set ainda se aplica abaixo da DI
Combine com: filesystem

Capture um vídeo limpo de reprodução de bug de UI

👤 Devs iOS / QA ⏱ ~10 min beginner

Quando usar: O bug só se reproduz no simulador; você quer um vídeo para o ticket.

Fluxo
  1. Inicie a gravação
    Inicialize o iPhone 15. Instale build.app. Inicie a gravação de tela.✓ Copiado
    → record_video_start retorna o id de gravação
  2. Reproduza
    Abra o app. Toque em Profile, depois no lápis de Edit. Digite 'Test' no campo de nome. Toque em Save. Aguarde 2 segundos.✓ Copiado
    → Sequência executada; bug visível se reproduzir
  3. Pare e anexe
    Pare a gravação, salve como bug-1234.mov em /tickets/.✓ Copiado
    → MOV salvo

Resultado: Vídeo de reprodução pronto para anexar ao ticket.

Armadilhas
  • Toque não acertou porque o layout é diferente do esperado — Use describe_ui primeiro para encontrar os frames atuais
Combine com: filesystem · github

Execute um loop de smoke test após cada rebuild

👤 Devs iOS em ciclo intenso de build/teste ⏱ ~15 min intermediate

Quando usar: Você está iterando em uma tela e quer um smoke test de 30 segundos após cada rebuild.

Fluxo
  1. Rebuilde + reinstale
    Execute xcodebuild para o scheme MyApp Debug, depois reinstale no simulador inicializado.✓ Copiado
    → Instalação bem-sucedida com novo bundle
  2. Execute o caminho de smoke
    Abra o app, faça login com a conta de teste, navegue até a tela em que estou trabalhando, capture screenshot.✓ Copiado
    → Screenshot correto; sem crashes no log

Resultado: Ciclo de build/teste mais rápido sem toques manuais.

Armadilhas
  • Fluxo de login tem captcha — Use um build com bypass de captcha ou stub do fluxo de autenticação

Combinações

Combine com outros MCPs para 10× de alavancagem

ios-simulator-mcp + filesystem

Salve screenshots no seu repositório

Capture screenshots de todas as telas principais, salve em /design/screenshots/.✓ Copiado
ios-simulator-mcp + github

Abra um issue de bug com um vídeo de reprodução

Grave o bug, depois abra um issue no GitHub anexando o MOV e os passos de reprodução.✓ Copiado
ios-simulator-mcp + xcodebuildmcp

Compile e execute imediatamente o smoke test

XcodeBuild: compile Debug. Sim: instale + execute + capture screenshot.✓ Copiado

Ferramentas

O que este MCP expõe

FerramentaEntradasQuando chamarCusto
list_simulators (none) Primeiro passo free
boot_simulator device_id: str Ligar um simulador free
install_app device_id, path: str (.app) Enviar um build free
launch_app device_id, bundle_id: str Abrir o app free
tap device_id, x, y Tocar em uma coordenada free
type_text device_id, text: str Inserir texto free
screenshot device_id, path? Capturar estado free
record_video_start device_id, path: str Iniciar vídeo free
record_video_stop recording_id Encerrar vídeo free
describe_ui device_id Encontrar coordenadas de toque free
status_bar_set device_id, time, battery, signal Screenshots limpos para App Store free

Custo e limites

O que custa rodar

Cota de API
Nenhuma — local
Tokens por chamada
100–800; screenshots referenciados por caminho, não incorporados
Monetário
OSS gratuito
Dica
Use describe_ui para encontrar coords de toque uma vez em vez de adivinhar repetidamente

Segurança

Permissões, segredos, alcance

Escopos mínimos: execute simctl + idb
Armazenamento de credenciais: Nenhum — mas os dados do app no simulador são seus
Saída de dados: Apenas local
Nunca conceda: root / kernel access

Solução de problemas

Erros comuns e correções

idb not found

brew tap facebook/fb && brew install idb-companion; também pip install fb-idb

Verificar: idb list-targets
Tap doesn't land

Use describe_ui; coords diferem entre tamanhos de dispositivo; elemento pode estar em uma sheet

Sim booted but stays black

Sim shutdown + reset; às vezes o runtime do Xcode precisa ser baixado novamente

Recording corrupts

Use simctl io recordVideo diretamente; o wrapper do idb falha ocasionalmente com sleep do macOS

Alternativas

iOS Simulator MCP vs. outros

AlternativaQuando usarTroca
XcodeBuildMCP (Sentry)Você quer build + simulador em um único MCPMais pesado; escopo mais amplo
MaestroVocê quer uma DSL completa de testes de UINão é dirigido por LLM por padrão
Xcode Cloud / FastlaneCI de produçãoCamada diferente; não é interativo

Mais

Recursos

📖 Leia o README oficial no GitHub

🐙 Ver issues abertas

🔍 Ver todos os 400+ servidores MCP e Skills