The server is read-only until you set both readOnly false and allowWrites true, and even then a write-capable tool refuses the first call and returns an approval id that is one-use, time-limited and bound to the exact arguments. Keychains, Accounts, SMS, Mail and the system directories are blocked by default. Every operation is logged, without file contents or secrets.
A Node stdio MCP server on your computer that reaches an iOS device over SSH and SFTP. It knows the shapes an iOS investigator cares about: app bundles and data containers, binary plists, SQLite files, JavaScript bundles, and Mach-O binaries.
- Filesystem basics — `ios_list_dir`, `ios_stat`, `ios_exists`, `ios_hash_file`, and a capped, cached `ios_search_files`
- Reading — `ios_read_file`, `ios_read_file_chunk` for large or binary files, `ios_tail_file`, `ios_read_last_lines`, and `ios_read_plist`, which parses XML and binary plists into JSON-safe data
- App helpers that skip the slow recursive search — `ios_find_app`, `ios_list_apps`, `ios_resolve_app_container`, `ios_list_preferences`, `ios_read_preferences`
- SQLite — `ios_read_sqlite_schema`, and `ios_query_sqlite`, which allows only SELECT, PRAGMA, WITH and EXPLAIN
- React Native bundles — `ios_inspect_js_bundle` to classify one, `ios_decode_js_bundle` to beautify or run a Hermes decoder, `ios_list_hermes_decoders` when that fails
- Exporting — `ios_download_file` and `ios_zip_download` into an allow-listed local folder
- Diagnostics — `ios_doctor`, `ios_connection_doctor`, `ios_config`, `ios_diagnose_roots`, plus `ios_app` and `ios_snapshot_app` for a whole-app overview
- Writes, disabled unless you enable them — `ios_write_file`, `ios_append_file`, `ios_delete_file`, `ios_move_file`, `ios_copy_file`, `ios_mkdir`
Node.js 20+, OpenSSH running on the iOS device, and a computer that can already SSH to it — over Wi-Fi with the device's IP, or over USB by forwarding to a local port. The installer writes the client config for you: run it with `--client` naming Codex, Claude, OpenCode, VS Code or all, plus the host and password, and it backs up any existing config first. Connection settings can also come from IOS_FILES_MCP_HOST, IOS_FILES_MCP_USERNAME, IOS_FILES_MCP_PASSWORD and IOS_FILES_MCP_KEY_PATH.
One command plus a key — npm install github:xtofuub/ios-files-mcp, then supply credentials
