MCP Server for iOS Simulator

by inditextech

50 stars
476 downloads
Not rated
GitHub

About

Enables iOS simulator automation via Facebook's IDB tool, allowing control of simulators, app launching, screenshot capture, and UI interactions through natural language commands

Details

Author
inditextech
Repository
InditexTech/mcp-server-simulator-ios-idb
GitHub stars
50
Downloads
476
License
Apache License 2.0
Categories
Developer Tools, Other, Productivity, Design, AI, Automation, Frontend
Tags
#mobile

- Additional functionality includes:
- Location simulation
- Media injection
- URL scheme handling
- Contact database management
- Keychain operations

For detailed usage, see the Installation guide and Supported Commands sections. You can use this server either through direct MCP integration or as a standalone library.

Check out the Architecture section to understand how the components work together to enable natural language control of iOS simulators.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name MCP Server for iOS Simulator
    Command (node, npx, python, etc.) node
    Arguments
    • Argument 1 /path/to/mcp-server-simulator-ios-idb/dist/index.js

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

The easiest way to install this server is through Cline:

1. Simply ask Cline:

Add this mcp to cline https://github.com/InditexTech/mcp-server-simulator-ios-idb

2. Cline will handle the installation process automatically, including dependency management and configuration.

Alternatively, you can install it manually:

```bash

python3 -m venv venv
source venv/bin/activate # On Unix/macOS

npm install

Create session

Creates a new simulator session. Example: 'create session', 'create simulator iPhone 12'.

Terminate session

Terminates the current session. Example: 'terminate session', 'close simulator'.

List simulators

Lists available simulators. Example: 'list simulators', 'show simulators'.

List booted simulators

Lists running simulators. Example: 'list booted simulators', 'show running simulators'.

Boot simulator

Boots a simulator by UDID. Example: 'boot simulator 5A321B8F-4D85-4267-9F79-2F5C91D142C2'.

Shutdown simulator

Shuts down a simulator. Example: 'shutdown simulator 5A321B8F-4D85-4267-9F79-2F5C91D142C2'.

Focus simulator

Brings simulator window to front. Example: 'focus simulator', 'bring simulator to front'.

List simulator sessions

Lists active simulator sessions. Example: 'list simulator sessions', 'show active sessions'.

Install app

Installs an app on the simulator. Example: 'install app /path/to/app.ipa'.

Launch app

Launches an app on the simulator. Example: 'launch app com.example.app'.

Terminate app

Terminates a running app. Example: 'terminate app com.example.app'.

Uninstall app

Uninstalls an app. Example: 'uninstall app com.example.app'.

List apps

Lists installed applications. Example: 'list apps', 'show installed apps'.

Check if app installed

Checks if an app is installed. Example: 'is app com.example.app installed'.

Tap

Taps at specific coordinates. Example: 'tap at 100, 200'.

Swipe

Performs a swipe gesture. Example: 'swipe from 100, 200 to 300, 400'.

Press button

Presses a device button. Example: 'press button HOME', 'press button SIRI'.

Input text

Types text. Example: 'input text Hello World'.

Press key

Presses a key by code. Example: 'press key 4'.

Press key sequence

Presses a sequence of keys. Example: 'press key sequence 4 5 6'.

Describe elements

Lists all accessibility elements. Example: 'describe all elements', 'show accessibility elements'.

Describe point

Describes element at coordinates. Example: 'describe point 100, 200', 'what's at 150, 300'.

Take screenshot

Captures a screenshot. Example: 'take screenshot', 'capture screen'.

Record video

Records screen activity. Example: 'record video /path/output.mp4'.

Stop recording

Stops video recording. Example: 'stop recording', 'stop video recording'.

Get logs

Retrieves system or app logs. Example: 'get logs', 'get logs for com.example.app'.

Start debug

Starts a debug session. Example: 'debug app com.example.app', 'start debug com.example.app'.

Stop debug

Stops a debug session. Example: 'stop debug', 'terminate debug session'.

Debug status

Gets debug session status. Example: 'debug status', 'show debug info'.

List crash logs

Lists available crash logs. Example: 'list crash logs', 'show crash logs'.

Show crash log

Shows content of a crash log. Example: 'show crash log crash_2023-01-01'.

Delete crash logs

Deletes crash logs. Example: 'delete crash logs', 'clear crash logs'.

Install dylib

Installs a dynamic library. Example: 'install dylib /path/to/library.dylib'.

Open URL

Opens a URL in the simulator. Example: 'open url https://example.com'.

Clear keychain

Clears the simulator's keychain. Example: 'clear keychain'.

Set location

Sets the simulator's location. Example: 'set location 37.7749, -122.4194'.

Add media

Adds media to the camera roll. Example: 'add media /path/to/image.jpg'.

Approve permissions

Approves app permissions. Example: 'approve permissions com.example.app photos camera'.

Update contacts

Updates contacts database. Example: 'update contacts /path/to/contacts.sqlite'.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "mcp server for ios simulator": {
            "env": {},
            "args": [
                "/path/to/mcp-server-simulator-ios-idb/dist/index.js"
            ],
            "command": "node"
        }
    }
}

Linux

{
    "env": [],
    "args": [
        "/path/to/mcp-server-simulator-ios-idb/dist/index.js"
    ],
    "command": "node"
}

Macos

{
    "env": [],
    "args": [
        "/path/to/mcp-server-simulator-ios-idb/dist/index.js"
    ],
    "command": "node"
}

Windows

{
    "env": [],
    "args": [
        "/path/to/mcp-server-simulator-ios-idb/dist/index.js"
    ],
    "command": "node"
}

An MCP server that enables LLMs to interact with iOS simulators through natural language commands.

A Model Context Protocol (MCP) server that enables LLMs to interact with iOS simulators through natural language commands.

This MCP server provides a bridge between Large Language Models (LLMs) and iOS simulators, offering comprehensive control through natural language commands. Here's what it can do:

For detailed usage, see the Installation guide and Supported Commands sections. You can use this server either through direct MCP integration or as a standalone library.

Check out the Architecture section to understand how the components work together to enable natural language control of iOS simulators.

- Create and manage simulator sessions
- Boot, shutdown, and monitor simulator states
- List available and running simulators
- Focus simulator windows

- Install and manage iOS applications
- Launch, terminate, and uninstall apps
- Monitor app states and verify installations
- Handle app permissions and configurations

- Interact with the simulator UI
- Execute tap, swipe, and button press actions
- Input text and key sequences
- Access accessibility elements for UI testing
- Record videos of UI interactions

- Capture screenshots and system logs
- Debug applications in real-time
- Monitor and analyze crash logs
- Install dynamic libraries and manage app data

- Additional functionality includes:

- Location simulation
- Media injection
- URL scheme handling
- Contact database management
- Keychain operations

For detailed usage, see the Installation guide and Supported Commands sections. You can use this server either through direct MCP integration or as a standalone library.

Check out the Architecture section to understand how the components work together to enable natural language control of iOS simulators.

- macOS: Required for iOS simulator support
- Node.js: v14.0.0 or higher
- Homebrew: Required for installing dependencies
- XCode: With iOS simulators installed

The easiest way to install this server is through Cline:

Add this mcp to cline https://github.com/InditexTech/mcp-server-simulator-ios-idb

- Cline will handle the installation process automatically, including dependency management and configuration.

Alternatively, you can install it manually:

# Clone the repository git clone https://github.com/InditexTech/mcp-server-simulator-ios-idb.git cd mcp-server-simulator-ios-idb # Create and activate Python virtual environment python3 -m venv venv source venv/bin/activate # On Unix/macOS # Install dependencies npm install # Build the project npm run build # Start the project npm start # Run tests npm test

The installation process will automatically:
- Check if you're running macOS
- Install idb-companion via Homebrew
- Install fb-idb via pip in the virtual environment

Note: Make sure to keep the virtual environment activated while using the server. If you close your terminal and come back later, you'll need to reactivate the virtual environment with thesource venv/bin/activatecommand before runningnpm start.

To use this server with Claude or other LLM assistants:
- Add the server to your MCP settings in Claude Desktop:

{ "mcpServers": { "ios-simulator": { "command": "node", "args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"], "env": {} } } }

- The LLM can now use natural language commands to control iOS simulators:

create a simulator session with iPhone 14 install app /path/to/my-app.ipa launch app com.example.myapp tap at 100, 200 take a screenshot

You can also use this package as a library in your own projects:

import { createMCPServer } from 'mcp-server-simulator-ios-idb'; async function main() { // Create an instance of the MCP server const { orchestrator } = createMCPServer(); // Process natural language commands // Create a simulator session const sessionResult = await orchestrator.processInstruction('create session'); console.log(Session created: ${sessionResult.data}); // Interact with the simulator await orchestrator.processInstruction('tap at 100, 200'); // Capture a screenshot const screenshotResult = await orchestrator.processInstruction('take screenshot'); console.log(Screenshot saved at: ${screenshotResult.data}); } main().catch(console.error);

You can also use the individual components directly:

import { IDBManager, NLParser, MCPOrchestrator, ParserToOrchestrator, OrchestratorToIDB } from 'mcp-server-simulator-ios-idb'; // Create instances const idbManager = new IDBManager(); const parser = new NLParser(); const orchestrator = new MCPOrchestrator(parser, idbManager); // Use the components directly const sessionId = await idbManager.createSimulatorSession({ deviceName: 'iPhone 12', platformVersion: '15.0' }); await idbManager.tap(sessionId, 100, 200);
mcp-server-simulator-ios-idb/ ├── src/ # Source code │ ├── adapters/ # Adapter components │ ├── idb/ # IDB manager implementation │ ├── mcp/ # MCP server implementation │ ├── orchestrator/ # Command orchestrator │ ├── parser/ # Natural language parser │ └── index.ts # Main entry point ├── types/ # TypeScript type definitions ├── scripts/ # Installation scripts ├── package.json # Project configuration └── tsconfig.json # TypeScript configuration

The NLParser supports the following natural language commands:

The interface supports all commands available in the idb CLI tool, providing a comprehensive set of operations for iOS simulator automation.

The server consists of three main components:
- IDBManager: Low-level component that interacts directly with iOS simulators through idb.
- NLParser: Component that interprets natural language instructions and converts them into structured commands.
- MCPOrchestrator: Central component that coordinates interactions between the parser and the IDBManager.

These components are connected through adapters:

- ParserToOrchestrator: Converts parser results into orchestrator commands.
- OrchestratorToIDB: Translates orchestrator commands into IDBManager calls.

To use this server with the Model Context Protocol:

{ "mcpServers": { "ios-simulator": { "command": "node", "args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"], "env": {} } } }

- Connect to the server in your LLM application:

const result = await useMcpTool({ serverName: "ios-simulator", toolName: "process-instruction", arguments: { instruction: "create simulator session" } });

This project would not be possible withoutfacebook/idb, which provides the underlying iOS simulator control capabilities. We extend our sincere gratitude to the Facebook/Meta team and all contributors to the idb project for creating and maintaining such a powerful and reliable tool.

This tool is available as open source under the terms of the Apache-2.0.

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

Drives an Android emulator or a real device over adb: screenshots, UI hierarchy with true device-pixel coordinates, tap and type, app lifecycle, logcat, and Gradle builds and tests.

Interact with Android devices using the Android Debug Bridge (ADB).

AI 測試大師 — MCP server driving pytest / Jest / Cypress / Go / Maestro. Analyze, generate, run, advise. Web + Mobile (iOS/Android/BlueStacks).

Control Android devices using the Android Debug Bridge (ADB).

Control Android devices via the Android Debug Bridge (ADB).

Automate Android devices using the Gbox SDK.

Catch App Store rejections before they happen

An agentic toolkit to control, debug, and profile iOS and Android apps.

The deepest Android Debug Bridge MCP server — 147 tools from UI to baseband.

AI-powered E2E testing for 10 platforms. 253 MCP tools. Zero config. Test Flutter, React Native, iOS, Android, Web, Electron, Tauri, KMP, .NET MAUI from natural language.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.