{"id":28959590,"url":"https://github.com/mikepenz/adbfriend","last_synced_at":"2026-01-06T11:18:05.233Z","repository":{"id":278744785,"uuid":"786105957","full_name":"mikepenz/adbfriend","owner":"mikepenz","description":"Android ADB CLI tool including integrated MCP Server with common adb actions used during development","archived":false,"fork":false,"pushed_at":"2025-08-17T17:50:25.000Z","size":928,"stargazers_count":50,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-08-17T17:51:13.483Z","etag":null,"topics":["adb","ai","android","androiddebugbridge","cli","gradle","kmp","kotlin","mcp","mcp-server","tools"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mikepenz.png","metadata":{"files":{"readme":".github/readme/claude-desktop-sample-prompt.png","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-13T12:55:46.000Z","updated_at":"2025-08-12T20:55:18.000Z","dependencies_parsed_at":"2025-02-21T13:30:59.277Z","dependency_job_id":"276d40e1-148d-4bbd-a286-39c1ef77f5a3","html_url":"https://github.com/mikepenz/adbfriend","commit_stats":null,"previous_names":["mikepenz/adbfriend"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/mikepenz/adbfriend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikepenz%2Fadbfriend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikepenz%2Fadbfriend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikepenz%2Fadbfriend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikepenz%2Fadbfriend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mikepenz","download_url":"https://codeload.github.com/mikepenz/adbfriend/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikepenz%2Fadbfriend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271462071,"owners_count":24763857,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adb","ai","android","androiddebugbridge","cli","gradle","kmp","kotlin","mcp","mcp-server","tools"],"created_at":"2025-06-24T00:02:41.337Z","updated_at":"2026-01-06T11:18:05.187Z","avatar_url":"https://github.com/mikepenz.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ADB Friend\n\nADB Friend is a tiny cli tool, which helps you to manage your Android device via ADB.\nIts features were mostly designed for developers, but it can be useful for everyone.\n\n## Features\n\n- Sync files from your computer to your phone\n    - Designed for test data, skipping existing files on device\n- Configure device for tests\n    - Disable animations, Enable touches, ...\n- Uninstall apps by pattern\n- Packages command\n    - Apply the immersive flag to all packages matching glob, force-stop, clear app data \u0026 cache\n- Extra tools\n    - adb-speed (Helps to identify sub-par cables)\n- Model Context Protocol [MCP](https://modelcontextprotocol.io/) Server\n\n## Install\n\nThe installation can be performed using Homebrew. First you'll require the custom tap:\n\n```bash\nbrew tap mikepenz/tap\n```\n\nNext, install the AdbFriend CLI:\n\n```bash\nbrew install mikepenz/tap/adbfriend\n```\n\nAlternatively, you can download prebuild binaries for release page.\n\n## Usage\n\nADB Friend is a command line tool, which can be used in a terminal.\n\n```bash\n# Get started with the `--help` command, to get information and an overview on the various features offered.\nadbfriend --help\n```\n\n## MCP Server\n\nADB Friend (Since version 1.4.0) also provides\na [Model Context Protocol (MCP) Server](https://modelcontextprotocol.io/introduction), that can be\nconfigured in popular\nAI Tools\nlike [Claude Desktop](https://modelcontextprotocol.io/quickstart/user), [GitHub Copilot](https://docs.github.com/en/copilot/customizing-copilot/extending-copilot-chat-with-mcp), [RayCast](https://manual.raycast.com/model-context-protocol), ...\n\n### Configuration\n\nThe location and details of the configuration file will depend on the used tool. Below example\nfor [Claude Desktop](https://modelcontextprotocol.io/quickstart/user#2-add-the-filesystem-mcp-server).\n\n```json\n{\n  \"mcpServers\": {\n    \"adb-friend\": {\n      \"command\": \"/opt/homebrew/bin/adbfriend\",\n      \"args\": [\n        \"mcp\",\n        \"server\"\n      ],\n      \"env\": {\n        \"ANDROID_HOME\": \"/Users/mikepenz/Development/android/sdk\"\n      }\n    }\n  }\n}\n```\n\n\u003e [!IMPORTANT]  \n\u003e If `ANDROID_HOME` is not provided, the `adb-server` has to be manually started on your machine.\n\u003e Otherwise, a connection exception is thrown.\n\n### Debug Server\n\nYou can use the `npx @modelcontextprotocol/inspector` to debug the server once started.\n\n```bash\n# Install and run inspector in your terminal\nnpx @modelcontextprotocol/inspector\n```\n\nThen launch the website (with the url as provided in the terminal).\nLaunch the `mcp server` using IntelliJ or the actual command.\n\n```bash\n# Default port is `3001`\nadbfriend mcp server --sse true\n```\n\n### Supported tools\n\n| Tool Name                      | Description                                                                                                            |\n|--------------------------------|------------------------------------------------------------------------------------------------------------------------|\n| check-adb-speed                | Checks the USB connection speed of an Android device for the provided serial.                                          |\n| clear-installed-package        | Clears the package data for provided package names on an Android device.                                               |\n| set-immersive-full-for-package | Sets the 'immersive-full' flag for provided package names on an Android device.                                        |\n| force-stop-process             | Forces the stop of provided package names on an Android device.                                                        |\n| uninstall-package              | Uninstalls provided package names on an Android device.                                                                |\n| get-connected-devices          | Retrieves information about all connected Android devices including serial, model, and state.                          |\n| get-installed-packages         | Retrieves information about all installed packages on an Android device. Supports filtering for third-party apps only. |\n| list_allowed_directories       | Lists directories that are allowed to be accessed by the file system tools.                                            |\n| list-files                     | Lists files and directories on an Android device. Supports recursive listing with the 'recursive' option.              |\n| read-file                      | Reads the content of a file on an Android device.                                                                      |\n| read_multiple_files            | Reads the contents of multiple files on an Android device at once (reduces LLM calls).                                 |\n| write-file                     | Writes content to a file on an Android device.                                                                         |\n| create-directory               | Creates a directory on an Android device.                                                                              |\n| delete                         | Deletes a file or directory on an Android device.                                                                      |\n| search-files                   | Searches for files matching a case-insensitive glob pattern within allowed directories.                                |\n| move_file                      | Moves a file from the source path to the destination path on an Android device.                                        |\n| copy-file-to-host              | Copies a binary file from the Android device to the host system.                                                       |\n| capture-screenshot             | Captures a screenshot from an Android device and saves it to the host system.                                          |\n| install-apk                    | Installs an APK on the Android device from a file on the host system within the allowed host paths.                    |\n\nWith many more tools planned for the future.\n\n### Example Prompts\n\n```text\nuninstall the 'sample' app, but keep its data\n```\n\n```text\nforce stop the 'sample' app\n```\n\n```text\nDo I have a browser installed on the connected emulator?\n```\n\n```text\nOrganize all files in the Download folder of the connected Android device\n```\n\n```text\n Pull all KotlinConf related files from the Android device to the host\n```\n\n## Release\n\nThe project uses shadow to package the tool in a fat-jar, and also do minimal minification.\n\n```bash\n./gradlew adbfriend-cli:shadowDistZip\n```\n\n## Other\n\n### AboutLibraries\n\n#### Generate `aboutlibraries.json` for `adbfriend`\n\n```bash\n./gradlew adbfriend:exportLibraryDefinitions\n```\n\n#### Generate `aboutlibraries.json` for `adbfriend-cli`\n\n```bash\n./gradlew adbfriend-cli:exportLibraryDefinitions\n```\n\n### Example Prompt Screenshots\n\nClaude Desktop\n![claude-desktop-sample-prompt](.github/readme/claude-desktop-sample-prompt.png)\n\nVisual Code\n![visual-code-sample-prompt.png](.github/readme/visual-code-sample-prompt.png)\n\n### Credits\n\nThis project uses the amazing [adam](https://github.com/Malinskiy/adam) library\nfrom [Malinskiy](https://github.com/Malinskiy) to interact with `adb`.\nThe CLI is set-up using the impressive [clikt](https://github.com/ajalt/clikt) library\nfrom [ajalt](https://github.com/ajalt/).\n\n### License\n\n```\nCopyright 2025 Mike Penz\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    https://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikepenz%2Fadbfriend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmikepenz%2Fadbfriend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikepenz%2Fadbfriend/lists"}