The tool set is deliberately literal — device, app, file, key — and each step returns exactly what the next one needs as an argument. add_preference asking for a type is the detail that matters in practice, because the stored type is what the app reads back and a string written where a boolean belongs will not behave. Nothing here keeps a copy of what you overwrote, so a read_preferences call before the change is the only record of the previous state you will have.
An editor for the preference files of apps installed on connected Android devices: walk from device to app to file, read what is stored, and change it in place.
- A path from hardware down to a stored value: devices lists the connected Android devices, list_apps lists the apps installed on a device, list_files lists an app's preference files, and read_preferences returns every user preference in a chosen file.
- Writes at the level of a single key: change_preference sets the value of an existing preference by name, add_preference creates a new preference from a name, value and type, and delete_preference removes it.
- Every call is addressed the same way — deviceId, appId and filename — so a value can be changed on a chosen device and file without touching another.
A connected Android device with the app installed on it. Every call is addressed by deviceId, appId and filename. No credentials are configured.
One command — npx -y @charlesmuchene/pref-editor-mcp-server
