idb-mcp
Um servidor MCP que utiliza o Facebook IDB para automatizar simuladores iOS, fornecendo controle de dispositivos, ações de entrada e capturas de tela via HTTP, SSE ou stdio.
Documentação
IDB-MCP
Um servidor MCP de código aberto e biblioteca Python que encapsula o Facebook IDB para controlar simuladores iOS para automação. Criado pela AskUI.
Este projeto é baseado no CLI do Facebook IDB (fb-idb). Veja o repositório GitHub (facebook/idb) e o pacote Python (fb-idb no PyPI).
O que é
- Servidor MCP: Expõe um conjunto de ferramentas de automação iOS (listar/selecionar dispositivo, captura de tela, toque, deslizar, digitar, etc.) por meio de transportes MCP (HTTP, SSE ou stdio) usando
fastmcp. - Módulo Python: Importe para gerenciar e controlar simuladores iOS programaticamente.
Sumário
Principais recursos
- Gerenciamento de dispositivos 🔧: listar dispositivos, selecionar por UDID ou nome, iniciar/desligar, encerrar IDB.
- Controle de entrada 👆: toque, deslizar, digitar texto, tocar teclas, tocar botões.
- Utilitários de tela 🖼️: capturar capturas de tela, consultar tamanho da tela, obter descrição da visualização.
- Escalonamento de imagem/coordenadas 📐: escalonamento opcional para um viewport alvo para coordenadas consistentes.
Limitações
⚠️ Apenas simuladores iOS são suportados para controle de UI. Devido às restrições de segurança do iOS, idb não pode interagir ou automatizar a UI em dispositivos físicos reais. A AskUI oferece uma solução para automação de UI em dispositivos reais—entre em contato com support@askui.com para mais informações.
Requisitos
-
Funciona apenas em macOS.
-
Python >= 3.10
-
Xcode com Simuladores iOS instalados e configurados.
-
Verifique se os simuladores estão visíveis:
xcrun xctrace list devices
-
-
Companheiro Facebook IDB (usando
brew):brew tap facebook/fb brew install idb-companion
Instalação
pip install idb-mcp
Início rápido (CLI)
Por que MCP?
Usar MCP permite que suas ferramentas de IA favoritas se conectem ao idb-mcp perfeitamente. O cliente cuida do lançamento e da comunicação com o servidor, então você pode solicitar capturas de tela, toques, deslizes e muito mais—sem sair do seu fluxo de trabalho. ✨
Iniciar servidor MCP
O pacote instala um comando idb-mcp.
# Start MCP server over HTTP (default host/port managed by fastmcp)
idb-mcp start http
# Or start over SSE
idb-mcp start sse
# Or start over stdio
idb-mcp start stdio
# Optionally scale images/coordinates to a given target viewport (width height)
idb-mcp start http --target-screen-size 1280 800
# Discover available options
idb-mcp --help
idb-mcp start --help
Uso programático (Python)
from idb_mcp import IDBController, IOSDevice
# Initialize the IDB controller
controller = IDBController()
# Select the device by name
selected_device: IOSDevice = controller.select_device_by_name("iPhone 17 Pro Max")
# Boot the selected device
selected_device.boot()
# Get the current view description of the selected device
current_view_description: str = selected_device.get_current_view_description()
print(current_view_description)
# Shutdown the selected device
selected_device.shutdown()
Adicionar às suas ferramentas favoritas
Você pode usar idb-mcp em qualquer cliente compatível com MCP (por exemplo, Cursor, Claude Desktop) adicionando uma entrada de servidor ao arquivo de configuração MCP do seu cliente. O cliente iniciará o servidor sob demanda.
Passos:
- Abra o arquivo de configuração MCP do seu cliente (a localização varia conforme o cliente).
- Adicione uma entrada chamada
askui-idb-mcpque inicia o servidor via STDIO e define um tamanho de tela alvo recomendado.
Exemplo de configuração:
usando uv (certifique-se de ter o uv instalado):
{
"mcpServers": {
"askui-idb-mcp": {
"command": "uvx",
"args": [
"idb-mcp@latest",
"start",
"stdio",
"--target-screen-size",
"1280",
"800"
]
}
}
}
Alternativa (se idb-mcp estiver diretamente no seu PATH sem uv):
{
"mcpServers": {
"askui-idb-mcp": {
"command": "idb-mcp",
"args": [
"start",
"stdio",
"--target-screen-size",
"1280",
"800"
]
}
}
}
Observações:
- A configuração
--target-screen-size 1280 800melhora a confiabilidade das coordenadas, especialmente para modelos como Claude.
Configuração
- Tamanho da tela alvo 📐: Você pode escalar capturas de tela e entradas de coordenadas para um viewport alvo ao iniciar o servidor MCP via CLI (
--target-screen-size W H) ou programaticamente (target_screen_size=(W, H)). - Modo 📐: Você pode iniciar o servidor MCP no modo
stdio,httpousse. - Porta 📐: Você pode iniciar o servidor MCP em uma porta específica via CLI (
--port PORT) ou programaticamente (port=PORT).
Solução de problemas
-
Não consigo ver dispositivos 🔍: Certifique-se de ter um simulador iOS ou dispositivo conectado e em execução. Verifique com:
xcrun xctrace list devicesExemplo de saída:
iPhone 17 Simulator (26.0) (32E2219C-ED40-452F-9A4D-XXXXXXX) iPhone 17 Pro Simulator (26.0) (764CCCB7-D84D-46EC-B62D-XXXXXXX) iPhone 17 Pro Max Simulator (26.0) (065382B5-56B4-4864-8174-XXXXXXX) -
Capturas de tela de alta resolução com alguns LLMs 🧠: Alguns backends de LLM têm dificuldade em processar imagens de resolução muito alta, resultando em detecção de coordenadas ruim ou erros de toque. Use o redimensionamento via
--target-screen-size(outarget_screen_sizeem Python) para reduzir capturas de tela e coordenadas. Para modelos Claude, recomendamos1280 800.
Desenvolvimento
Este repositório usa PDM e Ruff para ferramentas de desenvolvimento.
# Install dev deps
pip install pdm
pdm install --with dev
# Lint / Format
pdm run lint-check
pdm run format-check
# Type check
pdm run type-check
Contribuindo
Contribuições são bem-vindas! 🙌 Por favor, abra uma issue ou pull request no GitHub. Perguntas? Envie um e-mail para support@askui.com.
Licença
Licença MIT
Links
- Página inicial: https://github.com/askui/idb-mcp
- AskUI: https://www.askui.com