Skip to content
Agentmart
Submit a tool

ios-agent

Drive a real iPhone or an iOS Simulator with an AI agent, through XCUIAutomation.

Connector by emazaheri · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 3
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/emazaheri-ios-agent

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Drive a real iPhone or an iOS Simulator with an AI agent, through XCUIAutomation.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
14 read · 14 write · 6 delete
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Tools by what they do 34

Read from the source code; the running server may list different tools.

Read 14 · Look things up without changing anything.

  • ios_doctor
  • ios_export_trace
  • ios_find
  • ios_get_logs
  • ios_list_apps
  • ios_list_devices
  • ios_observe
  • ios_read_text
  • ios_screenshot
  • ios_session_status
  • ios_wait_for
  • list_pages
Show 2 more tools
  • read_page
  • search_docs

Write 14 · Create, change, send or run things.

  • ios_clipboard
  • ios_close_session
  • ios_drag
  • ios_halt
  • ios_install_app
  • ios_launch_app
  • ios_open_session
  • ios_open_url
  • ios_press_button
  • ios_scroll
  • ios_set_device_state
  • ios_set_permission
Show 2 more tools
  • ios_swipe
  • ios_type_secret

Delete 6 · Delete, drop, revoke or wipe things.

  • ios_handle_alert
  • ios_resume
  • ios_set_value
  • ios_tap
  • ios_terminate_app
  • ios_type

Secrets and settings it asks for

Other settings (environment variables or headers).

  • IOS_MCP_POLICY__CONFIRM_DESTRUCTIVE
  • IOS_MCP_POLICY__ENABLED
  • IOS_MCP_SIMULATOR__SHOW_WINDOW
  • IOS_MCP_WDA__BUNDLE_ID

Network hosts it talks to 3

  • api.smith.langchain.com · found in code
  • emazaheri.github.io · found in code
  • github.com · found in code

Files it touches

  • /Library/Fonts/Arial.ttf
  • /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf
  • /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
  • Your home directory (~)
  • Any path the agent passes to its tools

Tools (34)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • ios_clipboard

    Read or write the device clipboard. Writing is often faster and more reliable than typing a long string, which the on-screen keyboard can mangle with autocorrect.

  • ios_close_session

    Release the device and shut down its WebDriverAgent runner.

  • ios_doctorread-only

    Check that this machine can drive an iOS device, and say how to fix what it can't. Run this first when a session fails to start, when a device does not appear, or after an Xcode or iOS upgrade. Every failing check comes with a concrete remedy.

  • ios_drag

    Drag one element onto another, for reordering lists and moving items.

  • ios_export_traceread-only

    Return the ordered record of everything this session has done. Useful for explaining what happened, and for turning a successful run into a regression test.

  • ios_findread-only

    Search the screen's accessibility tree, including what the digest hides. Prefer `ios_observe` with a `query` when you want a usable digest you can tap from: what it returns carries refs. Use this when `ios_observe` shows nothing matching but the text is on the device, or when a tap keeps missing. It reads the tree before compaction, so it reports matches the digest dropped, which `ios_observe` by construction cannot, and each one says whether it is `shown` or `hidden`. A hidden match is the diagnosis: the words are on screen and perception is why you cannot reach them. Name it by the `id` rep…

  • ios_get_logsread-only

    Read recent device logs. Useful when an app misbehaves and the UI does not say why.

  • ios_halt

    Stop this session from taking further action.

  • ios_handle_alertcan change or delete data

    Answer a system alert. Read the alert text before choosing. Accepting blindly is how an agent grants a permission or confirms a deletion nobody wanted.

  • ios_install_app

    Install an app from a local .app or .ipa.

  • ios_launch_app

    Bring an app to the foreground and return its screen.

  • ios_list_appsread-only

    List apps installed on the device, with their bundle identifiers.

  • ios_list_devicesread-only

    List iOS Simulators and attached physical iPhones available for automation. `ready` is false when something blocks automation; `blockers` says what.

  • ios_observeread-only

    Read the screen as a compact list of elements with short refs. Each line is one element: `e7 button "Send" @(340,70)`. Pass those refs to the action tools rather than coordinates. If the result says elements were omitted, narrow with `query` or `region` instead of raising `budget`; a smaller answer is usually the more useful one.

  • ios_open_session

    Attach to a device and start driving it. Boots the simulator or verifies the phone, starts WebDriverAgent, and opens a tuned session. Omitting `device` prefers an already-booted simulator over a connected iPhone, so acting on a real device is always a deliberate choice.

Show 19 more tools
  • ios_open_url

    Open a URL or deep link. Usually the cheapest way to reach a screen: a deep link skips the navigation an agent would otherwise have to tap through.

  • ios_press_button

    Press a hardware button or a keyboard key.

  • ios_read_textread-only

    Read the text of the screen, or of one element and everything inside it. Use this to extract content, rather than `ios_observe`, which is shaped for deciding what to tap.

  • ios_resume

    Clear a halt after a human has decided it is safe to continue.

  • ios_screenshotread-only

    Capture the screen as an image. Use this when an element has no accessibility label, when the layout matters, or when `ios_observe` cannot find something you can plainly see. With `annotate_refs` each element is boxed and labelled with its ref, so you can pick one by eye and pass it to an action tool. Annotating re-reads the screen first, so the refs on the image are the current ones rather than whatever was observed last. That costs a tree fetch, and needs the `vision` extra installed.

  • ios_scroll

    Scroll, optionally until some text comes into view. With `until`, this stops as soon as the text appears and gives up when the content stops moving, so it will not spin at the end of a list.

  • ios_session_statusread-only

    Report the current session: device, foreground app, and safety state.

  • ios_set_device_state

    Change device-level state. Appearance, location, and status bar are Simulator only.

  • ios_set_permission

    Set a privacy permission without going through the alert. Simulator only. On a real phone there is no API for this: drive the Settings app, or answer the permission alert with ios_handle_alert.

  • ios_set_valuecan change or delete data

    Set a switch, slider, or picker wheel to a value. 'on' or 'off' for a switch, a percentage such as '40%' or a fraction for a slider, and the option spelled the way the wheel spells it for a picker. A wheel is turned a row at a time and read back after each one, so an option it does not contain fails listing what it does. Prefer this over tapping a switch: it checks the current state first, so asking for 'on' when it is already on does nothing rather than turning it off. Steppers and segmented controls are not set this way. iOS reports their parts and the digest shows them, so tap 'Increment…

  • ios_swipe

    Swipe once, for carousels, page views, and swipe-to-reveal rows.

  • ios_tapcan change or delete data

    Tap an element and return the resulting screen. Prefer `ref` over `target`; it is exact and cannot be misread. Taps on things like Send, Pay, or Delete need approval first.

  • ios_terminate_app

    Force-quit an app.

  • ios_typecan change or delete data

    Type into a field, focusing it first when a ref or target is given. The field is read back afterwards. If the text did not land, the call fails with `typed.shown` saying what the field holds; `reformatted` means it landed with the app's own capitalisation or formatting.

  • ios_type_secret

    Type a stored secret without ever seeing its value. The value is read from the host keychain and sent straight to the device. Use this for every password and one-time code; never put a real credential into `ios_type`, where it would enter the transcript.

  • ios_wait_forread-only

    Wait for something to appear or disappear. Prefer this over guessing a sleep. It returns as soon as the condition holds, and reports failure rather than raising, so a timeout is something you can reason about.

  • list_pagesread-only

    List every page of the ios-agent documentation by URL.

  • read_pageread-only

    Read one page of the ios-agent documentation as plain text, without navigation. Takes a URL or a path such as "start/quickstart/".

  • search_docsread-only

    Search the ios-agent documentation: setup, the MCP tools, the terminal app, safety, and the measured results. Returns matching pages with an excerpt.

Signals

Stars
3
Forks
0
Open issues
0
Weekly downloads
50
Last commit
Oct 9, 2026 (20 days ago)
Last release
Oct 7, 2026 (21 days ago)
Last package publish
Oct 7, 2026 (21 days ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.emazaheri/ios-agent
Version
0.6.0
Auth
No auth
Packages
pypi ios-mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 25, 2026
Cite this page

ios-agent MCP server. Agent Mart. https://agentmart.dev/connectors/emazaheri-ios-agent (last updated 2026-10-25)