Skip to content

Release history

ios-simulator-mcp releases

A Model Context Protocol (MCP) server for interacting with iOS simulators. This server allows you to interact with iOS simulators by getting information about them, controlling UI interactions, and inspecting UI elements.

All releases

9 shown

1.6.0 New feature
⚠ Upgrade required
  • SDK dependency alignment: upgraded `@modelcontextprotocol/sdk` to ^1.29.0 and `zod` to ^3.25.0
  • Documentation updates including CLAUDE.md references, README syntax correction, and record_video UDID docs
Notable features
  • `ui_find_element` tool for searchable accessibility tree with matching options
  • Optional `env` parameter in `launch_app` to pass environment variables at launch
  • `record_video` now accepts an optional `udid` parameter for targeted recording
Full changelog

iOS Simulator MCP 1.6.0

Features

  • ui_find_element Tool: New tool that searches the accessibility tree by label, unique identifier, and/or element type with configurable substring/exact matching and case sensitivity. Returns only matching elements instead of the full tree, dramatically reducing token usage in agent loops. Thanks @kattouf! (#51)

    https://github.com/user-attachments/assets/d108eefe-9784-4560-9048-aab67e9769a5

  • launch_app Environment Variables: Added an optional env parameter to launch_app that passes Record<string, string> entries to the target app via SIMCTL_CHILD_* environment variables at launch. Useful for feature flags, test fixtures, and dynamic configuration without rebuilding. Thanks @markgrover! (#47)

  • record_video UDID Support: The record_video tool now accepts an optional udid parameter instead of hardcoding "booted", enabling targeted recording when multiple simulators are running. Thanks @saen-ai! (#59)

Improvements

  • ui_view Robustness: Wrapped JSON.parse of idb output in error handling so the MCP server returns a clear error instead of crashing on malformed output. Added validation that screen frame dimensions are positive numbers.
  • ui_view Temp File Cleanup: Raw and compressed screenshot files are now deleted immediately after the image is read into memory instead of accumulating until process exit. Filenames include a random suffix to avoid collisions on rapid successive calls.
  • record_video Startup Detection: Added an exit listener so record_video rejects promptly with the captured stderr if the capture process dies during startup, instead of silently resolving after the timeout. Startup timeout bumped from 3s to 5s for slower machines.
  • SDK Dependency Alignment: Upgraded @modelcontextprotocol/sdk to ^1.29.0 and aligned zod to ^3.25.0 to match the SDK's peer dependency range.

Documentation

  • CLAUDE.md Doc References: Added a section pointing to README, CONTRIBUTING, QA, TROUBLESHOOTING, SECURITY, and CONTEXT files. (#48)
  • README claude mcp add Syntax: Corrected the claude mcp add command syntax in the README. Thanks @shmkane! (#45)
  • record_video UDID Docs: Documented the new udid parameter in the README tool reference.

Build

  • Version Bump: Updated the project version to 1.6.0.
1.5.2 New feature
Notable features
  • Added MCP tool annotations (`title`, `readOnlyHint`, `openWorldHint`) for client integration and discoverability.
  • Simplified npm publishing using GitHub trusted publishers, eliminating the need for `NPM_TOKEN` secret and provenance flags.
  • Upgraded workflow to use Node.js 24.x.
Full changelog

iOS Simulator MCP 1.5.2

Improvements

  • Tool Annotations: Added MCP tool annotations (title, readOnlyHint, openWorldHint) to all tools for better client integration and discoverability.
  • Simplified npm Publishing: Updated GitHub workflow to use npm trusted publishers, removing the need for NPM_TOKEN secret and provenance flags.
  • Node.js Version Update: Upgraded workflow to use Node.js 24.x for publishing.

Documentation

  • Troubleshooting Updates: Improved idb installation instructions with clearer asdf setup steps and corrected verification commands (idb -h instead of idb --version).
  • Cursor Commands: Migrated release automation from .cursor/rules to .cursor/commands format.

Build

  • Package.json Fixes: Corrected bin path format and repository URL format.
  • Version Bump: Updated the project version to 1.5.2.
v1.5.1 New feature
Notable features
  • Custom IDB Path Configuration via IOS_SIMULATOR_MCP_IDB_PATH
  • Enhanced IDB command handling with centralized idb() wrapper
Full changelog

iOS Simulator MCP v1.5.1

✨ Features

  • Custom IDB Path Configuration: Added support for custom IDB executable path via IOS_SIMULATOR_MCP_IDB_PATH environment variable, allowing users to specify a non-standard IDB installation location. Resolves #36

📈 Improvements

  • Enhanced IDB Command Handling: Centralized IDB command execution with the new idb() wrapper function
  • Path Validation: Added validation to ensure custom IDB path exists before use
  • Tilde Expansion: Added support for ~/ path expansion in the custom IDB path

📚 Documentation

  • Environment Variables: Added documentation for the new IOS_SIMULATOR_MCP_IDB_PATH environment variable with usage examples

📝 Internal Changes

  • Refactored all idb command invocations to use the centralized idb() function
  • Added getIdbPath() helper function for retrieving and validating the IDB executable path

🔧 Build

  • Version Bump: Updated the project version from 1.5.0 to 1.5.1
v1.5.0 New feature
Notable features
  • open_simulator: Opens the iOS Simulator application
  • install_app: Installs .app or .ipa bundles on the simulator
  • launch_app: Launches apps by bundle identifier with force termination support
Full changelog

iOS Simulator MCP v1.5.0

✨ Features

  • App Management Tools: Added three new tools for managing iOS apps on the simulator:
    • open_simulator - Opens the iOS Simulator application

      https://github.com/user-attachments/assets/b344e981-8a54-47aa-829b-9228b7ac9d51

    • install_app - Installs app bundles (.app or .ipa files) on the simulator

      https://github.com/user-attachments/assets/09d991f6-0457-4c1b-b367-9075ae84c2a5

    • launch_app - Launches apps by bundle identifier with support for force termination of currently running apps.

      https://github.com/user-attachments/assets/18d9b341-915d-444f-bec6-0eb56c4871b1

Thank you @webcoyote for this contribution in #39!

🔒 Security

  • Dependency Updates: Updated project dependencies:
    • @modelcontextprotocol/sdk upgraded from 1.6.0 to 1.18.2
    • zod upgraded from 3.24.2 to 3.25.76
    • @modelcontextprotocol/inspector upgraded from 0.4.1 to 0.16.8

📚 Documentation

  • Contributing Guidelines: Added detailed dependency management guidelines to CONTRIBUTING.md to ensure compatibility with MCP SDK during upgrades
  • QA Documentation: Updated test case for Photos app to include compatibility notes for different iOS versions

🔧 Build

  • Version Bump: Updated the project version from 1.4.3 to 1.5.0 in package.json and package-lock.json
v1.4.3 New feature
Notable features
  • Optional `duration` parameter in `ui_swipe` allowing decimal second values for swipe precision
Full changelog

iOS Simulator MCP v1.4.3

🌟 Features

  • Swipe Duration Parameter: Added optional duration parameter to the ui_swipe tool, allowing more precise control over swipe gestures with decimal second values (e.g., 0.1 for quick swipes). Thank you to @dennislysenko for your contribution!

https://github.com/user-attachments/assets/1fb630ed-208f-4521-a893-baa1f7ec7c6c

📚 Documentation

  • Featured Publications Section: Added a new section to README highlighting project mentions in various publications including Anthropic's engineering blog, React Native Newsletter, Mobile Automation Newsletter, and awesome-mcp-servers collection
  • Contributing Guidelines: Introduced comprehensive CONTRIBUTING.md file outlining contribution process, project philosophy, testing requirements, and development setup
  • Pull Request Template: Added standardized PR template to ensure consistent contribution quality and testing procedures

🔧 Build

  • Version Bump: Updated the project version to v1.4.3
v1.4.2 New feature
Notable features
  • Support for IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR environment variable to set default output directory
Full changelog

iOS Simulator MCP v1.4.2

Features

  • Enhanced Default Output Directory: Added support for IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR environment variable to customize the default directory for screenshots and video recordings. If not set, continues to use ~/Downloads as the fallback.

Documentation

  • Restructured Tools Section: Reorganized the README to provide detailed descriptions and TypeScript parameter definitions for each tool (get_booted_sim_id, ui_describe_all, ui_tap, ui_type, ui_swipe, ui_describe_point, ui_view, screenshot, record_video, stop_recording).
  • Enhanced Environment Variables Documentation: Added a comprehensive table explaining all available environment variables with examples.

Build

  • Version Bump: Updated the project version to v1.4.2.
v1.4.1 Bug fix

Fixed screenshot scaling mismatch causing inaccurate tap targeting.

Full changelog

iOS Simulator MCP v1.4.1

🐛 Bug Fixes

  • Screenshot Scaling Fix: Fixed screenshot scaling to match point coordinates for accurate tap targeting. This resolves issues where UI interactions would miss their intended targets due to coordinate system mismatches between screenshots and actual simulator dimensions. Thank you @riwsky for the contribution!

https://github.com/user-attachments/assets/fd59ad81-1b4c-42db-8a9e-919aa3ba53d9

📚 Documentation

  • Added "Add to Cursor" Button: Included a convenient installation button for Cursor IDE users in the README.
  • MCP Registry Server Listings: Added a dedicated section showcasing server listings and security badges.
  • Enhanced Troubleshooting Guide: Added guidance about simulator screen dimensions and coordinate adjustments for AI agents.
  • Updated QA Documentation: Replaced stop_recording with ui_view in test cases for improved clarity on page viewing functionality.
  • Feature Documentation: Updated README to highlight the new capability for AI agents to view the simulator screen.

🔧 Build

  • Version Bump: Updated the project version to v1.4.1.
v1.4.0 New feature
Notable features
  • Added `ui_view` tool to capture PNG screenshots and compress them to JPEG with error handling and temporary file management.
  • Enhanced temporary file handling with dedicated directory creation and cleanup on server shutdown.
  • Improved comprehensive error handling for screenshot capture operations.
Full changelog

iOS Simulator MCP v1.4.0

Features

  • UI View Tool: Added ui_view tool to capture and compress screenshots of the iOS simulator view. This tool automatically captures PNG screenshots and compresses them to JPEG format for efficient transmission, with proper error handling and temporary file management.

Improvements

  • Enhanced File Management: Improved temporary file handling with dedicated temporary directory creation and cleanup on server shutdown.
  • Better Error Handling: Added comprehensive error handling for screenshot capture operations.

Documentation

  • Added Context Documentation: Introduced CONTEXT.md file with relevant references for project development, including MCP docs, iOS simulator command line references, idb commands, image compression tools, and security considerations.

Build

  • Version Bump: Updated the project version to 1.4.0.

https://github.com/user-attachments/assets/323e62b4-0b54-4e37-bd26-7f0a373a432d

v1.3.3 Security relevant
⚠ Upgrade required
  • Update to version 1.3.3 or later to mitigate the command injection vulnerability.
  • Review updated SECURITY.md and README.md for security notice and installation instructions.
Security fixes
  • Patched Command Injection Vulnerability: Replaced child_process.exec with child_process.execFile, added strict input validation using zod, and introduced -- separator for secure argument handling across tools (ui_tap, ui_type, ui_swipe, ui_describe_point, ui_describe_all, screenshot, record_video, stop_recording).
Full changelog

iOS Simulator MCP v1.3.3

[!WARNING]
Security Notice: This release addresses a command injection vulnerability (moderate severity) present in versions < 1.3.3. Please update to v1.3.3 or later. This vulnerability is described in Snyks article on Exploiting MCP Servers Vulnerable to Command Injection.

Security Fixes

  • Patched Command Injection Vulnerability: Replaced child_process.exec with the more secure child_process.execFile. This mitigates command injection risks by ensuring user-provided inputs are treated as distinct arguments and not interpreted by the shell, following best practices from the Node.js security community.
  • Strict Input Validation: Implemented robust input validation using zod for all user-provided arguments, including regex checks for UDIDs and length limits for paths and text.
  • Secure Argument Handling: Added a -- separator to commands to clearly distinguish options from positional arguments, preventing misinterpretation by the shell.

Affected Tools

The following tools have been secured:

  • ui_tap
  • ui_type
  • ui_swipe
  • ui_describe_point
  • ui_describe_all
  • screenshot
  • record_video
  • stop_recording

Documentation

  • Updated SECURITY.md: The security policy was updated with details about the vulnerability, its impact, and the fix.
  • Added QA.md: A new Quality Assurance guide (QA.md) was added with manual test cases.
  • Updated README.md: The README now includes a prominent security notice and updated installation instructions.

Build

  • Version Bump: The project version has been bumped to 1.3.3.

Beta — feedback welcome: [email protected]