Skip to main content
Glama
expo-headless-mcp

expo-headless-mcp

use_target

Selects the app test target: built-in headless renderer or Android/iOS device via Expo Go, handling consent, Expo Go setup, and dev server launch.

Instructions

Chooses where the app is tested: "headless" (default, built-in renderer) or "device" (Expo Go on an Android emulator / USB phone via adb, or a booted iOS Simulator on macOS). Selecting "device" first asks the user for consent to control a physical phone, to install Expo Go if missing, and to replace an Expo Go whose SDK does not match the project; then starts the Expo dev server and opens the app. If the user declines, nothing is changed.

Input Schema

NameRequiredDescriptionDefault
serialNoadb serial or iOS simulator UDID from device_list (needed if several targets are ready)
targetYes
confirmedNoConsent keys the user approved in chat (only when a previous call asked you to relay a question)
projectPathNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the consent gate, potential Expo Go installation, replacement of an SDK-mismatched Expo Go, dev-server startup, app launch, and that a declined consent leaves nothing changed. It does not say whether an already-running dev server is restarted or what the call returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded paragraph that starts with the choice and its options, then layers the consent/installation consequences. Every sentence carries information; the second sentence is dense but justified by the side effects it discloses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutating tool with no annotations and no output schema, the description covers the consequential behavior (consent, installs, server start) well. The remaining gaps are `projectPath` semantics and the return value, which matter but are secondary to correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%. The description adds real meaning for `target` (semantics of each enum value and the default), but leaves `projectPath` undefined in both schema and description, and only implicitly touches `confirmed` via the consent narrative. The schema's own description of `serial` and `confirmed` does the rest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and object ('Chooses where the app is tested') and then defines both enum values precisely — headless as the default built-in renderer, device as Expo Go on an emulator/USB phone/iOS Simulator. An agent can distinguish this from device_list (which enumerates devices) without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the default (headless) and the conditions under which 'device' is the right choice, plus what happens if the user declines. It stops short of explicitly routing the agent to device_list first when several targets are ready, though the serial parameter hints at that sequence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.