polyscreen-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ADB_PATH | No | Absolute path to the adb executable. If not set, adb is expected on PATH. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| mobile_server_infoA | Return package version, active profiles, and the exact registered tool list. Call after reconnect to verify Cursor sees the full core surface. |
| mobile_devices_listA | List ADB devices with reachability, hardware serial grouping, preferred TCP serial, and aliases when the same device appears under multiple serials. |
| mobile_device_inspectB | Probe the selected device's actual ADB, input, command, build, and backend capabilities. |
| mobile_displays_listA | List logical displays and correlated physical capture IDs with evidence and focus state. |
| mobile_screen_captureA | Capture one logical display after resolving its SurfaceFlinger physical display ID. |
| mobile_screen_recordA | Blocking record of one physical-backed display for a bounded duration. Prefer mobile_record_start/mark/stop when input must be interleaved. |
| mobile_sessions_statusA | Return active async recording, focus, and logcat sessions (optional serial filter). Use before stop/mark to recover IDs after a reconnect. |
| mobile_record_startA | Start a non-blocking screenrecord on one logical display so input tools can run during capture. One active session per (serial, displayId). |
| mobile_record_markA | Attach a labeled timestamp (offsetMs from record start) for later correlation with analyze/focus/logcat. |
| mobile_record_stopA | Stop screenrecord with SIGINT, pull the MP4 into artifacts, and return marks with offsets. |
| mobile_analyze_recordingA | Sample mean grayscale over an MP4 (ffmpeg), detect black/dim runs, and classify OEM-agnostic brightness buckets (true_black, near_black_content, system_launcher_idle, dark_app_ui, light_app_ui). Bucket ranges are heuristics—calibrate with exportSampleFrames on the device under test. Use mode='flash' for one-call regressions. Full per-frame timeline is omitted unless includeFullTimeline=true. |
| mobile_theme_flash_reportC | Correlate system night mode with a recording analysis (mode=flash) and marks whose offsets fall inside any reported black/dim run (± markWindowMs). |
| mobile_focus_traceA | Blocking sample of focused package/activity/taskId for a fixed duration. Prefer mobile_focus_trace_start/stop when interleaving input or recording. Large sample sets are written to an artifact; only a compact prefix is inlined. |
| mobile_focus_trace_startA | Start non-blocking focus sampling for logical displays. Optionally bind to a recordId so samples include recordOffsetMs aligned with record marks. Default interval 250ms; samples are ring-buffered (maxSamples). |
| mobile_focus_trace_stopA | Stop an async focus session and return focus change events plus samples (wallClockIso, tMs, optional recordOffsetMs). Prefer |
| mobile_artifacts_listA | List metadata stubs (uri, name, mime, size) for files under the artifact root. Does not embed binary contents. |
| mobile_artifacts_pruneA | Delete old or excess artifact files by maxAgeMs and/or maxCount. Use dryRun to preview. |
| mobile_screen_capture_pairA | Capture multiple logical displays as tightly paired same-moment screenshots (parallel screencap after one display resolve). |
| mobile_ui_snapshotB | Return parsed accessibility nodes. Portable ADB supports only display 0; other displays require the companion. |
| mobile_ui_findB | Find accessibility nodes by text, content description, or resource ID. |
| mobile_ui_waitA | Poll until a matching accessibility node appears or the bounded timeout expires. |
| mobile_input_tapA | Inject a display-targeted touchscreen tap in logical display coordinates. |
| mobile_input_swipeC | Inject a display-targeted touchscreen swipe with explicit duration. |
| mobile_input_dragC | Inject a capability-gated long-press drag-and-drop on one logical display. |
| mobile_input_key_combinationA | Inject a device-supported key combination with explicit ordering and chord duration. |
| mobile_input_keyB | Send symbolic or numeric Android keys with gamepad source and capability-gated press options. |
| mobile_input_textA | Type text through ADB's virtual keyboard. Reports the Unicode limitation instead of hiding it. |
| mobile_app_inspectB | Read package state, permissions, components, users, and installation metadata. |
| mobile_app_launchC | Resolve and launch an activity on a logical display with ActivityManager wait diagnostics. |
| mobile_app_stopB | Force-stop a package, including its processes and pending implicit launches. |
| mobile_app_relaunch_on_displaysA | Force-stop a package, then launch its main (or given) activity on each logical display in order. Use for dual-display cold-start / flash reproduction. |
| mobile_app_installB | Install one local APK with a bounded timeout and structured ADB result. |
| mobile_app_uninstallB | Uninstall a package, optionally retaining its data. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Zyzto/polyscreen-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server