MCP · Claude Code · Codex
Let your coding agent run builds on your iPhone
The agent works in Xcode on your Mac. Your phone is somewhere else. Nuticast’s MCP server lets the agent bring the phone into Xcode and run the build on it.
Updated
Short answer
Nuticast includes a local MCP server, nuticast mcp. Add it to Claude Code, Codex or any MCP client on the Mac that runs Xcode. The agent can then start a bridge to an iPhone on another Wi‑Fi, wait until Xcode sees it, and build with xcodebuild -destination id=<UDID>. The Mac and the iPhone need the same mesh VPN, and the iPhone has to be on Wi‑Fi, not cellular.
- 01
You ask
“Run the tests on my iPhone.” The phone can be on any Wi‑Fi, as long as it’s on the same mesh VPN as the Mac.
- 02
The agent bridges
It lists your saved devices, starts the Nuticast bridge and waits until Xcode sees the phone.
- 03
Xcode builds
It gets the device’s UDID and runs xcodebuild with that destination. The app lands on the phone in your hand.
Before you start
- Nuticast 1.0.17 or later in /Applications, from the download page or with Homebrew:
brew install --cask webwarrior06/tap/nuticast(tap). - The iPhone paired once next to the Mac and saved in Nuticast. How it works has the steps.
- The Mac and the iPhone on the same mesh VPN: Tailscale, ZeroTier, Netbird or another one through Manual IP.
- A license, activated once in your own Terminal. The agent never sees the key:
/Applications/Nuticast.app/Contents/Helpers/nuticast license activate
Add it to your agent
Claude Code
Adds the MCP server for every project. The Claude plugin, which also adds a skill that teaches the order of the tools, is in review for Anthropic’s plugin directory.
claude mcp add --scope user nuticast -- /Applications/Nuticast.app/Contents/Helpers/nuticast mcpCodex
Installs the plugin (MCP server plus skill) from its marketplace repository. Start a new session afterwards.
codex plugin marketplace add webwarrior06/nuticast-codex-plugin
codex plugin add nuticast@nuticastClaude Desktop and other MCP clients
Any client that starts local stdio servers. Add this to its MCP config (for Claude Desktop: Settings → Developer → Edit Config).
{
"mcpServers": {
"nuticast": {
"command": "/Applications/Nuticast.app/Contents/Helpers/nuticast",
"args": ["mcp"]
}
}
}Plugin sources and full docs: Claude plugin · Codex plugin
The 13 tools
It can’t delete devices, touch the license or install apps.
| Tool | What it does | Changes |
|---|---|---|
| nuticast_list_devices | Lists saved iPhones and how each is reached | No |
| nuticast_list_mesh_peers | Asks Tailscale and Netbird for the devices on your network | No |
| nuticast_scan_lan | Finds iPhones advertising wireless debugging on this Wi‑Fi | No |
| nuticast_list_xcode_devices | Lists the devices Xcode can see, with UDIDs | No |
| nuticast_bridge_status | Shows which devices are bridged by the command line | No |
| nuticast_wait_for_bridge | Waits for a bridge to come up | No |
| nuticast_get_logs | Reads the last lines of the Nuticast log (at most 200) | No |
| nuticast_license_status | Shows whether this Mac is licensed | No |
| nuticast_add_device | Saves an iPhone with its mesh VPN device (phone on this Mac’s Wi‑Fi or plugged in) | Saves a device |
| nuticast_diagnose | Probes a device over the mesh; saves a moved port | Saves a port |
| nuticast_start_bridge | Starts a bridge for a saved device | Starts a process |
| nuticast_ensure_device_ready | Starts the bridge if needed and waits for Xcode | Starts a process |
| nuticast_stop_bridge | Stops a command-line bridge | Ends a debug session |
Without MCP: the command line
Agents that only run shell commands can use the same nuticast tool. Every command takes --json and returns a distinct exit code, and the bridge runs without the menu bar app, so it works on a headless Mac.
nuticast devices --json- Saved devices, machine-readable
nuticast up <device> --detach- Start a bridge without the menu bar app, then return
nuticast status- Which devices are bridged right now
nuticast diagnose <device>- Probe the phone over the mesh and report what answers
nuticast down <device>- Stop a bridge started with up
Limits
- The iPhone has to be on Wi‑Fi. Cellular doesn’t work; another phone’s hotspot does.
- The first pairing happens next to the Mac. After that the phone can be anywhere.
- The MCP server runs on the Mac with Xcode, so cloud agents and mobile apps can’t use it.
- The Mac has to stay awake and on its network.
- While the phone is on the Mac’s own Wi‑Fi, Xcode already sees it and the bridge isn’t needed.
The longer story, with TestFlight compared: test AI agent builds on a real iPhone when you’re away from your Mac.
Questions
Can Claude Code or Codex build and run my app on a real iPhone that isn’t on the Mac’s Wi‑Fi?
Yes, if the Mac and the iPhone are on the same mesh VPN (Tailscale, ZeroTier, Netbird or another one through Manual IP) and the iPhone is on any Wi‑Fi. Nuticast’s MCP server lets the agent start the bridge and wait for Xcode; the agent then builds with xcodebuild against the phone’s UDID.
Does the agent see my Nuticast license key?
No. No tool reads, activates or deactivates a license. If the Mac isn’t licensed, the agent asks you to run nuticast license activate in your own Terminal, which reads the key from a hidden prompt.
Does the Nuticast menu bar app have to be running?
No. The MCP server and nuticast up run their own bridge, so this works on a headless Mac. Devices are shared with the app; don’t bridge the same device from both.
Does it work with Cursor or other MCP clients?
Any client that can start a local stdio MCP server can run nuticast mcp. It has to run on the Mac that has Xcode and Nuticast, so cloud-hosted agents and mobile apps can’t use it.
Does it work when the iPhone is on cellular?
No. The iPhone has to be on Wi‑Fi. Any Wi‑Fi works, including another phone’s Personal Hotspot.
What does it cost?
The MCP server ships inside the Nuticast app. Reading devices is free; starting a bridge needs a Nuticast license, the same as in the app.