mobile-debug-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| launch_app | Launch an app and return its landing screen. Force-stops the app, optionally clears its data, then starts it (a specific
Args:
package: App package id, e.g. |
| get_screen_state | Return the current screen as a compact, element-indexed list. One line per interactable/text element with a short id ( Args: include_screenshot: Attach a downscaled screenshot image block. |
| take_screenshot | Capture the current screen as an image — no hierarchy dump. Use this for a purely visual check: canvas/Flutter/game/video screens where the
element list comes back empty, a visual sanity check, or evidence capture. It is
faster and more reliable than Args:
save_path: If set, write the full-resolution PNG to this path and return the
path only — no inline image, no token cost. Use for evidence/report assets.
If unset, return a downscaled inline image block.
max_dim: Max width/height for the inline image (ignored when |
| tap_elementA | Tap an element by id (preferred) or by raw coordinates. Returns the new screen state and the log delta the tap produced. If the target moved or vanished since the last observation, it is re-resolved by selector, or the fresh screen is returned so you can retarget in one turn. Args:
element: Element id from a recent screen state, e.g. |
| input_text | Type text into a field, optionally focusing it first and submitting. Phase 1 types via Args:
text: The text to type.
element: Optional field element id to focus first, e.g. |
| get_logsA | Query app logcat, PID-scoped to the current app. By default returns the classified delta since the last action (crashes, ANRs,
errors + counts). With Args:
lines: Max lines to fetch when not scoping to the last action.
level: Minimum priority to show raw: |
| press_key | Send a hardware/navigation key and return the new screen. Args:
key: Key name ( |
| swipe | Swipe/drag from one point to another (scroll lists, dismiss sheets). Args: x1: Start X pixel. y1: Start Y pixel. x2: End X pixel. y2: End Y pixel. duration_ms: Gesture duration; longer = slower, more controlled scroll. |
| navigate_to | Navigate to a known screen by name, using the learned app map. Instead of re-exploring the UI, this plans a route over screens the app map has
already learned (built automatically as the app is driven), declares the route
— e.g. Call with Args:
target: Screen to reach — matched by name, activity, or how it's reached
(the label of the tap that leads there, e.g. |
| get_mapA | Return the learned app map for the current app — where is what. Lists every known screen (name, activity, fingerprint, saved screenshot) and how each is reached (the incoming transitions), so you can plan against a map before touching the device. The map is built automatically as the app is driven. |
| map_app | Auto-explore the current app to fill the navigation map (bounded, best-effort). Breadth-first from the current screen: taps each untried element, records where it
leads, and returns to a known screen between taps (relaunch → Args: max_screens: Stop once the map holds this many screens. max_taps: Hard cap on total taps performed during the crawl. |
| reset_app | Reset the app to a known-good starting state and verify where it landed.
Args:
package: App to reset; defaults to the app currently in the foreground.
mode: |
| go_home | Return to the app's root screen, whatever screen you're on. Escalates cheapest-and-most-deterministic first: follow a learned map route, else unwind the back stack pressing BACK and re-checking the screen after every press (stopping the moment BACK would leave the app), else relaunch. Never blind-presses. Args: max_back: Maximum BACK presses to try while unwinding before relaunching. |
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/Techmanu-PVT-LTD/mobile-debug-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server