SilbercueSwift

Servidor MCP de automatización para simulador iOS — compilar, probar, capturar pantalla (20ms), interacción con UI, registro, git. Integración directa con WDA, sin sobrecarga de Appium. 55 herramientas, nivel Gratuito y Pro.

Documentación

SilbercueSwift

GitHub Release Free — 49 tools Pro available License: MIT MCP Registry Platform Swift 6.0 SilbercueSwift MCP server

El servidor MCP más rápido y completo para desarrollo iOS. Un solo binario Swift, 58 herramientas, cero dependencias. SilbercueSwift tiene el conjunto de herramientas más completo de cualquier alternativa existente.

Diseñado para Claude Code, Cursor y cualquier agente de IA compatible con MCP.

¿Buscas una alternativa a los servidores MCP de iOS existentes? SilbercueSwift cubre el conjunto completo de funciones de XcodeBuildMCP, Appium-MCP e iosef en un solo binario — además de análisis de xcresult, automatización de UI, cobertura de código y capturas de pantalla hasta 75 veces más rápidas. Ver comparación a continuación.

¿Por qué SilbercueSwift?

Todos los servidores MCP de iOS tienen el mismo problema: la salida cruda de xcodebuild es inútil para agentes de IA. 500 líneas de registro de compilación, ruido de stderr confundido con errores, sin resultados de prueba estructurados. Los agentes pierden minutos analizando lo que un humano ve en segundos.

SilbercueSwift soluciona esto. Analiza los paquetes .xcresult — los mismos datos estructurados que Xcode usa internamente — y devuelve exactamente lo que el agente necesita: conteos de aprobados/fallidos, mensajes de error con archivo:línea, cobertura de código por archivo y capturas de pantalla de fallos.

Lo que obtienesXcodeBuildMCPAppium-MCPiosefSilbercueSwift
Latencia de captura de pantalla~1127ms~77ms~83ms~316ms
( ~15ms, 75x)
Jerarquía de vistas~259ms~938ms~44ms~31ms
( ~5ms)
Encontrar elemento76ms50ms31ms
( <1ms + auto-scroll)
Tocar (coordenadas)235ms470ms48ms16ms
( 4ms)
Deslizar1284ms2685ms262ms~250ms
Compilar para simulador
Compilar + Ejecutar en una llamadaSí (secuencial)Sí (paralelo, ~9s más rápido)
Resultados de prueba estructuradosParcialJSON xcresult completo
Capturas de pantalla de fallos desde xcresultExportación automática
Cobertura de código por archivoBásicaOrdenada, filtrable
Diagnóstico de errores de compilaciónAnálisis de stderrJSON xcresult con archivo:línea
Navegar (encontrar + tocar + verificar)1 llamada (~380ms)
Doble toque~60ms
Arrastrar y soltarSolo coordenadas (3 llamadas)Elemento a elemento (1 llamada)
Desplazarse a un elementoBucle de deslizamiento manualSmartScroll (1 llamada)
Manejo de alertasAlerta únicaBúsqueda de 3 niveles + aceptar_todo por lotes
Diálogo ContactsUI de iOS 18Soportado
Automatización de UI por lotesrun_plan: planes de varios pasos con decisiones adaptativas
Filtrado de registrosSolo subsistemaParcialFiltrado por tema: 90% menos tokens
Registro de consola por prueba fallidaOpcional
Esperar patrón de registroRegex + tiempo de espera
Regresión visualLínea base + diff de píxeles
Verificación multi-dispositivoModo oscuro, horizontal, iPad
Multiplataforma (Android)
Herramientas77 (Rust)61 (Node.js + Appium)15 (Swift)58 (Swift nativo, 8.5MB)
Inicio en frío~400ms~1000ms~100ms~50ms

Donde SilbercueSwift realmente brilla

killer feat Capturas de pantalla hasta 75 veces más rápidas — ~316ms ( ~15ms)

Las capturas de pantalla del nivel gratuito (~316ms) son más rápidas que XcodeBuildMCP (~1127ms) y la mayoría de las alternativas. Pro reduce la latencia a ~15ms — 5 veces más rápido que Appium, 75 veces más rápido que XcodeBuildMCP. Los agentes pueden tomar capturas de pantalla libremente sin penalización en cualquiera de los niveles.

killer feat Resultados de prueba estructurados desde paquetes xcresult — cero conjeturas sobre fallos

Cuando una prueba falla, el agente obtiene el mensaje de error, el archivo:línea exacto, una captura de pantalla del estado de fallo y, opcionalmente, la salida de consola — todo analizado desde el formato .xcresult de Apple. Sin adivinar a partir de 500 líneas de stderr de xcodebuild. Esta es la diferencia entre "el agente sabe qué falló" y "el agente adivina qué falló".

killer feat Un solo binario, cero dependencias — 58 herramientas, instalación en 10 segundos

brew install silbercueswift — listo. Binario Swift nativo de 8.5MB. Sin Node.js, sin npm, sin servidor Appium, sin Python, sin Java, sin cadena de herramientas Rust. Inicio en frío en ~50ms. La forma más rápida de tener un servidor MCP de iOS funcionando.

killer feat El agente lee solo lo que importa — 90% menos tokens, cero llamadas desperdiciadas (filtrado por tema )

El nivel gratuito ya elimina el ruido: 15 procesos de ruido conocidos se excluyen en el momento de la captura, y las líneas duplicadas se colapsan (reducción del 79% de E/S). Pro añade filtrado por tema — read_logs categoriza las líneas en 8 temas y muestra solo app + fallos por defecto, con un menú: network(87) lifecycle(12) springboard(8). El agente abre temas específicos en una llamada — sin adivinar, sin iteración.

strong Una llamada para descartar todos los diálogos de permisos — 3 alertas en 1 ida y vuelta

Toda app muestra 2–3 diálogos de permisos en el primer lanzamiento. Otros servidores requieren que el agente capture pantalla → encuentre botón → haga clic, por cada diálogo. handle_alert(action: "accept_all") los elimina todos en una sola llamada, buscando en SpringBoard, ContactsUI y la app activa. El nivel gratuito maneja alertas individualmente con accept / dismiss.

strong Arrastrar y soltar con IDs de elemento — 1 llamada en lugar de 3

"Arrastrar el elemento A sobre el elemento B" es una sola llamada: drag_and_drop(source_element: "el-0", target_element: "el-1"). La competencia solo admite coordenadas crudas, lo que obliga al agente a encontrar ambos elementos, extraer sus marcos y construir una secuencia de acciones W3C — mínimo 3 llamadas.

strong Auto-desplazamiento a elementos fuera de pantalla — no más bucles de deslizamiento manual

find_element(using: "accessibility id", value: "Save", scroll: true) se desplaza automáticamente hasta que el elemento aparece. SmartScroll maneja UIKit, SwiftUI y listas de carga diferida — sin adivinar la dirección del desplazamiento.

strong Jerarquía de vistas en ~31ms (Gratis) / ~5ms (Pro) — inspección de elementos hasta 188 veces más rápida

get_source devuelve el árbol de UI completo en ~31ms (Gratis) o ~5ms (Pro). El competidor más rápido tarda 44ms, la mayoría tarda 250ms+. Esto hace que la inspección de elementos sea prácticamente gratuita para los agentes.

killer feat Navegar en una llamada — encontrar + tocar + estabilizar + captura de pantalla en ~380ms

navigate(to: "Settings") encuentra el elemento, lo toca, espera a que la pantalla se estabilice y devuelve una captura de verificación — todo en una sola llamada. Ningún competidor ofrece esto. Los agentes ahorran 3-4 llamadas de herramienta por paso de navegación.

strong Automatización de UI por lotes — run_plan ejecuta planes de varios pasos con decisiones adaptativas

run_plan toma una secuencia de pasos de UI y los ejecuta en el servidor. Cuando un paso necesita una decisión (diálogo inesperado, elemento no encontrado), recurre a 4 niveles — desde muestreo MCP hasta pausa y reanudación. No más sobrecarga de "una llamada de herramienta por toque".

Inicio rápido

Instalar vía Homebrew

brew tap silbercue/silbercue
brew install silbercueswift

O compilar desde el código fuente

git clone https://github.com/silbercue/SilbercueSwift.git
cd SilbercueSwift
swift build -c release
cp .build/release/SilbercueSwift /usr/local/bin/

Configurar en Claude Code

Un comando — instala globalmente para todos los proyectos:

claude mcp add --scope user SilbercueSwift /opt/homebrew/bin/SilbercueSwift

Nota: Usa la ruta completa (/opt/homebrew/bin/SilbercueSwift). Claude Code inicia los servidores MCP sin un PATH de shell completo, por lo que los nombres de comandos simples no se encontrarán.

Configurar en Cursor

Añade a ~/.cursor/mcp.json:

{
  "mcpServers": {
    "SilbercueSwift": {
      "command": "/opt/homebrew/bin/SilbercueSwift"
    }
  }
}

Configurar en otros clientes MCP (Cline, Continue, etc.)

Cualquier cliente que admita servidores MCP stdio: apunta a /opt/homebrew/bin/SilbercueSwift sin argumentos.

Desinstalar

claude mcp remove --scope user SilbercueSwift
brew uninstall silbercueswift
brew untap silbercue/silbercue

Gratis vs Pro

SilbercueSwift incluye 49 herramientas gratis — compilar, probar, simular, automatizar UI, capturar registros y tomar capturas de pantalla. Sin límite de tiempo, sin registro.

Pro añade 9 herramientas e internals más rápidos para equipos y usuarios avanzados que necesitan la imagen completa.

GratisPro
Compilación, pruebas, gestión de simulador49 herramientas58 herramientas
Captura de pantalla~316ms~15ms (75x más rápido)
Resultados de prueba estructurados (xcresult)
Encontrar elemento31ms<1ms
Jerarquía de vistas31ms~5ms
Tocar (coordenadas)16ms4ms
Clic / escribir / deslizar / doble toque / pulsación larga / arrastrar y soltar
Navegar (encontrar + tocar + verificar)
Automatización de UI por lotes (run_plan)
Manejo de alertasAceptar/descartar individual+ Aceptar_todo / descartar_todo por lotes
Captura de registrosInteligente + detallado+ Modo app, filtrado por tema
Captura de consola, herramientas git
Desplazarse a un elementoSmartScroll
Regresión visualLínea base + diff de píxeles
Verificación multi-dispositivoModo oscuro, horizontal, iPad
Verificación de accesibilidadRenderizado de tipo dinámico
Verificación de localizaciónMulti-idioma + RTL
Pellizcar / zoom

Pro cuesta 12 EUR/mes. Obtén una licencia en Polar.sh, luego:

silbercueswift activate <YOUR-LICENSE-KEY>

58 Herramientas en 14 Categorías

Compilación (5 herramientas)

HerramientaDescripción
build_simCompilar para simulador iOS — devuelve errores estructurados + almacena en caché el ID del paquete y la ruta de la app
build_run_simCompilar + arrancar + instalar + lanzar en una llamada — pipeline paralelo de 2 fases, ~9s más rápido que secuencial
cleanLimpiar artefactos de compilación
discover_projectsEncontrar archivos .xcodeproj/.xcworkspace
list_schemesListar esquemas disponibles

Pruebas y Diagnóstico (4 herramientas)

HerramientaDescripción
test_simEjecutar pruebas + resumen xcresult estructurado (aprobado/fallido/duración)
test_failuresPruebas fallidas con mensajes de error, archivo:línea y capturas de pantalla de fallos
test_coverageCobertura de código por archivo, ordenada y filtrable
build_and_diagnoseCompilar + errores/advertencias estructurados desde xcresult

Simulador (12 herramientas)

HerramientaDescripción
list_simsListar simuladores disponibles
boot_simArrancar un simulador
shutdown_simApagar un simulador
install_appInstalar paquete .app
launch_appLanzar app por ID de paquete
terminate_appTerminar app en ejecución
clone_simClonar un simulador existente
erase_simBorrar contenido y ajustes del simulador
delete_simEliminar un simulador
set_orientationRotar dispositivo (PORTRAIT, LANDSCAPE_LEFT, LANDSCAPE_RIGHT) vía WDA
sim_statusEstado del simulador (arrancado/apagado, tipo de dispositivo, runtime)
sim_inspectInformación detallada del simulador (ruta de datos, ruta de registros, UDID)

Automatización de UI (16 herramientas)

Entrada nativa para gestos, WDA para consultas de elementos y alertas — sin Appium, sin Node.js, sin Python.

HerramientaDescripciónLatencia
handle_alertAceptar, descartar o gestionar en lote alertas del sistema y de la aplicación~200ms
find_element / find_elementsEncuentra elementos por ID de accesibilidad, predicado, cadena de clase. scroll: true se desplaza automáticamente hasta que el elemento aparece (SmartScroll — 3 estrategias de respaldo)31ms
( <1ms)
click_elementTocar un elemento de la interfaz~75ms
tap_coordinatesTocar basado en coordenadas~16ms
( ~4ms)
double_tap / long_pressDoble toque o pulsación larga en coordenadas~60ms / ~1000ms
swipeDeslizamiento direccional~250ms
pinchAcercar/alejar~400ms
drag_and_dropArrastrar desde el origen hasta el destino — de elemento a elemento, coordenadas o mixto. Valores predeterminados inteligentes para listas reordenables, tableros Kanban, controles deslizantes~1.3s
navigateBuscar + tocar + estabilizar + captura de pantalla en 1 llamada — ahorra 3-4 idas y vueltas~380ms
type_text / get_textEscribir o leer de elementos~100-300ms
get_sourceJerarquía de vista completa (JSON/XML)~31ms
( ~5ms)
wda_status / wda_create_sessionVerificación de salud de WDA y gestión de sesiones~50-100ms

handle_alert — el gestor de alertas más inteligente

# Accept a single alert with smart defaults
handle_alert(action: "accept")

# Dismiss with a specific button label
handle_alert(action: "dismiss", button_label: "Not Now")

# Batch-accept ALL alerts after app launch (unique to SilbercueSwift)
handle_alert(action: "accept_all")

Búsqueda de alertas en 3 niveles — encuentra alertas en:

  1. Springboard — diálogos de permisos del sistema (Ubicación, Cámara, Seguimiento)
  2. ContactsUI — diálogo de "Acceso limitado" de Contactos en iOS 18+ (proceso separado)
  3. Aplicación activa — diálogos UIAlertController dentro de la aplicación

Valores predeterminados inteligentes — sabe qué botón tocar:

  • Aceptar: "Permitir" → "Permitir mientras se usa la aplicación" → "OK" → "Continuar" → último botón
  • Descartar: "No permitir" (maneja Unicode U+2019) → "Cancelar" → "Ahora no" → primer botón

Modo loteaccept_all / dismiss_all recorre múltiples alertas secuenciales en el servidor. Una sola ida y vuelta HTTP en lugar de N. Devuelve detalles de cada alerta gestionada.

Estas capacidades van más allá de lo que otros servidores MCP de iOS ofrecen actualmente.

Capturas de pantalla (1 herramienta)

HerramientaLatencia
screenshotGratis: ~316ms / Pro: ~15ms

Registros (4 herramientas)

HerramientaDescripción
start_log_captureFlujo os_log con filtrado inteligente — 3 modos: smart (predeterminado, filtrado por tema habilitado), app (flujo ajustado, detección automática), verbose (sin filtrar). Deduplica líneas repetitivas.
stop_log_captureDetener captura
read_logsLectura filtrada por tema — predeterminado: solo aplicación y fallos. La respuesta incluye menú de temas con recuentos de líneas. Agregar temas mediante el parámetro include.
wait_for_logEsperar patrón regex con tiempo de espera — elimina los trucos de sleep()

Filtrado inteligente de registros — 4 capas, cero configuración

# Start capture (default: smart mode — broad stream, topic filtering enabled)
start_log_capture()

# Read logs — default shows only app logs + crashes + topic menu
read_logs()
# → --- 230 buffered, 42 shown [app, crashes] ---
# → Topics: app(35) crashes(2) | network(87) lifecycle(12) springboard(8) widgets(0) background(3) system(83)
# → Hint: include=["network"] to add SSL/TLS + background transfer logs
# → ---
# → [42 filtered lines]

# Agent sees network(87) and wants SSL details — one call:
read_logs(include: ["network"])

# Narrow stream for production monitoring:
start_log_capture(mode: "app")

# Bypass mode logic with explicit predicate:
start_log_capture(subsystem: "com.apple.SwiftUI")

4 capas de filtrado:

  1. Exclusión de ruido en el flujo — 15 procesos de ruido conocidos + exclusiones de subsistema/categoría eliminadas antes del almacenamiento en búfer. Filtrado en el servidor en logd — reducción del 79% de E/S.
  2. 3 modos de capturasmart (predeterminado, flujo amplio para filtrado por tema), app (ajustado, ID de paquete + nombre de proceso detectados automáticamente), verbose (sin filtrar).
  3. Filtrado por tema al leerread_logs categoriza cada línea almacenada en búfer en 8 temas (aplicación, fallos, red, ciclo de vida, springboard, widgets, fondo, sistema). El predeterminado muestra solo aplicación y fallos. El agente agrega temas según sea necesario — sin estado por llamada.
  4. Deduplicación del búfer — 60 líneas de latido idénticas se convierten en 2: la línea en sí + ... repeated 59x.

8 temas con menú optimizado para LLM:

TemaCoincidenciasCaso de uso
app (siempre activo)subsistema == bundleId O proceso == nombre de la aplicaciónTu aplicación: os_log, print(), NSLog()
crashes (siempre activo)registros de nivel de falloFallos de cualquier proceso
networktrustd, nsurlsessiondCertificados SSL/TLS, transferencias en segundo plano
lifecyclerunningboardd, com.apple.runningboard.*Jetsam, presión de memoria, cierres de aplicaciones
springboardSpringBoardNotificaciones push, estado de la aplicación
widgetschronodLínea de tiempo de WidgetKit, presupuesto de actualización
backgroundcom.apple.xpc.activity.*BGTaskScheduler, búsqueda en segundo plano
systemtodo lo demásADVERTENCIA: alto volumen

Consola (3 herramientas)

HerramientaDescripción
launch_app_consoleIniciar aplicación con captura de stdout/stderr
read_app_consoleLeer salida de consola
stop_app_consoleDetener captura de consola

Git (5 herramientas)

HerramientaDescripción
git_status / git_diff / git_logOperaciones de lectura
git_commit / git_branchOperaciones de escritura

Regresión visual (2 herramientas)

HerramientaDescripción
save_visual_baselineGuardar una captura de pantalla como línea base con nombre
compare_visualComparar la pantalla actual con la línea base — diferencia de píxeles + puntuación de coincidencia

Multi-dispositivo (1 herramienta)

HerramientaDescripción
multi_device_checkEjecutar verificaciones visuales en múltiples simuladores (modo oscuro, horizontal, iPad) — devuelve puntuaciones de diseño

Accesibilidad (1 herramienta)

HerramientaDescripción
accessibility_checkRenderizar pantallas en categorías de tamaño de contenido de Dynamic Type — detecta truncamiento y problemas de diseño

Localización (1 herramienta)

HerramientaDescripción
localization_checkRenderizar pantallas en varios idiomas, incluido RTL (árabe, hebreo) — detecta roturas de diseño

Automatización (2 herramientas)

HerramientaDescripción
run_planEjecutar un plan de automatización de interfaz de varios pasos en el servidor — decisiones adaptativas con respaldo de 4 niveles
run_plan_decideReanudar un plan en pausa con una decisión — para clientes sin muestreo MCP

Sesión (1 herramienta)

HerramientaDescripción
set_defaultsEstablecer proyecto, esquema, simulador predeterminados — evita repetir parámetros

Análisis de xcresult — La función destacada

El problema

Cada servidor MCP de Xcode devuelve salida xcodebuild sin procesar. Para una ejecución de pruebas, eso son más de 500 líneas de ruido. Los agentes de IA no pueden extraer de manera confiable qué pruebas fallaron y por qué.

La solución

SilbercueSwift usa xcresulttool para analizar el paquete .xcresult — los mismos datos estructurados que usa el Navegador de pruebas de Xcode.

# One call, structured result
test_sim(project: "MyApp.xcodeproj", scheme: "MyApp")

→ Tests FAILED in 15.2s
  12 total, 10 passed, 2 FAILED
  FAIL: Login shows error message
    LoginTests.swift:47: XCTAssertTrue failed
  FAIL: Profile image loads
    ProfileTests.swift:112: Expected non-nil value

  Failure screenshots (2):
    /tmp/ss-attachments/LoginTests_failure.png
    /tmp/ss-attachments/ProfileTests_failure.png

  Device: iPhone 16 Pro (18.2)
  xcresult: /tmp/ss-test-1774607917.xcresult

El agente obtiene:

  • Recuentos de aprobados/fallidos — visión general inmediata
  • Mensajes de fallo con archivo:línea — procesables
  • Capturas de pantalla de fallos — contexto visual (Claude es multimodal)
  • Ruta de xcresult — reutilizable para test_failures o test_coverage

Análisis profundo de fallos

test_failures(xcresult_path: "/tmp/ss-test-*.xcresult", include_console: true)

→ FAIL: Login shows error message [LoginTests/testErrorMessage()]
    LoginTests.swift:47: XCTAssertTrue failed
    Screenshot: /tmp/ss-attachments/LoginTests_failure.png
    Console:
      [LoginService] Network timeout after 5.0s
      [LoginService] Retrying with fallback URL...
      ✘ Test "Login shows error message" failed after 6.2s

Cobertura de código

test_coverage(project: "MyApp.xcodeproj", scheme: "MyApp", min_coverage: 80)

→ Overall coverage: 72.3%

  Target: MyApp.app (74.1%)
      0.0% AnalyticsService.swift
     45.2% LoginViewModel.swift
     67.8% ProfileManager.swift

  Target: MyAppTests.xctest (62.0%)
     ...

Puntos de referencia

Medidos en M3 MacBook Pro, simulador iOS 26.4. Todos los valores son mediana de 5 ejecuciones después de 2 calentamientos.

AccióniosefXcodeBuildMCPAppium-MCPSS GratisSS Pro
Captura de pantalla83ms1127ms77ms316ms15ms
Buscar elemento50msN/D76ms31ms<1ms
Tocar (coordenadas)48ms235ms470ms16ms4ms
Deslizar262ms1284ms2685ms~250ms~250ms
Jerarquía de vista44ms259ms938ms31ms5ms
Navegar (1 llamada)~380ms~380ms
Doble toque~84ms~60ms
Arrastrar y soltarsolo coordenadas~1.3s~1.3s
Gestionar alerta118ms~200ms~200ms
Gestionar 3 alertas (lote)3 llamadas~800ms (1 llamada)~800ms (1 llamada)
Desplazarse a elementobucle de deslizamientoAutomático
Compilar (limpiar)2501ms3188ms1800ms
Lista de simuladores12ms567ms15ms15ms
Inicio en frío~100ms~400ms~1000ms~50ms~50ms
Tamaño del binario~5MB~4MB~200MB8.5MB8.5MB

Comparación con otros servidores MCP

Consulta la tabla de comparación de funciones anterior para un desglose detallado frente a XcodeBuildMCP, Appium-MCP e iosef. Los tres son proyectos excelentes que fueron pioneros en las herramientas MCP de iOS. SilbercueSwift combina todos sus conjuntos de funciones con una integración más profunda en un único binario nativo. El único inconveniente: SilbercueSwift es solo para iOS (sin Android, watchOS, tvOS ni visionOS).

Arquitectura

SilbercueSwift (8.5MB Swift binary)
├── MCP SDK (modelcontextprotocol/swift-sdk)
├── StdioTransport (JSON-RPC)
└── 58 Tools in 14 Categories
    Build · Test · Simulator · Screenshot · UI Automation
    Logs · Console · Visual Regression · Multi-Device
    Accessibility · Localization · Automation · Git · Session

Sin Node.js. Sin Python. Sin servidor Appium. Sin Selenium. Un solo binario.

Requisitos

  • macOS 13+
  • Xcode 15+ (para xcresulttool y simctl)
  • Swift 6.0+ (para compilar desde el código fuente)
  • WebDriverAgent instalado en el simulador (para herramientas de automatización de interfaz)

Licencia

El binario principal y las 49 herramientas gratuitas tienen licencia MIT — consulta LICENCIA. Úsalas como quieras, comercialmente o de otro modo.

Las herramientas Pro (9 herramientas adicionales + internos más rápidos) requieren una licencia de pago. El código de validación de licencia (LicenseManager.swift) está incluido en el código fuente para transparencia — puedes ver exactamente qué verifica y cuándo.

Contribuciones

Se aceptan problemas y solicitudes de extracción. Consulta CONTRIBUTING.md para las pautas.

Privacidad

SilbercueSwift se ejecuta completamente en tu Mac y no recopila datos de usuario. Consulta PRIVACY.md para más detalles.