
MCP Server for iOS Simulator (idb)
Control iOS simulators with natural-language commands from your LLM, powered by Facebook's idb.
Add to your client
Copy the config for your MCP client and paste it into its config file.
git clone https://github.com/InditexTech/mcp-server-simulator-ios-idb.git && cd mcp-server-simulator-ios-idb && npm install && npm run buildPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"mcp-server-for-ios-simulator-idb": {
"command": "node",
"args": [
"/path/to/mcp-server-simulator-ios-idb/dist/index.js"
]
}
}
}Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- macOS (required for iOS simulator support)
- Node.js v14.0.0 or higher
- Homebrew (for installing dependencies)
- Xcode with iOS simulators installed
- idb-companion (installed via Homebrew) and fb-idb (installed via pip in a Python virtual environment)
About MCP Server for iOS Simulator (idb)
This MCP server provides a bridge between Large Language Models and iOS simulators, offering comprehensive control through natural language commands. It is built on three main components — IDBManager (interacts directly with simulators through idb), NLParser (interprets natural-language instructions into structured commands), and MCPOrchestrator (coordinates the parser and IDBManager) — connected via ParserToOrchestrator and OrchestratorToIDB adapters. Through MCP, an LLM sends instructions like 'create a simulator session with iPhone 14', 'install app /path/to/my-app.ipa', 'tap at 100, 200', or 'take a screenshot', and the server translates them into idb operations. It can also be consumed as a TypeScript library via createMCPServer() or by using the individual components directly.
Tools & capabilities (1)
process-instructionAccepts a natural-language `instruction` argument and executes it against the iOS simulator. Supports the full range of idb CLI operations: simulator management (create/terminate session, list/boot/shutdown/focus simulators), app management (install/launch/terminate/uninstall/list apps, check if installed), UI interaction (tap, swipe, press button, input text, press key/key sequence), accessibility (describe elements, describe point), capture and logs (take screenshot, record/stop video, get logs), debugging (start/stop debug, debug status), crash logs (list/show/delete), and additional commands (install dylib, open URL, clear keychain, set location, add media, approve permissions, update contacts).
When to use it
- Driving automated iOS UI tests through natural-language instructions from an LLM assistant
- Letting Claude or Cline create simulator sessions, install an .ipa, and launch an app hands-free
- Capturing screenshots, videos, and logs from a running simulator for debugging
- Inspecting accessibility elements to validate UI accessibility during development
- Simulating device conditions such as location, media in the camera roll, URL schemes, and app permissions
Security notes
Runs locally over stdio with no authentication. The server controls iOS simulators on the host via idb and can install apps, inject media, manage contacts, and perform keychain operations — only run it against trusted simulators and inputs. macOS-only; requires idb-companion (Homebrew) and fb-idb (pip in a Python venv) to be installed.
MCP Server for iOS Simulator (idb) FAQ
Does this work on Windows or Linux?
No. macOS is required because it depends on Xcode iOS simulators and Facebook's idb tooling.
How do I add it to Claude Desktop?
Add an entry under mcpServers in your Claude Desktop MCP settings with command 'node' and args pointing to the built dist/index.js, e.g. "/path/to/mcp-server-simulator-ios-idb/dist/index.js". You can then issue natural-language commands to control the simulator.
Can I use it without an MCP client?
Yes. The package can be imported as a TypeScript library via createMCPServer(), which returns an orchestrator whose processInstruction() method accepts natural-language commands; you can also use IDBManager, NLParser, and MCPOrchestrator directly.
Do I need to keep anything active while using it?
Yes. The Python virtual environment that holds fb-idb must stay activated; reactivate it with 'source venv/bin/activate' before running 'npm start' in a new terminal session.
Alternatives to MCP Server for iOS Simulator (idb)
Compare all alternatives →Microsoft's official browser-automation MCP using Playwright's accessibility tree (no vision model).
Up-to-date, version-specific library documentation injected into your coding agent.
LSP-powered coding agent toolkit: semantic symbol search, references and structural edits.
Compare MCP Server for iOS Simulator (idb) with: