Expo开发构建MCP服务器
一个MCP服务器,让Claude看到运行Expo开发构建的iOS设备并与之交互。通过对话进行截图、查看日志、启动应用程序和调试移动应用程序。这是vibe编码的,请自行承担使用风险 这还不是我想要的,但仍然是WIP。
它的作用
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Claude Code │ ◄── MCP Protocol ──► This Server │ ◄── USB/Tunnel ──► │ Your iPhone │
│ or Desktop │ │ (Python) │ │ (Expo App) │
└─────────────────┘ └─────────────────┘ └─────────────────┘可用工具:
screenshot-捕获设备屏幕(Claude可以看到并分析它)get_logs-流式系统日志用于调试list_apps-查看已安装的应用程序launch_app-通过捆绑包ID启动应用程序kill_app-强制退出应用程序device_info-获取型号、iOS版本、电池等信息。list_devices-查找已连接的iOS设备
快速开始
1.先决条件
| 要求 | 如何检查 |
|---|---|
| macOS | 必需(iOS工具仅适用于Mac) |
| Python 3.10+ | python3 --version (通过安装 brew install python@3.12 如果需要) |
| 自制 | brew --version (从安装https://brew.sh如果需要) |
| iOS设备 | 通过USB连接的物理iPhone/iPad |
2.克隆和安装
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 .3.准备您的iOS设备
连接和信任:
- 通过USB电缆连接iPhone/iPad
- 如果设备上出现提示,点击“信任此计算机”
- 验证连接:
python3 -m pymobiledevice3 usbmux list
启用开发者模式(iOS 16+):
- 在Mac上打开Xcode并连接您的设备(这将其注册为开发人员设备)
- 在您的iPhone上: 设置→ 隐私和安全→ 开发者模式→ 启用
- 出现提示时重新启动
4.启动隧道守护程序(iOS 17+必需)
iOS 17+需要一个隧道守护进程来执行开发人员命令。 在单独的终端中运行此程序并保持其运行:
cd expo-dev-build-mcp
source .venv/bin/activate
sudo python3 -m pymobiledevice3 remote tunneld出现提示时输入Mac密码。当它工作时,您将看到连接日志。
提示: 使用MCP服务器时,请保持此终端打开。您还可以将其设置为自动启动的launchd服务。
5.测试它是否有效
在新终端中:
cd expo-dev-build-mcp
source .venv/bin/activate
# List devices
python3 -m pymobiledevice3 usbmux list
# Take a test screenshot
python3 -m pymobiledevice3 developer dvt screenshot test.png
open test.png如果屏幕截图打开,您就可以配置Claude了。
6.配置Claude
克劳德代码,添加到MCP设置(运行 claude mcp 查找配置位置):
{
"mcpServers": {
"expo-dev": {
"command": "/ABSOLUTE/PATH/TO/expo-dev-build-mcp/.venv/bin/python",
"args": ["-m", "expo_dev_mcp.server"]
}
}
}适用于克劳德桌面,添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"expo-dev": {
"command": "/ABSOLUTE/PATH/TO/expo-dev-build-mcp/.venv/bin/python",
"args": ["-m", "expo_dev_mcp.server"]
}
}
}重要提示: 替换/ABSOLUTE/PATH/TO/与实际路径。找到它pwd在项目目录中。
更新配置后重新启动克劳德代码/桌面。
用法
配置后,问Claude以下问题:
- “截取我手机的屏幕截图”
- “我的iPhone屏幕上有什么?”
- “显示设备日志”
- “安装了哪些应用程序?”
- “启动com.mycompany.myexpoapp”
- “关闭应用程序并重新启动”
Claude将自动使用MCP工具,并可以查看/分析屏幕截图。
故障排除
“未找到设备”
- 检查USB连接
- 跑
python3 -m pymobiledevice3 usbmux list-设备应出现 - 如果未列出,请尝试使用其他USB电缆或端口
- 确保您在设备上点击了“信任”
“InvalidServiceError”或“无法连接到Tunneld”
- iOS 17+要求隧道守护进程运行
- 在单独的终端中启动它:
sudo python3 -m pymobiledevice3 remote tunneld - 使用MCP服务器时保持终端打开
“截图失败”
- 确保启用了开发人员模式(设置→ 隐私和安全→ 开发者模式)
- 确保tunneld正在运行(适用于iOS 17+)
- 尝试:
python3 -m pymobiledevice3 developer dvt screenshot test.png
截图手动操作,但不通过MCP
- 检查Claude配置中的路径是否正确(必须是绝对路径)
- 配置更改后重新启动克劳德代码/桌面
- 检查MCP服务器是否已加载:运行
claude mcp克劳德代码
“sudo:需要密码”
- tunneld命令需要sudo才能获得网络权限
- 在常规终端中运行它(而不是通过脚本),这样您就可以输入密码
运作原理
此服务器使用 移动电话3,一个Python库,实现了苹果与iOS设备通信的专有协议:
- usbmuxd -USB多路复用(通过一个USB连接提供多种服务)
- 禁闭 -设备配对和服务发现
- DVT(开发工具) -截图、过程控制、仪器
无需越狱。它使用与Xcode相同的协议。
项目结构
expo-dev-build-mcp/
├── pyproject.toml # Package configuration
├── README.md # This file
└── src/
└── expo_dev_mcp/
├── __init__.py
└── server.py # MCP server implementation发展
# Install in development mode
pip install -e .
# Run server directly (for testing)
python -m expo_dev_mcp.server
# Test with MCP Inspector
npx @modelcontextprotocol/inspector python -m expo_dev_mcp.server未来:手势支持
这只是目前的视图。添加点击/滑动手势需要WebDriver Agent,它需要:
- Apple开发者帐户(付费)
- 代码签名和配置文件
- 设备上已安装WebDriver Agent
许可证
麻省理工学院
