Claude Mobile
Claude Mobile
MCP-Server für Mobil- und Desktop-Automatisierung — Android (via ADB), iOS-Simulator (via simctl), Desktop (Compose Multiplatform) und Aurora OS (via audb). Wie Claude in Chrome, aber für Mobilgeräte und Desktop-Apps.
Steuern Sie Ihr Android-Telefon, Ihren Emulator, den iOS-Simulator, Desktop-Anwendungen oder Ihr Aurora OS-Gerät mit natürlicher Sprache über Claude.
Funktionen
Einheitliche API — Dieselben Befehle funktionieren für Android, iOS, Desktop und Aurora OS
Intelligente Screenshots — Automatisch komprimiert für optimale LLM-Verarbeitung (keine übergroßen Bilder mehr!)
Annotierte Screenshots — Screenshots mit farbigen Begrenzungsrahmen und nummerierten Elementbeschriftungen für visuelles UI-Verständnis
Berechtigungsverwaltung — App-Berechtigungen programmgesteuert erteilen, widerrufen und zurücksetzen (Android-Laufzeitberechtigungen, iOS-Datenschutzdienste)
Geräteprotokolle — Lesen von logcat/Systemprotokollen mit Filtern für das Debugging
UI-Interaktionen — Tippen, langes Drücken, Wischen nach Koordinaten oder Elementtext
Texteingabe — Eingabe in fokussierte Felder
App-Steuerung — Apps starten, stoppen und installieren
Plattformauswahl — Gezielte Auswahl von Android, iOS, Desktop oder Aurora OS
Desktop-Unterstützung — Testen von Compose Multiplatform-Desktop-Apps mit Fensterverwaltung, Zwischenablage und Leistungsmetriken
Installation
Native CLI via Homebrew (macOS)
brew tap AlexGladkov/claude-in-mobile https://github.com/AlexGladkov/claude-in-mobile
brew install claude-in-mobileDie CLI umfasst alle Geräteautomatisierungstools sowie die Store-Verwaltung (Google Play, Huawei AppGallery, RuStore):
claude-in-mobile screenshot android
claude-in-mobile tap android 540 960 --from-size 540x960
claude-in-mobile store upload --package com.example.app --file app.aab
claude-in-mobile huawei upload --package com.example.app --file app.aab
claude-in-mobile rustore upload --package com.example.app --file app.apkEinzeiler (jeder Client)
Unter Verwendung von add-mcp — erkennt installierte Clients automatisch:
npx add-mcp claude-in-mobile -yOder einen bestimmten Client ansteuern:
npx add-mcp claude-in-mobile -a claude-code -y
npx add-mcp claude-in-mobile -a opencode -y
npx add-mcp claude-in-mobile -a cursor -yClaude Code CLI
claude mcp add --transport stdio mobile -- npx claude-in-mobile@latestGlobal hinzufügen (verfügbar in allen Projekten):
claude mcp add --scope user --transport stdio mobile -- npx claude-in-mobile@latestOpenCode
Verwenden Sie das interaktive Setup:
opencode mcp addOder manuell zur opencode.json hinzufügen (Projektstammverzeichnis oder ~/.config/opencode/opencode.json):
{
"mcp": {
"mobile": {
"type": "local",
"command": ["npx", "-y", "claude-in-mobile"],
"enabled": true
}
}
}Cursor
Zur .cursor/mcp.json hinzufügen:
{
"mcpServers": {
"mobile": {
"command": "npx",
"args": ["-y", "claude-in-mobile"]
}
}
}Jeder MCP-Client
Konfigurations-Snippet für Ihren Client ausgeben:
npx claude-in-mobile --init <client-name>
# Supported: opencode, cursor, claude-codeVon npm
npx claude-in-mobileAus dem Quellcode
git clone https://github.com/AlexGladkov/claude-in-mobile.git
cd claude-in-mobile
npm install
npm run build:all # Builds TypeScript + Desktop companionHinweis: Für die Desktop-Unterstützung müssen Sie
npm run build:desktop(oderbuild:all) ausführen, um die Desktop-Begleit-App zu kompilieren.
Verwendung eines lokalen Builds mit MCP-Clients
Nach dem Build aus dem Quellcode verweisen Sie Ihren MCP-Client auf die lokale dist/index.js, anstatt npx zu verwenden:
{
"mcpServers": {
"mobile": {
"command": "node",
"args": ["/path/to/claude-in-mobile/dist/index.js"]
}
}
}Für OpenCode (opencode.json):
{
"mcp": {
"mobile": {
"type": "local",
"command": ["node", "/path/to/claude-in-mobile/dist/index.js"],
"enabled": true
}
}
}Manuelle Konfiguration
Zu Ihren Claude Code-Einstellungen hinzufügen (~/.claude.json oder Projekteinstellungen):
{
"mcpServers": {
"mobile": {
"command": "npx",
"args": ["-y", "claude-in-mobile"]
}
}
}Windows
claude mcp add --transport stdio mobile -- cmd /c npx claude-in-mobile@latestAnforderungen
Android
ADB installiert und im PATH
Verbundenes Android-Gerät (USB-Debugging aktiviert) oder Emulator
iOS
macOS mit installiertem Xcode
iOS-Simulator (noch keine Unterstützung für physische Geräte)
WebDriverAgent für vollständige UI-Inspektion und elementbasierte Interaktion:
npm install -g appium appium driver install xcuitestOder setzen Sie die Umgebungsvariable
WDA_PATHauf den benutzerdefinierten WebDriverAgent-Speicherort
Desktop
macOS (Unterstützung für Windows/Linux geplant)
JDK 17+ zum Erstellen des Desktop-Begleiters
Compose Multiplatform-Desktop-Anwendung zum Testen
Aurora OS
audb CLI installiert und im PATH (
cargo install audb-client)Verbundenes Aurora OS-Gerät mit aktiviertem SSH
Python auf dem Gerät erforderlich für Tippen/Wischen:
devel-su pkcon install python
Verfügbare Tools
Core-Tools (Alle Plattformen)
Tool | Android | iOS | Desktop | Aurora | Beschreibung |
| ✅ | ✅ | ✅ | ✅ | Alle verbundenen Geräte auflisten |
| ✅ | ✅ | ✅ | ✅ | Aktives Gerät auswählen |
| ✅ | ✅ | ✅ | ✅ | Screenshot erstellen |
| ✅ | ✅ | ✅ | ⚠️ | Tippen an Koordinaten oder nach Text/Label (iOS: WDA für Element-Tippen erforderlich) |
| ✅ | ✅ | ✅ | ✅ | Geste für langes Drücken |
| ✅ | ✅ | ✅ | ⚠️ | Wischen in Richtung oder an Koordinaten (erfordert Python auf Aurora) |
| ✅ | ✅ | ✅ | ❌ | Text eingeben |
| ✅ | ✅ | ✅ | ✅ | Hardware-Tasten drücken |
| ✅ | ✅ | ❌ | ✅ | App starten |
| ✅ | ✅ | ❌ | ✅ | App stoppen |
| ✅ | ✅ | ❌ | ✅ | APK/.app/.rpm installieren |
| ❌ | ❌ | ❌ | ✅ | Installierte Apps auflisten (nur Aurora) |
| ✅ | ✅ | ✅ | ❌ | UI-Hierarchie abrufen (iOS: erfordert WebDriverAgent) |
| ✅ | ✅ | ✅ | ❌ | Elemente nach Text/ID/Label finden (iOS: erfordert WebDriverAgent) |
| ✅ | ✅ | ❌ | ❌ | Screenshot mit farbigen Begrenzungsrahmen und nummerierten Elementbeschriftungen |
| ✅ | ✅ | ❌ | ❌ | App-Berechtigung erteilen (Android: Laufzeit, iOS: Datenschutzdienst) |
| ✅ | ✅ | ❌ | ❌ | App-Berechtigung widerrufen |
| ✅ | ✅ | ❌ | ❌ | Alle Berechtigungen für eine App zurücksetzen |
| ✅ | ❌ | ❌ | ❌ | Vordergrundaktivität abrufen |
| ✅ | ✅ | ❌ | ❌ | URL im Browser öffnen (auf Aurora noch nicht implementiert) |
| ✅ | ✅ | ❌ | ✅ | Shell-Befehl ausführen |
| ✅ | ✅ | ✅ | ✅ | Dauer warten |
| ✅ | ✅ | ❌ | ✅ | Geräteprotokolle abrufen (logcat/Systemprotokoll) |
| ✅ | ⚠️ | ❌ | ✅ | Protokollpuffer leeren |
| ✅ | ❌ | ❌ | ✅ | Akku-, Speicherinformationen |
| ✅ | ✅ | ❌ | ❌ | Auf Erscheinen eines Elements warten (Polling + Timeout) |
| ✅ | ✅ | ❌ | ❌ | Sicherstellen, dass Element sichtbar ist (bestanden/nicht bestanden) |
| ✅ | ✅ | ❌ | ❌ | Sicherstellen, dass Element NICHT existiert (bestanden/nicht bestanden) |
| ✅ | ✅ | ✅ | ✅ | Mehrere Befehle in einem Round-Trip ausführen |
| ✅ | ❌ | ❌ | ❌ | WebView über Chrome DevTools Protocol inspizieren |
| ❌ | ❌ | ❌ | ✅ | Datei hochladen (nur Aurora) |
| ❌ | ❌ | ❌ | ✅ | Datei herunterladen (nur Aurora) |
Desktop-spezifische Tools
Tool | Beschreibung |
| Zielplattform festlegen (android/ios/desktop) |
| Aktuelle Zielplattform abrufen |
| Compose Desktop-Anwendung starten |
| Laufende Desktop-Anwendung stoppen |
| Position und Größe des Desktop-Fensters abrufen |
| Desktop-Fenster in den Vordergrund bringen |
| Desktop-Fenster in der Größe ändern |
| Inhalt der Systemzwischenablage abrufen |
| Inhalt der Systemzwischenablage festlegen |
| CPU-/Speicherauslastung der Desktop-App abrufen |
Für eine detaillierte Desktop-API-Dokumentation siehe Desktop Specification
Anwendungsbeispiele
Sprechen Sie einfach natürlich mit Claude:
"Show me all connected devices"
"Take a screenshot of the Android emulator"
"Take a screenshot on iOS"
"Tap on Settings"
"Swipe down to scroll"
"Type 'hello world' in the search field"
"Press the back button on Android"
"Open Safari on iOS"
"Switch to iOS simulator"
"Run the app on both platforms"Berechtigungsverwaltung
"Grant camera permission to com.example.app on Android"
"Revoke location access from com.example.app"
"Reset all permissions for com.apple.Maps on iOS"Annotierte Screenshots
"Take an annotated screenshot" → Screenshot with green (clickable) and red (non-clickable) bounding boxes + numbered element indexPlattformauswahl
Sie können die Plattform explizit angeben:
"Screenshot on android" → Uses Android device
"Screenshot on ios" → Uses iOS simulator
"Screenshot on desktop" → Uses Desktop app
"Screenshot on aurora" → Uses Aurora OS device
"Screenshot" → Uses last active deviceOder das aktive Gerät festlegen:
"Use the iPhone 15 simulator"
"Switch to the Android emulator"
"Switch to desktop"
"Switch to Aurora device"Desktop-Beispiele
"Launch my desktop app from /path/to/app"
"Take a screenshot of the desktop app"
"Get window info"
"Resize window to 1280x720"
"Tap at coordinates 100, 200"
"Get clipboard content"
"Set clipboard to 'test text'"
"Get performance metrics"
"Stop the desktop app"Aurora-Beispiele
"List all Aurora devices"
"Take a screenshot on Aurora"
"Tap at coordinates 100, 200 on Aurora"
"Launch ru.example.app on Aurora"
"List installed apps on Aurora device"
"Get logs from Aurora device"
"Push file.txt to /home/defaultuser/ on Aurora device"Native CLI
Ein 2 MB großes natives Rust-Binary mit denselben Befehlen. Kein Node.js, keine Abhängigkeiten.
CLI installieren
brew tap AlexGladkov/claude-in-mobile
brew install claude-in-mobileOder von Releases herunterladen.
Vorteile gegenüber MCP
Einfache Installation —
brew installoder Kopieren eines einzelnen 2 MB-BinariesKeine Abhängigkeiten — kein Node.js, kein npm, nichts
Vom Terminal aus nutzbar — Befehle direkt ausführen, kein Claude Code oder MCP-Client erforderlich
Testautomatisierung — universelle
.sh-Skripte für jede Plattform schreiben, ohne Plattform-Interna lernen zu müssenToken-effizient — Skill-Dokumentation wird nur bei Verwendung geladen; MCP lädt alle Tool-Schemas in jede Anfrage, was sich während einer Sitzung schnell summiert
Schnell — ~5ms Befehlsstart (Rust) vs ~500ms (Node.js MCP)
CI/CD-bereit — Exit-Codes, stdout/stderr, läuft überall
Beispiel für ein Testskript
#!/bin/bash
claude-in-mobile launch android com.example.app
claude-in-mobile wait 2000
claude-in-mobile tap android 0 0 --text "Login"
claude-in-mobile input android "test@example.com"
claude-in-mobile screenshot android -o result.png
claude-in-mobile ui-dump android | grep "Welcome" && echo "PASS" || echo "FAIL"Claude Code-Plugin
claude plugin marketplace add AlexGladkov/claude-in-mobile
claude plugin install claude-in-mobile@claude-in-mobileNach der Installation steuert Claude Code Geräte mit natürlicher Sprache. Der Skill wird nur bei Bedarf in den Kontext geladen — kein Token-Overhead bei Nichtgebrauch.
Siehe cli/README.md für die vollständige CLI-Dokumentation.
iOS WebDriverAgent-Setup
Für die vollständige iOS-UI-Inspektion und elementbasierte Interaktion ist WebDriverAgent erforderlich. Es ermöglicht:
get_ui- JSON-Barrierefreiheitsbaum-Inspektiontapmitlabel- odertext-Parametern - Elementbasiertes Tippenfind_element- Elementerkennung und -abfrageswipe- Verbesserte Gestensimulation
Installation
Automatisch (via Appium):
npm install -g appium
appium driver install xcuitestManuell:
Setzen Sie die Umgebungsvariable WDA_PATH auf Ihren WebDriverAgent-Speicherort:
export WDA_PATH=/path/to/WebDriverAgentErste Verwendung
Bei der ersten Verwendung wird WebDriverAgent automatisch:
Von der Appium-Installation oder
WDA_PATHerkanntMit xcodebuild erstellt (einmalig, ~2 Minuten)
Auf dem iOS-Simulator gestartet
Über HTTP auf Port 8100+ verbunden
Fehlerbehebung
Build schlägt fehl:
# Install Xcode command line tools
xcode-select --install
# Accept license
sudo xcodebuild -license accept
# Set Xcode path
sudo xcode-select -s /Applications/Xcode.appSitzung schlägt fehl:
Stellen Sie sicher, dass der Simulator gestartet ist:
xcrun simctl list | grep BootedÜberprüfen Sie die Portverfügbarkeit:
lsof -i :8100Versuchen Sie, den Simulator neu zu starten
Manueller Test:
cd ~/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent
xcodebuild test -project WebDriverAgent.xcodeproj \
-scheme WebDriverAgentRunner \
-destination 'platform=iOS Simulator,id=<DEVICE_UDID>'Funktionsweise
┌─────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Claude Code │────▶│ │────▶│ Android (ADB) │
├─────────────┤ │ Claude Mobile │ └─────────────────┘
│ OpenCode │────▶│ MCP Server │ ┌─────────────────┐
├─────────────┤ │ │────▶│ iOS (simctl+WDA)│
│ Cursor │────▶│ (auto-detects │ └─────────────────┘
├─────────────┤ │ client via │ ┌─────────────────┐
│ Any MCP │────▶│ MCP protocol) │────▶│ Desktop (Compose)│
│ Client │ │ │ └─────────────────┘
└─────────────┘ │ │ ┌─────────────────┐
│ │────▶│ Aurora (audb) │
└──────────────────┘ └─────────────────┘Claude sendet Befehle über das MCP-Protokoll
Der Server leitet an die entsprechende Plattform weiter (ADB, simctl+WDA, Desktop-Begleiter oder audb)
Befehle werden auf Ihrem Gerät oder Ihrer Desktop-App ausgeführt
Ergebnisse (Screenshots, UI-Daten, Metriken) werden an Claude zurückgegeben
Lizenz
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AlexGladkov/claude-in-mobile'
If you have feedback or need assistance with the MCP directory API, please join our Discord server