Skip to main content
Glama

Simulator MCP

Permite a la IA controlar simuladores de iOS a través del protocolo MCP: iniciar dispositivos, capturar pantallas, hacer clics, introducir texto, capturar tráfico y simular interfaces (Mock).

Resumen de funciones

Categoría

Herramienta

Descripción

Gestión de dispositivos

list_devices

Lista todos los simuladores (estado, UDID, tiempo de ejecución)

boot_device / shutdown_device

Iniciar / Apagar simulador

install_app

Instalar paquete .app

launch_app

Iniciar APP (soporta proxy=true para inyectar interceptación de red)

open_url

Abrir URL o enlace profundo (selecciona automáticamente el simulador iniciado)

Captura de pantalla

take_screenshot

Captura la pantalla y la devuelve a la IA en base64 (soporta análisis visual)

Interacción UI

tap

Tocar coordenadas específicas de iOS (soporta pulsación larga duration)

swipe

Deslizar desde un punto de inicio a uno final

input_text

Introducir texto en el campo enfocado actualmente

press_button

Presionar botones físicos (home / lock / siri)

get_ui_hierarchy

Obtener el árbol de accesibilidad de la UI (formato JSON)

tap_element

Buscar elementos por texto y hacer clic en sus coordenadas centrales

Interceptación de red

start_network_proxy

Iniciar proxy mitmproxy (puerto 8080 por defecto)

stop_network_proxy

Detener proxy

get_network_log

Ver registros de captura (soporta filtrado por URL y método)

add_mock_rule

Añadir regla de Mock (coincidencia por expresión regular de URL)

remove_mock_rule

Eliminar regla de Mock

18 herramientas en total, cubriendo los tres escenarios principales: gestión de dispositivos, automatización de UI e interceptación de red.

Related MCP server: Shotter

Dependencias previas

Dependencia

Uso

Método de instalación

Xcode

Proporciona el comando xcrun simctl

Mac App Store

idb-companion

Demonio nativo de fb-idb (automatización de UI)

brew install idb-companion

Python >= 3.11

Tiempo de ejecución

brew install python@3.11 o superior

uv (recomendado)

Gestión de paquetes

brew install uv

El archivo proxy-dylib/libproxy_inject.dylib incluido en el repositorio es un producto precompilado para arm64; los Mac con Intel necesitan recompilar la versión x86_64 o universal por su cuenta.

Instalación

cd simulator-mcp

# 方式一:uv(推荐)
uv venv && uv pip install -e .

# 方式二:pip
python -m venv .venv && source .venv/bin/activate && pip install -e .

Dependencias de Python (instalación automática):

  • mcp >= 1.0 — SDK del protocolo MCP (stdio JSON-RPC)

  • mitmproxy >= 10.0 — Proxy HTTP(S)

  • fb-idb — Automatización de UI para simuladores de iOS

Configuración en Claude Code

Añadir a mcpServers en ~/.claude.json:

{
  "mcpServers": {
    "simulator": {
      "command": "/path/to/simulator-mcp/.venv/bin/simulator-mcp"
    }
  }
}

Configuración en Claude Desktop

Añadir a ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "simulator": {
      "command": "/path/to/simulator-mcp/.venv/bin/simulator-mcp"
    }
  }
}

Reemplace /path/to/simulator-mcp con la ruta absoluta real del proyecto.

Ejemplo de uso

Una vez configurado, la IA puede controlar directamente el simulador:

用户: 打开模拟器,截图看看当前页面
AI:  调用 list_devices → boot_device → take_screenshot
     "当前页面显示的是 iOS 主屏幕..."

用户: 打开微博,点击注册按钮
AI:  调用 launch_app → take_screenshot → tap_element(text="注册")
     "已点击注册按钮,进入了注册页面"

用户: 抓包看看注册接口返回了什么
AI:  调用 start_network_proxy → launch_app(proxy=true) → get_network_log(url_pattern="register")
     "注册接口返回了 200,响应体是..."

用户: Mock 掉登录接口,返回自定义数据
AI:  调用 add_mock_rule(url_pattern="api/login", response_body='{"token":"fake"}')
     "已添加 Mock 规则 mock_1"

Notas sobre la captura de red

Flujo de uso

  1. Iniciar proxy: start_network_proxy(port=8080)

    • Inicia automáticamente mitmproxy en un hilo en segundo plano

    • Si ya hay un simulador iniciado (booted), intentará instalar primero el certificado CA de mitmproxy

  2. Iniciar APP con proxy: launch_app(udid="xxx", bundle_id="com.example.app", proxy=true)

    • Inyecta libproxy_inject.dylib mediante DYLD_INSERT_LIBRARIES

    • Swizzle de NSURLSessionConfiguration para redirigir todo el tráfico HTTP(S) al proxy

    • Instalará nuevamente el certificado CA en el simulador objetivo para evitar fallos en la captura HTTPS si el proxy se inicia después del simulador

  3. Ver/Mock peticiones:

    • get_network_log(url_pattern="api/user") — Filtrar por subcadena de URL

    • add_mock_rule(url_pattern="api/login", response_body="...") — Coincidencia por expresión regular de URL

Principios técnicos

App 启动 → dylib 注入 → swizzle NSURLSessionConfiguration
  → 所有 NSURLSession 流量 → mitmproxy (127.0.0.1:8080)
    → MockEngine 检查规则 → 命中则返回假数据 / 未命中则转发真实服务器
    → NetworkLog 记录请求/响应(内存环形缓冲,最多 1000 条)
    → 同时落盘:
      - `/tmp/proxy_requests.log`:摘要日志
      - `/tmp/proxy_requests.jsonl`:结构化明细日志
      - `/tmp/proxy_request_bodies/`:超大 body 的分流文件

Estructura del proyecto

simulator-mcp/
├── pyproject.toml                 # 项目配置、依赖、入口定义
├── README.md                      # 本文件
├── ARCHITECTURE.md                # 技术架构详细文档
├── diagrams/                      # Mermaid 源文件 + PNG 架构图
├── proxy-dylib/
│   ├── proxy_inject.m             # DYLD 注入源码 (Objective-C, 95 行)
│   └── libproxy_inject.dylib      # 编译产物 (当前为 arm64)
└── src/simulator_mcp/
    ├── __init__.py                # 入口: main() → asyncio.run(server.main())
    ├── __main__.py                # python -m simulator_mcp 入口
    ├── server.py                  # MCP Server: 18 个工具注册 + call_tool 分发
    ├── simulator/
    │   ├── simctl.py              # xcrun simctl 异步封装 (设备管理 + 截图)
    │   └── idb_client.py          # fb-idb 异步封装 (UI 交互 + tap_element)
    ├── tools/
    │   ├── device.py              # 设备管理工具 (参数解析 + proxy 注入逻辑)
    │   ├── screenshot.py          # 截图工具 (PNG → base64)
    │   ├── ui.py                  # UI 交互工具 (参数解析 → idb_client)
    │   └── network.py             # 网络工具 (参数解析 → proxy_server)
    └── proxy/
        ├── proxy_server.py        # mitmproxy 生命周期 + ProxyAddon + CA 证书安装
        ├── network_log.py         # 请求日志: 内存环形缓冲 + 结构化落盘
        └── mock_engine.py         # Mock 规则引擎: 正则匹配, 首条命中

Recompilar dylib (opcional)

Si se ha modificado proxy_inject.m:

cd proxy-dylib
clang -dynamiclib -framework Foundation \
  -arch arm64 -arch x86_64 \
  -o libproxy_inject.dylib \
  proxy_inject.m

Documentación de arquitectura

El diseño técnico detallado se encuentra en ARCHITECTURE.md.

F
license - not found
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to automate iOS Simulator interactions including device management, UI element interaction (tap, swipe, type), screenshot capture, and execution of YAML-defined navigation workflows.
    2
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    An MCP server that provides comprehensive tools for managing iOS simulators, including device control, app lifecycle management, and UI automation. It enables developers to boot devices, install apps, capture screenshots, and simulate user interactions through natural language commands.
    3
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent

  • Live browser debugging for AI assistants — DOM, console, network via MCP.

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/992429169/simulator-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server