Skip to main content
Glama
Scofield81

Android Control MCP

by Scofield81

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ANDROID_CONTROL_MODENoOperating mode: SAFE, NORMAL, or ADMIN. Determines which tools are permitted.normal
ANDROID_CONTROL_PORTNoPort to use when ANDROID_CONTROL_TRANSPORT=http.8001
ANDROID_CONTROL_CONFIGNoPath to the configuration file. Defaults to ~/.config/android-control-mcp/config.json.
ANDROID_CONTROL_ADB_PATHNoPath to the adb executable. If not set, adb is expected to be in PATH.
ANDROID_CONTROL_AUDIT_LOGNoOptional path to an audit log file. If not set, audit messages are written to stderr.
ANDROID_CONTROL_TRANSPORTNoTransport protocol: 'stdio' for standard MCP, 'http' for HTTP transport.stdio
ANDROID_CONTROL_AUTO_APPROVENoSet to '1' to automatically approve high-risk actions without interactive confirmation. Only for trusted environments.0
ANDROID_CONTROL_DEFAULT_SERIALNoDefault device serial number to use when no serial parameter is provided.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
device_listA

Csatlakoztatott Android eszkozok listaja (USB vagy 'adb connect' wifi).

Mutatja minden eszkoz sorozatszamat es allapotat (device/unauthorized/offline). Ha tobb eszkoz van, a tobbi tool 'serial' parameterevel valaszthato ki, melyiken fusson a muvelet.

device_infoA

Az eszkoz alap adatai: gyarto, modell, Android verzio, SDK szint, build.

Hasznos elso lepes barmilyen automatizalas elott, illetve amikor eldontendo, milyen Android verziora/ROM-ra frissitheto egy regebbi keszulek.

battery_statusB

Akkumulator toltottsege, allapota (tolt/lemerul), homerseklete.

storage_usageB

Belso tarhely-hasznalat (df /data, /sdcard).

screen_stateB

A kepernyo aktualis allapota: be/kikapcsolva, es hogy zarolva van-e.

Informativ lekerdezes - NEM alkalmas es NEM is a celja a zarolas megkerulesere; csak megmutatja, mi az aktualis allapot.

network_statusB

Halozati allapot: wifi SSID (ha lekerdezheto), IP cim, mobil adat allapota.

set_modeA

A szerver engedely-modjanak valtasa futas kozben: 'safe', 'normal' vagy 'admin'.

Az inditasi mod (env/config) egy FELSO HATART (max_mode) rogzit - 'set_mode' soha nem tud ennel magasabbra menni, akkor sem, ha kozben mar levittek a modot. Igy egy ADMIN inditasu szerveren SAFE -> NORMAL -> ADMIN oda-vissza szabadon valthato, de egy NORMAL inditasu szerver soha nem er fel ADMIN-ig set_mode-dal

  • csak az ANDROID_CONTROL_MODE=admin kornyezeti valtozoval, ujrainditva.

screenshotA

Kepernyokep keszitese az eszkozrol, PNG kepkent visszaadva.

Igy a modell szo szerint 'latja' az aktualis kepernyot - hasznos amikor az ui_dump nem eleg (pl. jatek, video, egyedi rajzolt UI, WebView/Canvas tartalom, amit az uiautomator nem lat elemenkent).

screen_recordA

Rovid (max 30 mp) kepernyofelvetel keszitese MP4 formatumban.

Hasznos animaciok, atmenetek, jatekmenet visszanezesehez. A felvetel az eszkoz ideiglenes tarhelyere kerul, majd letoltodik es torlodik onnan.

ui_dumpA

Az aktualis kepernyo UI-elemeinek strukturalt listaja (uiautomator).

Minden elemhez megadja: id (a 'tap_element'/'type_into' 'element_id' parameteret ez adja), szoveg, resource-id, osztaly, allapot-jelzok ([C]lickable/[T]ext-mezo/[E]nabled/[S]elected), es a kozeppont koordinatait. Ez a legmegbizhatobb modja annak, hogy a modell tudja, hova koppintson - de meg egyszerubb kozvetlenul a 'tap_element'/ 'find_element' tool-t hasznalni, ami mar el is vegzi a koordinata- szamolast. only_interactive=True eseten csak a kattinthato/szerkesztheto elemeket mutatja (rovidebb, attekinthetobb valasz).

ocr_screenA

OCR-alapu szovegfelismeres a kepernyon - fallback, amikor az 'ui_dump' ures listat ad (jatek, WebView, Canvas, egyedi rajzolt UI).

Opcionalis fuggoseget igenyel: 'pip install -e ".[ocr]"' a projektben, plusz a Tesseract OCR motor rendszerszintu telepiteset. Ha ezek hianyoznak, vilagos utmutatast ad, mit kell telepiteni - nem hasal el. lang: Tesseract nyelvkod, tobb nyelvhez pl. 'eng+hun'.

wait_for_textA

Var, amig egy adott szoveg megjelenik a kepernyon (ui_dump-ot ismetel).

Hasznos, hogy az agent ne 'tuti X masodpercet' varjon minden lepes utan, hanem tenylegesen addig probalkozzon, amig a keresett UI elem meg nem jelenik (pl. betoltodik egy oldal), de legfeljebb timeout_seconds-ig. Konkret elemre varashoz (resource-id/osztaly alapjan is) hasznald a 'wait_for_element' tool-t.

observe_screenA

Egyetlen hivassal osszegyujti a kepernyo aktualis allapotat.

Visszaadja egyben: eloterben lathato alkalmazas/aktivitas, kepernyomeret es -orientacio, es a fontosabb (kattinthato/szerkesztheto) UI-elemek listaja. Ezzel egy agentnek nem kell minden lepes elott 3-4 kulon tool-t hivnia (foreground_app + ui_dump + screen_state) - egy hivasbol latja az aktualis 'jelenetet'. include_screenshot=True eseten a kepernyokep is mellekelve van (kulon uzenetkent, mert a valasz maga szoveges marad).

tapA

Koppintas a kepernyo (x, y) pixelkoordinatajan.

A koordinatakat legjobb az 'ui_dump' tool 'center=' ertekebol venni, vagy meg jobban a 'tap_element' tool-t hasznalni koordinata-szamolas nelkul, ha van szoveg/resource-id, amire hivatkozni lehet.

double_tapB

Dupla koppintas (x, y)-on - pl. kep nagyitasahoz/kicsinyitesehez.

long_pressB

Hosszan tartott nyomas (x, y)-on - pl. kontextusmenuhoz vagy elem kijeloleshez.

swipeC

Csuszo mozdulat (x1,y1) -> (x2,y2) pontok kozott, duration_ms ideig.

dragA

Huzas (drag) (x1,y1)-tol (x2,y2)-ig - hosszabb ideju swipe, hogy az UI drag-nak, ne csak gyors flick-nek erzekelje (pl. listaelem atrendezese).

scrollA

Gorgetes a kepernyo kozepetol: 'up', 'down', 'left' vagy 'right'.

Ez csak egy kenyelmi wrapper a 'swipe' korul szemantikus iranyokkal - ha egy konkret szoveghez akarsz gorgetni, hasznald a 'scroll_to' tool-t.

type_textA

Szoveg begepelese az aktivan fokuszalt beviteli mezobe.

Automatikusan valasztja a megfelelo modszert: tiszta ASCII szoveghez az 'input text'-et hasznalja; ekezetes/unicode szoveg eseten (pl. magyar ekezetek) automatikusan a vagolap+beillesztes utat valasztja ('paste_clipboard' + KEYCODE_PASTE), ami megbizhatobb Android 10+-on - nem kell kulon 'paste_clipboard'-ot es hosszu nyomast hivnod kezzel.

press_keyA

Hardver-/rendszerbillentyu lenyomasa.

Rovidites-nevek: home, back, recents, power, enter, tab, delete, escape, volume_up, volume_down, volume_mute, up/down/left/right, menu, search, play_pause, next, previous, paste. Barmilyen mas 'KEYCODE_...' nev is mukodik kozvetlenul (lasd az Android KeyEvent dokumentaciojat) - a formatumot ellenorizzuk, mielott a shell parancsba kerulne.

paste_clipboardA

Szoveg masolasa az eszkoz vagolapjara ('cmd clipboard set-primary-clip').

Ekezetes/unicode szoveghez altalaban egyszerubb kozvetlenul a 'type_text'-et hasznalni - az automatikusan ezt az utat valasztja nem-ASCII szoveghez. Ezt a tool-t akkor erdemes kulon hivni, ha csak masolni akarsz (nem azonnal beilleszteni), vagy tobbszor akarod ugyanazt a szoveget beilleszteni.

find_elementA

UI-elemek keresese szoveg/tartalom-leiras, resource-id es/vagy osztaly (reszleges, kis-nagybetu-fuggetlen) alapjan az aktualis kepernyon.

Legalabb egy szurot adj meg. Tobb talalat eseten mindegyiket felsorolja 'element_id'-vel egyutt - azt add at a 'tap_element'/'type_into' 'index' parametereben, ha nem az elso (index=0) talalatot akarod.

tap_elementA

Koppintas egy UI-elemre szoveg/resource-id/osztaly alapjan (kereses+koppintas egyben - nem kell kulon 'find_element' + 'tap' koordinatakkal).

Ha tobb elem is illik a szurore, 'index'-szel valaszthatod ki, melyikre (0 = elso talalat). Hiba eseten a talalatok listajat adja vissza, hogy lasd, mit erdemes pontositani.

type_intoB

Szoveg beirasa egy adott mezobe: megkeresi, ra koppint (fokuszalja), majd beirja a szoveget - egy hivasban.

'field_text'/'resource_id'/'class_name' azonositja a CELMEZOT (nem a beirando szoveget - az a 'text' parameter). Ha egyik szurot sem adod meg, az elso szerkesztheto (EditText) mezot celozza.

scroll_toA

Lefele gorget, amig a keresett szoveg meg nem jelenik a kepernyon (vagy el nem eri a max_swipes limitet).

Hasznos hosszu listakhoz/beallitas-oldalakhoz, ahol a keresett elem eleve nem is lathato meg a gorgetes elott.

wait_for_elementA

Var, amig egy adott elem (szoveg es/vagy resource-id alapjan) megjelenik a kepernyon, legfeljebb timeout_seconds-ig.

A 'wait_for_text' egyszeru substring-keresest vegez a nyers XML-ben; ez a tool a strukturalt elem-listaban keres, igy resource-id-re is tud varni (ami nem feltetlenul lathato szovegkent a kepernyon).

list_appsA

Telepitett alkalmazasok csomagneveinek listaja.

only_third_party=True (alap) eseten csak a felhasznalo altal telepitett (nem rendszer-) alkalmazasokat mutatja - igy nem 300+ soros rendszerlista jon vissza egy egyszeru kerdesre.

app_infoC

Egy alkalmazas reszletei: verzio, telepites datuma, engedelyek osszefoglaloja.

launch_appA

Alkalmazas inditasa csomagnev alapjan (pl. 'com.android.settings').

Ha az 'activity'-t nem adod meg, a rendszer alapertelmezett (launcher) aktivitasat inditja a 'monkey' eszkozzel - ez a legmegbizhatobb modja annak, hogy egy tetszoleges alkalmazast egyetlen csomagnevvel elinditsunk.

open_urlB

URL megnyitasa az alapertelmezett alkalmazasban (bongeszo, terkep, YouTube, stb.

  • az Android eldonti az intent alapjan, melyik app kezelje).

stop_appC

Alkalmazas eroszakos leallitasa ('force-stop') - mint a Beallitasokban.

install_apkA

APK telepitese a szamitogeprol az eszkozre (adb install).

A local_path a GEPEDEN levo APK fajl elerhetosege (nem az eszkozon). Csak megbizhato forrasbol szarmazo APK-t telepits - ismeretlen forrasu fajl telepitesehez a szerver megerositest ker. ADMIN modot igenyel.

uninstall_appA

Alkalmazas eltavolitasa a csomagneve alapjan. ADMIN modot igenyel, megerositest ker.

clear_app_dataA

Egy alkalmazas osszes helyi adatanak torlese (mint 'Adatok torlese' a Beallitasokban).

Ez visszaallitja az alkalmazast telepites utani, "uj" allapotba - a bejelentkezesek, mentesek, gyorsitotar mind elveszik. ADMIN modot igenyel, megerositest ker.

list_filesC

Fajlok/konyvtarak listazasa az eszkozon egy adott utvonalon.

read_fileA

Szoveges fajl tartalmanak kiolvasasa az eszkozrol (log, config, stb.).

Csak sima szoveges fajlokhoz hasznald - binaris fajlhoz a 'pull_file'-t.

file_infoC

Egy fajl/konyvtar metaadatai: meret, jogosultsag, modositas ideje.

pull_fileA

Fajl letoltese az eszkozrol a szamitogepre (adb pull).

Igy lehet pl. fenykepeket, WhatsApp mediat vagy naplofajlokat menteni egy torott kijelzoju, de mar korabban engedelyezett (parositott) eszkozrol. A biztonsagos utvonal-kezeles kulon fontos, mert 'adb pull' argumentumkent (nem shell-stringkent) kapja meg - itt nincs is shell-injekcios felszin, csak a helyi celmappa letezeset ellenorizzuk.

push_fileB

Fajl feltoltese a szamitogeprol az eszkozre (adb push).

make_dirC

Uj konyvtar letrehozasa az eszkozon.

move_pathA

Fajl/konyvtar athelyezese vagy atnevezese az eszkozon (helyben, nem a gepre).

delete_pathA

Fajl vagy konyvtar torlese az eszkozon. Megerositest ker (nem visszavonhato).

logcat_tailA

Az utolso N sor a rendszernaplobol (logcat) - hibakereseshez.

filter_tag megadasaval csak az adott tag-re/prioritasra szurt sorokat kapod (pl. 'MyApp:V *:S' csak a sajat app verbose logjait mutatja).

list_notificationsC

Az eszkozon jelenleg aktiv ertesitesek osszefoglaloja (dumpsys notification).

running_processesC

Aktualisan futo folyamatok listaja az eszkozon (ps -A rovidítve).

waitA

Egyszeru varakozas - kepernyoatmenetek/betoltodesek kivarasahoz.

Ha egy konkret szoveg megjelenesere varsz, a 'wait_for_text' tool hatekonyabb (nem var feleslegesen tovabb, ha a szoveg mar hamarabb megjelenik).

shell_runA

Tetszoleges shell parancs futtatasa az eszkozon ('adb shell').

Ez a menekulesi ut olyan muveletekhez, amikre nincs kulon tool. Mindig a legspecifikusabb tool-t reszesitsd elonyben (pl. 'tap' a 'shell_run("input tap ...")' helyett) - igy a naplok es a megerosites-kerdesek is ertelmezhetobbek maradnak. Kozepes kockazatunak szamit, megerositest ker.

rebootA

Eszkoz ujrainditasa. mode: 'normal', 'recovery' vagy 'bootloader'.

'bootloader'/'recovery' mod magasabb kockazatu - onnan a normal hasznalathoz altalaban kulon (fizikai gombos) muvelet vagy flash-eles szukseges, ezert erosebb megerositest ker.

backup_apps_dataA

Teljes ADB mentes keszitese az eszkozrol egy .ab fajlba a szamitogepen.

FONTOS: ez a standard Android adb backup funkciot hasznalja, ami CSAK olyan eszkozon mukodik, ahol az ADB hibakereses mar korabban engedelyezve lett (a telefon oldalan). A mentes soran a telefon kepernyojen jovahagyast (es esetleg jelszot) kerhet - ha a kepernyo torott, ez akadaly lehet, de ez az Android sajat mechanizmusa, nem ezen eszkoz korlatja.

connect_wifiA

Kapcsolodas vezetek nelkuli ADB-vel ('adb connect ip:port').

Elotte a telefonon be kell kapcsolni a Fejlesztoi beallitasok > Vezetek nelkuli hibakereses funkciot, ami megadja a cimet/portot (vagy egy parositasi kodot ujabb Android verziokon - azt kulon kell parositani 'adb pair'-rel, amit ez a tool jelenleg nem fed le).

disconnect_deviceC

Vezetek nelkuli ADB kapcsolat bontasa egy eszkozzel.

foreground_appA

Az eppen elterben lathato alkalmazas es aktivitas neve.

Ez adja a modellnek a 'kontextust' - mit lat most a felhasznalo a kepernyon - meg mielott ui_dump-ot vagy screenshot-ot kerne.

wifi_toggleC

Wifi be- vagy kikapcsolasa.

bluetooth_toggleC

Bluetooth be- vagy kikapcsolasa.

airplane_mode_toggleC

Repulo uzemmod be- vagy kikapcsolasa.

set_volumeC

Hangero beallitasa. stream: 'music', 'ring', 'alarm', 'notification', 'call'.

level: 0-tol a stream maximumaig (tipikusan 0-15, eszkoztol fuggoen).

open_notification_panelB

Az ertesitesi/gyorsbeallitasok panel lehuzasa a kepernyo tetejerol.

screen_orientationC

Kepernyo-forgatas: 'auto', 'portrait', 'landscape', 'landscape_reverse'.

open_app_and_waitA

Alkalmazas inditasa, es varakozas, amig tenylegesen az kerul elotterbe.

Egy hivasban vegzi el, amit kulon 'launch_app' + tobbszori 'foreground_app' ellenorzes tenne - hasznos, ha biztosra akarsz menni, hogy az app tenyleg elindult, mielott tovabbi lepeseket teszel.

fill_formA

Tobb mezo kitoltese egy hivasban.

'fields' kulcsa a celmezo resource-id-ja (lasd 'find_element'/'ui_dump'), erteke a beirando szoveg. Pl.: {"com.app:id/email": "pelda@pelda.hu", "com.app:id/password": "titok"}. Minden mezot sorban megkeres, rakoppint, majd beirja a szoveget (unicode-biztos modon).

wait_until_screen_changesA

Var, amig a kepernyo UI-tartalma erzekelhetoen valtozik (nem ugyanaz a UI-hierarchia, mint a hivaskori allapot).

Hasznos gomb-koppintas UTAN, amikor nem tudod elore, milyen konkret szoveg fog megjelenni, csak azt, hogy 'tortenjen valami'.

assert_textA

Ellenorzi, hogy egy szoveg lathato-e (vagy NEM lathato-e) a kepernyon.

Hasznos automatizalt tesztfolyamatok zaro lepeserekent ('sikeres' felirat megjelent-e, hibauzenet NEM jelent-e meg, stb.). Sose dob kivetelt - mindig egy vilagos PASS/FAIL szoveget ad vissza, hogy az agent eldonthesse, mit tegyen.

device_capabilitiesA

Az eszkoz/gep helyreallitasi kepessegeinek diagnosztikaja.

Minden ertek 'supported' | 'unsupported' | 'unknown' - az 'unknown' EGYENRANGU valasz, sose talalunk ki tamogatast. Ha az ADB nem erheto el (pl. torott kijelzo, sose jovahagyott gep), add meg manufacturer_hint/model_hint-et kezzel (a telefon dobozarol/beallitasokbol, ha meg hozzaferheto), hogy legalabb a video-kimeneti kepesseget lekerdezhessuk az ismert-modell adatbazisbol.

rescue_probeA

Teljes helyreallitasi diagnosztika + emberi nyelvu ajanlas egyben.

Ugyanazt a jelentest adja, mint a 'device_capabilities', de a vegen egy konkret, a tenylegesen ismert adatokra epulo javaslatot is ad, hogy mit erdemes kovetkezo lepeskent tenni.

explain_capabilityB

Egy kepesseg-jelzo (pl. 'wired_video_output') emberi nyelvu magyarazata.

rescue_start_mirrorA

Teljes kepernyo-tukrozes es -vezerles inditasa (a hivatalos scrcpy sajat ablakaban). ADB-t igenyel, MAR engedelyezett eszkozon.

profile: 'quality', 'balanced', 'low_latency' vagy 'gaming'.

read_only=True: GARANTALTAN nem tovabbit semmilyen eger/billentyuzet/erintes bemenetet a keszulek fele, es nem szinkronizal vagolapot - kizarolag a keszulek kepenek valos ideju megjelenitesehez, a hivatalos scrcpy sajat, dokumentalt kapcsoloival (--no-control, --no-audio, --no-clipboard-autosync) ervenyesitve. Hasznald ezt, ha CSAK meg akarod nezni a kepernyot, anelkul hogy barmilyen veletlen bemenetet kockaztatnal (pl. masok altal hasznalt keszulek, vagy erzekeny/eppen hasznalatban levo sajat keszulek megfigyelese).

print_fps=True: a scrcpy sajat --print-fps kapcsoloja - a tenyleges stream frame rate-et irja a folyamat stderr/stdout-jara, nem becslest ad.

rescue_start_otgA

ADB nélküli, AOA-alapú billentyűzet/egér-vezérlés indítása ('scrcpy --otg').

FONTOS KORLÁT: ebben a módban NINCS kép és NINCS hang - a scrcpy a SAJÁT fizikai USB billentyűzetedet/egeredet továbbítja a telefonnak. Ha a telefon kijelzője még látszik (csak az érintés/ujjlenyomat halott), a saját egereddel/billentyűzeteddel tudsz PIN-t/mintát beírni. Ez NEM automatikus próbálgatás - te (a tulajdonos) írod be, amit tudsz.

rescue_list_sessionsA

A jelenleg futó (vagy nemrég leállt) Rescue munkamenetek listája.

rescue_stop_sessionA

Egy futó Rescue munkamenet (tükrözés vagy OTG) leállítása PID alapján.

rescue_scrcpy_statusB

A hivatalos scrcpy binaris allapota ezen a gepen (megtalalhato-e, verzio).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3/5.0

Scored across 71 tools

Disambiguation2/5

Several tools form overlapping families—screen capture/UI dump/OCR, wait/condition helpers, element-based tap/type wrappers, and rescue diagnostics—so an agent must compare many near-duplicate options before acting. Although the descriptions are detailed and often cross-reference one another, the boundaries are not clear from the tool names alone and misselection is likely.

Naming Consistency3/5

Names are consistently lowercase snake_case, but the grammar is mixed: noun-first names like device_list and screen_record coexist with verb-first names like list_apps and list_files, while some tools are bare verbs like tap, swipe, and wait. Rescue tools also use their own prefix, making the set readable but not a uniform verb_noun convention.

Tool Count2/5

71 tools is far beyond the well-scoped 3-15 range, and many tools are convenience wrappers over other tools, such as observe_screen, tap_element, type_into, scroll, open_app_and_wait, and rescue_probe. The broad Android-control and rescue scope justifies some size, but the surface feels inflated and would be tighter with fewer, more composable tools.

Completeness4/5

The surface covers app lifecycle, UI automation, file operations, device/network info, notifications, logs, backup, and rescue workflows, with shell_run as an escape hatch. Minor gaps exist, such as no direct adb pair support, no clipboard read, and no direct recovery flashing, but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues