The MCP server for iOS simulator provides a bridge between Large Language Models (LLMs) and iOS simulators, allowing you to control iOS simulators through natural language commands. It enables simulator control, app management, UI interactions, and advanced debugging features through simple text instructions.
The easiest installation method 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.
You can also install the server 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
The installation process will:
Note: Keep the virtual environment activated while using the server. If you close your terminal, reactivate with source venv/bin/activate
before running npm start
.
To use this server with Claude or other LLM assistants:
{
"mcpServers": {
"ios-simulator": {
"command": "node",
"args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"],
"env": {}
}
}
}
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
import { createMCPServer } from 'mcp-server-simulator-ios-idb';
async function main() {
// Create an instance of the MCP server
const { orchestrator } = createMCPServer();
// 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);
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);
create session
, create simulator iPhone 12
terminate session
, close simulator
list simulators
, show simulators
list booted simulators
boot simulator 5A321B8F-4D85-4267-9F79-2F5C91D142C2
shutdown simulator 5A321B8F-4D85-4267-9F79-2F5C91D142C2
focus simulator
, bring simulator to front
list simulator sessions
install app /path/to/app.ipa
launch app com.example.app
terminate app com.example.app
uninstall app com.example.app
list apps
, show installed apps
is app com.example.app installed
tap at 100, 200
swipe from 100, 200 to 300, 400
press button HOME
, press button SIRI
input text Hello World
press key 4
press key sequence 4 5 6
describe all elements
, show accessibility elements
describe point 100, 200
, what's at 150, 300
take screenshot
, capture screen
record video /path/output.mp4
stop recording
, stop video recording
get logs
, get logs for com.example.app
debug app com.example.app
stop debug
, terminate debug session
debug status
, show debug info
list crash logs
, show crash logs
show crash log crash_2023-01-01
delete crash logs
, clear crash logs
install dylib /path/to/library.dylib
open url https://example.com
clear keychain
set location 37.7749, -122.4194
add media /path/to/image.jpg
approve permissions com.example.app photos camera
update contacts /path/to/contacts.sqlite
There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json
file so that it is available in all of your projects.
If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json
file.
To add a global MCP server go to Cursor Settings > MCP and click "Add new global MCP server".
When you click that button the ~/.cursor/mcp.json
file will be opened and you can add your server like this:
{
"mcpServers": {
"cursor-rules-mcp": {
"command": "npx",
"args": [
"-y",
"cursor-rules-mcp"
]
}
}
}
To add an MCP server to a project you can create a new .cursor/mcp.json
file or add it to the existing one. This will look exactly the same as the global MCP server example above.
Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.
The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.
You can also explictly ask the agent to use the tool by mentioning the tool name and describing what the function does.