Skip to content

Multi-device commands ignore device parameter on iOS 17+ physical devices #253

@partboost-coder

Description

@partboost-coder

Bug Description

When using multiple physical iOS 17+ devices, all MCP tool calls ignore the device parameter and route commands to the first device in the list instead of the specified device.

Environment

  • mobile-mcp version: 0.0.39 and 0.0.40 (both affected)
  • iOS version: 26.1 / 26.2 (iOS 17+ devices requiring go-ios tunnel)
  • go-ios: Installed at /Users/matt/go/bin/ios
  • Platform: macOS Darwin 24.6.0
  • MCP SDK: @modelcontextprotocol/sdk

Steps to Reproduce

  1. Connect multiple physical iOS 17+ devices
  2. Verify devices are listed correctly:
mobile_list_available_devices
// Returns: iPad (00008132-...), iPad (2) (00008130-001202...), Cobra (00008130-001E0D...)
  1. Send command to specific device:
mobile_open_url({ device: "00008130-001202823CC0001C", url: "https://example.com" })
  1. Expected: URL opens on iPad (2)
  2. Actual: URL opens on iPad (first device in list)

Evidence

When go-ios executes, it logs:

"no udid specified using first device in list"

This indicates mobile-mcp is NOT passing the device ID to go-ios when executing commands on physical iOS 17+ devices.

Tested Scenarios

Tool Device Param Expected Device Actual Device
mobile_open_url 00008130-001202823CC0001C iPad (2) iPad
mobile_open_url 00008132-0012694E0EF9001C iPad iPad
mobile_open_url 00008130-001E0D802E42001C Cobra iPad
mobile_take_screenshot 00008130-001202823CC0001C iPad (2) iPad
mobile_list_elements_on_screen 00008130-001202823CC0001C iPad (2) iPad

All commands route to the same device regardless of the device parameter.

Workaround Attempted

  • Pinning to version 0.0.39 (same issue)
  • Adding explicit device selection via mobile_use_device tool (tool doesn't exist)
  • Restarting go-ios tunnels (no effect)

Expected Behavior

The device parameter should be passed to go-ios so commands execute on the correct physical device.

Additional Context

  • This was working on Jan 15, 2026 around 3:49 AM PST with @latest (which was 0.0.39 at the time)
  • v0.0.40 was released Jan 15 at 7:18 PM PST
  • Multi-device support may have regressed, or there's an intermittent issue with device session management

Suggested Fix

Ensure the device UDID is passed to go-ios when executing commands. The go-ios CLI accepts -u or --udid flag:

ios <command> --udid=<device-id>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions