home / mcp / mcp server for ios simulator mcp server
Model Context Protocol (MCP) implementation for iOS simulators
Configuration
View docs{
"mcpServers": {
"atom2ueki-mcp-server-ios-simulator": {
"command": "node",
"args": [
"/path/to/your/mcp-server-ios-simulator/dist/index.js"
],
"env": {
"SIMULATOR_TIMEOUT": "30000",
"SIMULATOR_DEFAULT_OS": "18.2",
"SIMULATOR_DEFAULT_DEVICE": "iPhone 16"
}
}
}
}You can manage iOS simulators programmatically using a dedicated MCP server that implements the Model Context Protocol over a stdio transport. This lets you boot, control, and interact with iOS simulators from MCP clients in a consistent, scriptable way, while keeping logs separate from the transport channel for reliability and debugging.
Use an MCP client to connect to the local MCP server over stdio. The server exposes a set of MCP tools that let you list, boot, shut down, and manage simulators, as well as install and launch apps, take screenshots, and simulate taps. For example, you can boot a simulator by its UDID, then perform actions on it or start applications. If you want to run multiple simulators concurrently, you can create and manage separate sessions.
To integrate with an MCP client such as Claude Desktop, configure the client to launch the MCP server as a local process. The server is started via a standard Node.js command that points to the built entry file.
Prerequisites you need before installing and running the server:
⢠Node.js v16 or later
⢠macOS with Xcode installed and iOS simulators available
⢠TypeScript 4.5+ if you build from source
Step-by-step installation and setup:
1) Install via package manager (example shown) ā you can also clone and install locally if you prefer.
2) Build the project to generate the runtime artifacts.
3) Start the MCP server so it can accept MCP client connections.
const config = {
simulator: {
defaultDevice: process.env.SIMULATOR_DEFAULT_DEVICE || 'iPhone 16',
defaultOS: process.env.SIMULATOR_DEFAULT_OS || '18.2',
timeout: parseInt(process.env.SIMULATOR_TIMEOUT || '30000', 10),
}
};Environment variables you can set to customize behavior include SIMULATOR_DEFAULT_DEVICE for the default device, SIMULATOR_DEFAULT_OS for the OS version, and SIMULATOR_TIMEOUT for operation timeouts. These are read by the server at startup.
{
"mcpServers": {
"simulator": {
"command": "node",
"args": [
"/path/to/your/mcp-server-ios-simulator/dist/index.js"
]
}
}
}This server is structured to separate concerns: a simulator management layer, an MCP protocol implementation, a stdio transport bridge, and a file-based logger. This modular design helps you scale to multiple concurrent simulator sessions without transport interference.
- The server uses stdio as its transport, which is ideal for Claude Desktop and other MCP clients that support the MCP protocol over a local process bridge.
- Logging is performed to files to avoid cluttering the stdio stream and to provide reliable post-run diagnostics.
List all available iOS simulators along with their UDIDs so you can reference them for direct management.
Boot a specific simulator by its UDID to start interacting with it.
Shut down a specific simulator using its UDID.
Show all simulators currently booted and ready for app operations.
List all active simulator sessions tracked by the server.
Create a new simulator session and begin tracking it with a session ID.
Terminate a simulator session, shutting down the associated simulator and cleaning up session state.
Create a new simulator session and boot the corresponding simulator in one step.
Boot a simulator that is associated with an existing session.
Shutdown the simulator associated with an existing session.
Install an application on a target simulator.
Launch an installed application on a target simulator.
Terminate a running application on a simulator.
Capture a screenshot of the current simulator screen.
Perform a tap at specified screen coordinates on the simulator.