MagicDesk MCP
An MCP server inside the MagicDesk Android app: an agent drives windows, terminals, files and Linux on the phone
- 210 ★ on the repository
- Last commit
- GPL-3.0
Broad access
Why this level
- The `shell`, `files_write` and `update` permissions give a client a shell, file writes and APK replacement on the phone
- The network listener uses HTTP without TLS, so the token and commands are visible on the network without a protected tunnel
- Even observation exposes the app list and events on the device, which are not anonymous data
Install
- Works in
Manual install
adb forward tcp:8765 tcp:8765Forwards the phone port to the computer so the client can connect to `http://127.0.0.1:8765/mcp`.
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The `shell`, `files_write` and `update` permissions give a client a shell, file writes and APK replacement on the phone
- The network listener uses HTTP without TLS, so the token and commands are visible on the network without a protected tunnel
- Even observation exposes the app list and events on the device, which are not anonymous data
This is third-party code. Review the repository files before installing.
What it does
MagicDesk is an open-source workstation for Android: app windows on several displays, terminals, Linux graphical programs over X11 and Wayland, and the Shroot environment with systemd, Docker and Podman. The app has a built-in MCP server through which an agent uses the same services as the interface. The tool catalog covers state and events, display and window control, Android actions, terminals, graphics, files, clipboard, themes, dialogs, notifications, APK updates and self-tests. Linux sessions add semantic UI automation through AT-SPI2 and typed D-Bus access. The server is off by default. You enable it in the app settings (Settings, Automation) and it listens on `http://127.0.0.1:8765/mcp`; every request needs a generated token. From a computer the phone is reached with `adb forward tcp:8765 tcp:8765`. The same command set is available in the built-in `magicdesk` utility in the app console and through Android App Functions for system agents on Android 16 and newer.
Who it is for. Owners of Android 14+ phones who use MagicDesk as a workstation and want an agent to handle routine work on the device.
Good fit when
- From Claude Code on a computer you need a terminal on the phone to read logs or run a script
- A mobile app test needs taps, text input and waiting for window state on a real device
- Files must move between computer and phone without a cloud, through upload and download over the connection
- An agent has to drive a Linux program on the phone through the AT-SPI2 accessibility tree
- Desktop appearance is changed by script: theme preview, then confirm or cancel
Not a fit when
- You only need ADB access to someone else's device: MagicDesk requires installing and configuring the app on the phone itself
- A device on Android 13 or older: the APK targets Android 14 at minimum and the managed Desktop requires Android 15
- The phone is on an untrusted network: network MCP runs over HTTP without TLS and must not face the internet directly
- You do not want to give a client the `shell` or `update` permissions: they open broad access to the app's system
Example request
Open a terminal on the phone, print the last 50 lines of the app log and download the report file to the computer.MCP
- Transport
- http
- Authentication
- API key
Limitations
The APK targets Android 14 and newer, managed Desktop requires Android 15, and privileged features run through Shizuku, a compatible provider such as Shevery, or optional root. Termux terminals and Termux-hosted Linux graphics can work without a privileged service.
The server is off by default and permissions are granted separately to the local and network listeners. Network MCP uses HTTP without TLS, so a trusted network or a protected tunnel is required. The README stresses that it describes the selected branch and the stable APK may lack some features: check the release notes or use the `development` build.
How to disable. Turn off the local MCP server switch in the app settings (Settings, Automation): this resets permissions and closes network access. The replace-token button instantly invalidates every connected client. Remove the server from the client in the usual way.
FAQ
How do I connect MagicDesk to Claude Code?
Enable the Local MCP automation server in the app and copy the connection, then run `adb forward tcp:8765 tcp:8765` on the computer and add a Streamable HTTP server at `http://127.0.0.1:8765/mcp` with an `Authorization: Bearer` header holding your token.
Do I need root or Shizuku?
Ordinary terminals and Termux-hosted Linux graphics need neither root nor Shizuku, and the MCP server is optional too. Managed Desktop and privileged features run through Shizuku, a compatible provider or root.
What can an agent do by default?
Only observe: device state, task and app lists, diagnostics and events. Those can contain application names. Control, input, files, shell and APK update are granted as separate permissions.
Is it safe to expose the server over the network?
Network access is a separate opt-in, binds to a chosen private IPv4 address and a port above 1023, but runs over HTTP without TLS. Use a trusted network or a protected tunnel and never expose it directly to the internet.
Is there a way to work without MCP?
Yes: the built-in `magicdesk` utility in the app console gives the same command catalog without MCP enabled and without Python. System agents on Android 16 and newer can use Android App Functions.
Discussion
No questions or reviews yet.
Related
MCP serversAn MCP server that drives an Android device over ADB: app navigation, input and automated tests
An MCP server exposes Android screens, element search, taps, input and screenshots to agents testing authorized applications.
Android MCP Server: control Android through ADB
Android MCP Server
A Python MCP server: the agent takes screenshots of an Android device, reads clickable interface elements and runs ADB commands
Android Remote Control MCP
android-remote-control-mcp
An Android app that turns a phone or emulator into an MCP server: accessibility services and screenshots
62 MCP tools so an agent can tap, scroll and type on a real Android phone over ADB or on an iPhone.
An MCP server to drive iOS and Android: simulators, emulators and real devices via accessibility trees and screenshots
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| MagicDesk (this card) | no | API key | 210 | |
| Android Remote Control MCP | no | OAuth | 787 | an app that turns the phone into an MCP server through accessibility services and screenshots, without terminals or Linux |
| Android MCP | no | not required | 917 | Android control through ADB from a computer, with no app on the phone |
README in short
The project description covers the multi-display desktop, tools without Desktop, Linux through Shroot, portable workspaces and setup. Automation is detailed in `docs/automation.md`, and a separate Android `RUN_COMMAND` interface for third-party apps to launch commands is described in `docs/run-command.md`. There are Telegram and Reddit communities and a support bot.