A guarded MCP server for build, device, Appium, verification, and agentic mobile development loops.
mobiloop-mcp provides 13 Appium-focused tools with basic naming and schemas, but suffers from significant gaps in parameter descriptions, output schema documentation, and error handling guidance. Tool names follow verb_noun convention (tap_by_text, observe_screen), which is good. However, most parameter descriptions are missing or minimal. The locator parameter in tap_by_accessibility_id, tap_by_resource_id, type_text, wait_for_visible, assert_visible, and assert_not_visible is defined as type 'object' with no description of its structure, required fields, or expected format, forcing LLMs to guess. Output schemas are not documented anywhere in the visible code. Error handling is absent: no guidance on retryability, recovery steps, or actionable error messages. The tool-policy.ts file shows policy metadata exists but is not exposed in tool definitions. This is a domain-specific (mobile automation) server with reasonable scope but mediocre execution.
Assert that an element is not visible.
Assert that an element is visible.
Create an Appium session. Pass W3C capabilities or raw capabilities object.
Delete an Appium session.
Return a compact accessibility summary parsed from page source.
Return raw Appium page source XML.
Capture screenshot and page source for the current Appium session, optionally waiting for app UI readiness.
Undocumented locator parameter structure. Six tools (tap_by_accessibility_id, tap_by_resource_id, type_text, wait_for_visible, assert_visible, assert_not_visible) accept a 'locator' object with no description of required fields, valid keys, or expected format. LLMs cannot infer the structure and will guess incorrectly.
No output schema documentation. None of the 13 tools document what fields they return, their types, or structure. LLMs cannot plan downstream calls or extract required data (e.g., session IDs, element references).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Tap by accessibility id.
Tap by Android resource id or Appium id locator.
Tap a visible element by text with exact-first matching before contains fallback.
Tap screen coordinates. Use only when semantic locators are unavailable.
Type text into an element located by accessibility id, id, xpath, text, or native selector.
Wait for an element to become visible.
Missing parameter descriptions. Parameters like 'prefix', 'waitForAnyText', 'waitForPackageIdle', 'minWaitMs', 'stableMs', 'timeoutMs' in observe_screen lack descriptions. LLMs cannot determine when to use these options or what values are appropriate.
No error handling guidance. Tools provide no recovery hints, retryability classification, or actionable error messages. An LLM receiving 'Element not found' has no guidance on whether to retry, adjust the locator, or escalate.
Tool descriptions are generic and lack context. Most descriptions (50-70 chars) state WHAT the tool does but not WHEN to use it or how it differs from similar tools. E.g., 'Tap by accessibility id' vs 'Tap by resource id', no guidance on which to prefer.