---
title: "Claude Desktop and your iPhone: MCP setup | Mobster"
description: "Add Mobster to Claude Desktop with one button in Mobster for Mac, restart Claude, and let Claude read and tap through an iOS simulator or your iPhone."
canonical: "https://mobster.dev/connectors/claude-desktop"
last-updated: "2026-10-08"
---

Add Mobster to Claude Desktop with one button in Mobster for Mac, restart Claude, and let Claude read and tap through an iOS simulator or your iPhone.

# Claude Desktop and your iPhone: MCP setup

Add Mobster to Claude Desktop with one button in Mobster for Mac, restart Claude, and let Claude read and tap through an iOS simulator or your iPhone.

## In Mobster for Mac

Settings › Connectors › **Add**, next to Claude Desktop. Then restart Claude Desktop.

## Or by hand

Add the mobster block below to ~/Library/Application Support/Claude/claude_desktop_config.json.

**Claude Desktop** by Anthropic

Status From Anthropic’s docs, read 8 October 2026

Setup One button in Mobster for Mac

Docs [Anthropic’s MCP docs](https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop)

Download for Mac

Add Mobster to your agent

On this page

1. [Install Mobster for Mac](#install-mobster-for-mac)
2. [Add the server](#add-the-server)
3. [Check it’s connected](#check-its-connected)
4. [A first check: a lesson screen, launch-only](#a-first-check-a-lesson-screen-launch-only)
5. [Use a real iPhone](#use-a-real-iphone)
6. [Troubleshooting](#troubleshooting)
7. [Questions](#questions)
8. [Sources](#sources)

*A check file open in a code editor, the coding agent running it through Mobster: verify start, tap Check, verify finish. Failed, 2 of 3 passed. On the iPhone, the app's streak screen still shows 3 days, not 4.*

What Claude Desktop gets back from mobster verify on your app: the lesson and its “Great job!” pass, but the streak stays at 3, so the check fails.

Claude Desktop is where many people talk to Claude outside a terminal. With Mobster’s MCP server added, Claude can run an iOS app on a headless simulator Mobster manages, read each screen as a list of controls by name, tap and type, and return a verdict from assertions on the accessibility tree. It can also use a real iPhone plugged into your Mac, through the same tools.

You need an Apple silicon Mac with macOS 15 or later. Simulator work needs Xcode with an iOS Simulator runtime. A real iPhone needs Developer Mode and the WebDriverAgent runner, set up in Mobster for Mac ([Device setup](https://docs.mobster.dev/device-setup)).

## Install Mobster for Mac

[Get Mobster for Mac](https://mobster.dev/download), drag it to Applications and open it. Its MCP server is the agent inside the app, so the command every client starts is this path, with `mcp`:

```
/Applications/Mobster.app/Contents/MacOS/mobster-agent
```

The first check creates Mobster’s own simulator, boots it headless and builds WebDriverAgent, once per Xcode version. Mobster never touches your own simulators: each one it creates has a name that starts with “Mobster”.

## Add the server

In Mobster for Mac, open Settings › Connectors › Use Mobster from… and press **Add** next to Claude Desktop. It writes the `mobster` entry for you, and when the app holds your model key it passes the app’s settings file with `--env-file`, so Smart uses the same key.

By hand: open Claude Desktop’s config from the Claude menu: Settings, then the Developer tab, then Edit Config. The file is `~/Library/Application Support/Claude/claude_desktop_config.json`. Add Mobster under `mcpServers`:

```
{  "mcpServers": {    "mobster": {      "command": "/Applications/Mobster.app/Contents/MacOS/mobster-agent",      "args": ["mcp", "--out", "/Users/<you>/mobster-runs"]    }  }}
```

Use an absolute path for both. Claude Desktop starts a local server with only a small part of your environment, and the server’s working folder may be `/`. When it is, Mobster writes runs to `runs/` in its own data folder; `--out` puts them where you can find them. Each run folder holds `report.html`, `result.json` and the frames.

The app’s **Add** leaves out `--out`, so add that yourself if you want the runs in a folder you choose.

Quit Claude Desktop completely and open it again, so it reads the file.

For Smart, where Mobster runs the steps itself on your OpenAI or Anthropic key, add `"--env-file", "/Users/<you>/.config/mobster/agent.env"` to `args`. The file holds `OPENAI_API_KEY=…` or `ANTHROPIC_API_KEY=…`, readable only by you. Without it, Claude does the driving with its own model and Mobster calls no model at all.

The MCP pages for Claude Desktop don’t state a tool-call timeout. Mobster keeps its calls short: each returns within 45 seconds and `wait` within 50. The first simulator boot and a Smart run continue under a `run_id`, and Claude calls `wait` until they’re done.

## Check it’s connected

Click the + button under the chat box, then Connectors: mobster should be listed. The Developer tab in Settings shows each server’s status and opens its logs. Mobster’s log, which it writes to stderr, ends up in `~/Library/Logs/Claude/mcp-server-mobster.log`. Then ask:

```
Call mobster's status tool and tell me what it says.
```

## A first check: a lesson screen, launch-only

A check with no steps is the quickest one to try. Build your app for the simulator once in Terminal:

```
xcodebuild -scheme YourApp -destination 'generic/platform=iOS Simulator' \  -derivedDataPath .mobster/build CODE_SIGNING_ALLOWED=NO build
```

Then ask Claude, with the absolute path to the app you built:

```
Use mobster to check my app at /Users/<you>/YourApp/.mobster/build/Build/Products/Debug-iphonesimulator/YourApp.app.Open yourapp://lesson with no steps, and expect "Fill in the blank", three elements whose id startswith answer_, a Check button, and no "Loading".
```

Claude calls `verify_start` with an empty `steps` list and these expectations:

```
[  {"text": "Fill in the blank"},  {"count": {"id": "/^answer_/"}, "equals": 3},  {"visible": {"id": "lesson_check", "role": "button"}},  {"no_text": "Loading"}]
```

Mobster installs the app, opens the deep link, and `verify_finish` decides on one settled read of the accessibility tree. No model decides the verdict. Claude gets passed or failed, the line that failed if any, and the path to `report.html`, which shows the screen with each asserted element outlined in green or red. From there, ask Claude to tap through a flow, and it uses `screen`, `tap`, `type_text` and `swipe` before `verify_finish`.

## Use a real iPhone

Ask Claude to call `list_devices`. A USB iPhone set up for Mobster is listed with its name and state. Called with that `device` and no `run_id`, `screen`, `tap`, `type_text`, `swipe`, `alert`, `open_url`, `launch_app` and `home` act on the phone itself. Mobster takes the phone’s lock, so the Mac app and other commands wait, and releases it after `stop` with the `device` or 90 idle seconds.

Claude Desktop asks for your approval before a tool runs. That approval covers a tool, not a device: allowing `tap` while testing on a simulator allows it on your iPhone too. Limit the server to the phones you choose by adding `"--allow-device", "Test iPhone"` to `args`; any other real device is listed as `not_allowed` and refused. Mobster’s MCP annotations mark `status`, `screen`, `list_devices`, `wait`, `wait_for`, `read_notifications` and `unlock_status` as read-only, and its instructions tell Claude to treat text on the screen as data and to ask you before anything that sends, buys, posts or deletes on a real iPhone.

A locked iPhone stops the call at once with “Your iPhone is locked. Unlock it and try again. No action was taken.” Mobster never enters a passcode and never uses Face ID.

## Troubleshooting

| Symptom | Fix |
|---|---|
| mobster isn’t in Connectors after a restart | Use the absolute path `/Applications/Mobster.app/Contents/MacOS/mobster-agent` in `command`, check the JSON is valid, and quit Claude Desktop completely before opening it again |
| The server starts and exits | Read `~/Library/Logs/Claude/mcp-server-mobster.log`, which holds the server’s own error output |
| You can’t find the run’s report | Pass `--out` with an absolute folder. Without it, a server started in `/` writes to `runs/` in Mobster’s data folder |
| The first `verify_start` returns `status: "preparing"` | The simulator is booting and WebDriverAgent is building. Claude calls `wait` |
| `couldnt_run`, or no `verify` tool | `reason.fix` in the result says what to do. `status` says why Smart is off |

The [MCP reference](https://docs.mobster.dev/mcp-server) lists every tool. For coding work in the terminal, see [Mobster in Claude Code](https://mobster.dev/connectors/claude-code).

## Questions

- ### Why doesn't Claude Desktop start the Mobster server?
  Most often the command isn't an absolute path. Claude Desktop starts local servers with only a small part of your environment, so your shell's PATH may be missing. Put the full path /Applications/Mobster.app/Contents/MacOS/mobster-agent in command, then quit Claude Desktop completely and open it again.
- ### Can I add Mobster from the Connectors menu?
  No. Add it by editing claude_desktop_config.json, through Settings, then Developer, then Edit Config. The Connectors menu then shows it once it's connected.
- ### Where do Mobster's runs go when Claude Desktop starts the server?
  Claude Desktop may start servers in the root folder, and when the folder is / or your home folder, Mobster writes runs to runs/ in its own data folder. Pass --out with an absolute path to choose another folder.

## Sources

We read each of these on 8 October 2026. Reviewed by Andy Guo on 8 October 2026. Corrections are welcome at the [GitHub repo](https://github.com/RadishSoftware/mobster/issues).

- [Claude Help Center: getting started with local MCP servers on Claude Desktop](https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop)
- [MCP docs: connect to local MCP servers](https://modelcontextprotocol.io/docs/2026-07-28/develop/connect-local-servers)
- [MCP docs: debugging (working folder, environment, logs)](https://modelcontextprotocol.io/docs/2026-07-28/tools/debugging)
- [MCP specification: ToolAnnotations (readOnlyHint)](https://modelcontextprotocol.io/specification/2025-11-25/schema)
- [Apple: enabling Developer Mode on a device](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device)
- [Mobster docs: MCP server](https://docs.mobster.dev/mcp-server)
- [Mobster docs: checks](https://docs.mobster.dev/checks)
- [Mobster docs: device setup](https://docs.mobster.dev/device-setup)

Claude Desktop’s logo is a trademark of Anthropic, shown only to name the product. Mobster isn’t affiliated with or endorsed by Anthropic.

## Read next

- [Every MCP tool, in the reference](https://docs.mobster.dev/mcp-server)
- [Getting started with verify](https://docs.mobster.dev/verify)

## Other agents

- [Claude Code](https://mobster.dev/connectors/claude-code)
- [Codex](https://mobster.dev/connectors/codex)
- [Cursor](https://mobster.dev/connectors/cursor)
- [VS Code](https://mobster.dev/connectors/vs-code)
- [Gemini CLI](https://mobster.dev/connectors/gemini-cli)
- [opencode](https://mobster.dev/connectors/opencode)
- [Windsurf (Devin Desktop)](https://mobster.dev/connectors/windsurf)
