Sign, install and manage sideloaded iOS apps with the Impactor sideloader.
Runs on your machine from its package; the steps are below.

At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Distributed as an MCP bundle (`https://github.com/YeetDisDude/impactor-mcp/releases/download/v2.6.5-2/impactor-mcp.mcpb`) — download it and import the bundle in your MCP client.

An MCP server that lets any AI agent or MCP client (Claude, Cursor, VS Code Copilot, Windsurf, ...) do everything the
Impactor sideloader does: sign in with an Apple ID (including
2FA), manage developer-portal certificates/devices/app IDs, sign and install .ipa files with
tweaks and customizations, install pairing files, and keep apps refreshed before they expire.
It is a standalone add-on. It builds against the official Impactor release (v2.6.5, fetched by
Cargo) and shares Impactor's data directory, so it works next to the stock Impactor app — you never
need a modified build of the app. Accounts you log into in the app show up here and vice versa.
Made by Claude. This MCP server, its installers and this README were written by Claude (Anthropic's AI model) via Claude Code. It is an unofficial companion project, not affiliated with or endorsed by the Impactor authors.
One request from the agent becomes the same steps you would click through in the Impactor app:


One line, nothing to clone or download by hand:
Windows (PowerShell):
irm https://raw.githubusercontent.com/YeetDisDude/impactor-mcp/main/install.ps1 | iex
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/YeetDisDude/impactor-mcp/main/install.sh | sh
The installer downloads the prebuilt binary for your platform from the latest
release (no Rust needed). If there is
none for your platform, it builds from source with cargo, installing Rust first if needed. It
then installs the binary to %LOCALAPPDATA%\impactor-mcp\impactor-mcp.exe (Windows) or
~/.local/bin/impactor-mcp, and registers it with Claude Code (claude mcp add, user scope) and
Claude Desktop (claude_desktop_config.json, a .bak copy is kept). Restart Claude Desktop
afterwards. Running install.ps1 / install.sh from a local clone also downloads the prebuilt
binary; it only compiles (that clone) with -FromSource / --from-source or when no prebuilt
binary exists for your platform.
Claude Desktop (one click): download impactor-mcp.mcpb from the latest
release and open it. Claude Desktop
installs it as an extension. The server is also listed in the
MCP Registry as io.github.YeetDisDude/impactor-mcp.
Passing options:
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/YeetDisDude/impactor-mcp/main/install.ps1))) -AutoRefresh
curl -fsSL https://raw.githubusercontent.com/YeetDisDude/impactor-mcp/main/install.sh | sh -s -- --auto-refresh
| Option (ps1 / sh) | Effect |
|---|---|
-NoClaudeCode / --no-claude-code | Don't register with Claude Code |
-NoDesktop / --no-desktop | Don't touch the Claude Desktop config |
-AutoRefresh / --auto-refresh | Refresh saved apps in the background (see below) |
-FromSource / --from-source | Build with cargo instead of downloading a prebuilt binary |
-NoAutoRefresh / --no-auto-refresh | Turn auto-refresh off when updating |
-Uninstall / --uninstall | Remove the binary and both registrations |
Run the same install command again. It replaces the binary with the latest release, even while
Claude is using it, and keeps your auto-refresh setting. Then restart Claude Desktop and any running
Claude Code sessions so they load the new version. If you installed the .mcpb extension, download
and open the new impactor-mcp.mcpb instead. If you used cargo install, re-run it with --force.
usbmuxd.winget install Microsoft.VisualStudio.2022.BuildTools), Xcode command line tools on macOS.cargo install --locked --git https://github.com/YeetDisDude/impactor-mcp impactor-mcp
claude mcp add --scope user impactor -- ~/.cargo/bin/impactor-mcp
Any other MCP client (Cursor, VS Code, Windsurf, Cline, ...) uses the same stdio entry in its MCP config:
{ "mcpServers": { "impactor": { "command": "/absolute/path/to/impactor-mcp", "args": [] } } }

| Area | Tools |
|---|---|
| Accounts | account_list, account_login, account_submit_2fa, account_cancel_login, account_switch, account_remove, account_teams, account_set_team, settings_set_locale |
| Developer portal | portal_account_info, portal_list_certificates, portal_revoke_certificate, portal_list_devices, portal_register_device, portal_list_app_ids, portal_delete_app_id, portal_list_app_groups, portal_download_profile, portal_export_certificate |
| Devices | device_list, device_info, device_pair, device_list_apps, device_install_app, device_install_pairing_file, device_install_profile, device_is_app_installed |
| Signing | package_inspect, sign_and_install, sign_list_app_types |
| Mach-O | macho_info, macho_edit |
| Auto-refresh | refresh_list, refresh_app_now, refresh_run_due, refresh_forget_app |
sign_and_install covers the app's whole install screen: Apple ID / ad-hoc / PEM / no-modify signing,
install and/or export, custom name / bundle id / version / icon / entitlements, single profile,
tweaks (.deb, .dylib, .framework, .bundle, .appex), the feature toggles (minimum OS, file
sharing, iPad fullscreen, game mode, ProMotion, Liquid Glass, ElleKit), pairing-file installation and
saving for auto-refresh. Long operations report MCP progress notifications.
Example prompts:
account_login opens a sign-in page on 127.0.0.1 in your browser. You type your
Apple ID, password and 2FA code there, so the password never goes through the agent or its
conversation. The agent waits for the result. Clients that allow it can still pass email and
password directly.-80045. This server builds against a
vendored copy of Impactor's omnisette crate (vendor/omnisette) that presents as an Android
device instead, the same fix as isideload 0.4.5. Remove vendor/ and the [patch] entry in
Cargo.toml once an Impactor release fixes it.IMPACTOR_MCP_ANISETTE_URL to its URL, or a comma-separated list in the order to try.allow_certificate_reset: true only if you accept that existing SideStore/AltStore installs break.refresh: true are re-signed before their 7-day profile
expires when you call refresh_run_due, or automatically every 3 minutes when the server runs
with IMPACTOR_MCP_AUTO_REFRESH=1. The Impactor app has its own refresh daemon; enable auto-refresh
in only one of them.accounts.json in %APPDATA%\PlumeImpactor (Windows) or
~/.config/PlumeImpactor. The app keeps a copy in memory, so changes made here (e.g. a new login)
may need an app restart to appear there.RUST_LOG=debug for detail.tag values in Cargo.toml and run
cargo update. Re-check whether vendor/omnisette is still needed.Pushing a tag such as v2.6.5 runs .github/workflows/release.yml. It builds Windows, macOS and
Linux binaries (x86_64 and arm64) and attaches them to the GitHub release that the installers
download from.
Built on Impactor by claration (MIT) and idevice. The MCP server itself was made by Claude.