@magentaesolutions/device-screenshot-mcp
v1.2.0
Published
MCP server for taking screenshots from physical iOS devices via USB
Downloads
40
Maintainers
Readme
Device Screenshot MCP
MCP server for taking screenshots from a physical iOS device connected via USB. Works with Claude Code across all projects.
Prerequisites
- pymobiledevice3 — Python tool for communicating with iOS devices
- pymobiledevice3 tunneld — must be running as root for iOS 17+
Install pymobiledevice3
pip3 install pymobiledevice3Start tunneld
The tunnel daemon must run as root. You can either start it manually:
sudo pymobiledevice3 remote tunneldOr install it as a LaunchDaemon for auto-start on boot. Create /Library/LaunchDaemons/com.pymobiledevice3.tunneld.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.pymobiledevice3.tunneld</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/pymobiledevice3</string>
<string>remote</string>
<string>tunneld</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>PYTHONPATH</key>
<string>/path/to/python/site-packages</string>
</dict>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/pymobiledevice3-tunneld.log</string>
<key>StandardErrorPath</key>
<string>/tmp/pymobiledevice3-tunneld.log</string>
</dict>
</plist>Then load it:
sudo cp com.pymobiledevice3.tunneld.plist /Library/LaunchDaemons/
sudo launchctl load /Library/LaunchDaemons/com.pymobiledevice3.tunneld.plistiOS device requirements
- Developer Mode enabled (Settings > Privacy & Security > Developer Mode)
- Connected via USB and trusted
Setup
Add to ~/.claude/.mcp.json for global access, or to a project's .mcp.json:
{
"mcpServers": {
"device": {
"command": "npx",
"args": ["-y", "@magentaesolutions/device-screenshot-mcp@latest"],
"env": {
"PYMOBILEDEVICE3_PATH": "/path/to/pymobiledevice3",
"SCREENSHOT_DIR": "/path/to/project/screenshots"
}
}
}
}Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
| PYMOBILEDEVICE3_PATH | No | pymobiledevice3 | Path to the pymobiledevice3 binary |
| SCREENSHOT_DIR | No | cwd | Default directory for saved screenshots. save_to paths are resolved relative to this. |
Tools
| Tool | Description |
|---|---|
| take_screenshot | Capture a PNG screenshot from the connected iOS device |
take_screenshot
| Parameter | Type | Required | Description |
|---|---|---|---|
| save_to | string | No | Filename or path for saving a copy (e.g. screenshot.png). Resolved relative to SCREENSHOT_DIR if set, otherwise relative to cwd. Creates directories if needed. |
Returns the screenshot as an inline image. If save_to is provided, also saves a copy to that path.
