- Home
- MCP servers
- Expo Dev Build
Expo Dev Build
- python
0
GitHub Stars
python
Language
4 months ago
First Indexed
2 months ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
Installation
Add the following to your MCP client configuration file.
Configuration
View docs{
"mcpServers": {
"ryan-crabbe-expo-dev-build-mcp": {
"command": "/ABSOLUTE/PATH/TO/expo-dev-build-mcp/.venv/bin/python",
"args": [
"-m",
"expo_dev_mcp.server"
]
}
}
}This MCP server lets Claude interact with iOS devices running Expo development builds. You can capture screenshots, view device logs, list and launch apps, and debug your Expo app through natural conversation, making mobile testing and iteration faster and more integrated with chat workflows.
How to use
Once you have the MCP server running, you can connect Claude as an MCP client and start issuing natural-language requests. Ask Claude to take a screenshot, inspect what’s on your iPhone screen, pull the device logs, list installed apps, launch a specific app by bundle ID, or kill and relaunch an app. Claude uses the available MCP tools to perform these actions and return results or show images for you to analyze.
How to install
Prerequisites: you need macOS, Python 3.10 or newer, Homebrew installed, and a physical iOS device connected via USB.
Clone the project, install dependencies, and set up a Python virtual environment.
git clone https://github.com/ryan-crabbe/expo-dev-build-mcp.git
cd expo-dev-build-mcp
# Create virtual environment with Python 3.10+
python3 -m venv .venv
source .venv/bin/activate
# Upgrade pip and install
pip install --upgrade pip
pip install -e .
Configuration and running the server
Configure Claude to connect to the MCP server using the stdio method. Use the absolute path to the Python interpreter inside the virtual environment and point to the server module.
{
"mcpServers": {
"expo_dev": {
"command": "/ABSOLUTE/PATH/TO/expo-dev-build-mcp/.venv/bin/python",
"args": ["-m", "expo_dev_mcp.server"]
}
}
}
Start the tunnel and run the server
For iOS 17+ you may need a tunnel daemon to handle developer commands. Run the tunnel daemon in a separate terminal and keep it active while you operate the MCP server.
cd expo-dev-build-mcp
source .venv/bin/activate
# Start the tunnel daemon (enter your password if prompted)
sudo python3 -m pymobiledevice3 remote tunneld
Usage with Claude Code or Claude Desktop
Add the MCP server configuration to Claude so it can connect automatically. The exact placement depends on whether you are using Claude Code or Claude Desktop.
{
"mcpServers": {
"expo_dev": {
"command": "/ABSOLUTE/PATH/TO/expo-dev-build-mcp/.venv/bin/python",
"args": ["-m", "expo_dev_mcp.server"]
}
}
}
Security and notes
Keep the tunnel daemon running in a dedicated terminal or as a startup service so developer commands work reliably. Use a secure machine and restrict access to Claude clients that can trigger device actions.
Troubleshooting
No device found: ensure the USB connection is secure, run the device list command to verify the device appears, and confirm you have trusted the computer on the device.
InvalidServiceError or Unable to connect to Tunneld: ensure the tunnel daemon is running for iOS 17+ and keep the terminal open while using the MCP server.
Failed to take screenshot: enable Developer Mode on the device, confirm tunneld is running, and try the CLI screenshot command directly to verify behavior.
Debugging MCP integration: verify your Claude config uses an absolute path to the Python interpreter in your virtual environment and restart Claude after config changes.
How it works
This server uses pymobiledevice3 to communicate with iOS devices over USB, including usbmuxd for USB multiplexing, Lockdown for pairing and service discovery, and DVT tools for screenshots and device control. No jailbreak is required and it uses the same protocols as a standard iOS development workflow.
Development
Install in development mode and run the server directly for testing. You can also test with MCP Inspector to verify the server responds to MCP calls.
Available tools
screenshot
Capture the device screen so Claude can analyze the image.
get_logs
Stream system logs from the connected iOS device for debugging.
list_apps
List installed applications on the connected device.
launch_app
Launch an app by its bundle identifier.
kill_app
Force quit a running application.
device_info
Retrieve device information such as model, iOS version, and battery status.
list_devices
Find and enumerate connected iOS devices.