visor-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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
| 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 |
|---|---|
| quest_devicesA | List connected Quest/Android devices with connection state. Returns serial, model, connection state (device/unauthorized/offline), and whether the connection is wireless. Use this first if unsure what is connected. |
| quest_infoC | Get detailed device info: model, OS/firmware version, battery level and temperature, free storage, WiFi IP address, thermal status. |
| quest_screenshotA | Take a screenshot of what's currently displayed in the headset and return the image so it can be viewed. Auto-wakes the display if the headset is asleep. Optionally saves to save_path (PNG). |
| quest_installA | Install (sideload) an APK onto the headset. Replaces an existing install of the same package (upgrade). Set grant_permissions=True to auto-grant all runtime permissions (useful for test builds). |
| quest_uninstallB | Uninstall an app from the headset by package name. |
| quest_launchB | Launch an app on the headset by package name (e.g. com.mycompany.mygame). |
| quest_stopB | Force-stop a running app on the headset. |
| quest_app_listA | List installed apps. filter: 'sideloaded' (default — dev/third-party apps), 'system', or 'all'. |
| quest_app_infoA | Get app details: version, install/update dates, target SDK, permissions, data size on disk. |
| quest_clear_dataA | Clear an app's data — resets it to freshly-installed state. Useful for wiping test state (saves, settings, caches). |
| quest_logsA | Get recent logcat entries as structured logs (timestamp/level/tag/ message). level: V/D/I/W/E/F (minimum severity, default W). tag scopes to one log tag (e.g. 'Unity' or 'VrApi'). pattern is a case-insensitive regex applied to tag+message. |
| quest_logs_streamA | Watch logs in real time for duration_seconds (max 60) and return everything captured. Use while reproducing a bug: start this, interact with the app, and the tool returns what was logged in that window. |
| quest_crash_logsA | Get crash and ANR reports (Java crashes, native crashes, ANRs) from the system dropbox, most recent first. Filter by package_name to see crashes for one app. Each entry includes the full stack trace. |
| quest_performanceC | Get a performance snapshot: CPU usage, memory, thermal status with throttling risk, battery level/drain (mA, negative = discharging), foreground app, and top processes by CPU. |
| quest_monitorA | Monitor performance over time (max 120s) and return a timeseries of snapshots. Use while exercising an app to spot CPU spikes, memory growth, or thermal climb. |
| quest_thermalA | Check thermal state: overall throttle status, every temperature sensor with warning/critical flags, and max skin temperature. Quest throttles CPU/GPU as skin temps climb — watch for warnings during long play sessions. |
| quest_frame_timingA | Get live VR frame timing for the running app: FPS vs target, stale frames, GPU/CPU utilization and dynamic levels, app GPU time vs frame budget. Captures ~6s of the VrApi metrics stream. Falls back to gfxinfo for 2D/panel apps that don't render in VR. |
| quest_perf_sessionA | Record a full performance profiling session (max 300s) and return a summary, a bottleneck diagnosis (GPU-bound / CPU-bound / thermal throttling / memory pressure / hitching, with evidence and recommendations), and notable events. Use while the user exercises their app in the headset. The full session (per-second VrApi metrics, memory anatomy, thermal timeline) is saved to a JSON file whose path is returned — pass two such paths to quest_perf_diff to compare runs. Defaults to the current foreground app. |
| quest_perf_diffA | Compare two recorded perf sessions (JSON files from quest_perf_session), e.g. before/after an optimization. Returns metric deltas (fps, stale frames, GPU/CPU load, memory growth) and the verdict change. |
| quest_launch_benchmarkA | Benchmark an app's cold-start time: force-stop then timed launch, N times (max 5). Returns per-run timings and min/median/max — useful for measuring startup optimizations. |
| quest_traceA | Capture a perfetto system trace (max 60s): per-thread scheduling, CPU frequencies, graphics events. Use when session metrics show a problem (hitches, CPU-bound) and you need to see exactly what blocked. The .pftrace file can be opened at https://ui.perfetto.dev. |
| quest_app_memoryA | Get an app's memory anatomy (PSS in KB): java heap, native heap, code, stack, and graphics — graphics allocations (textures, buffers, surfaces) are usually what exhausts memory in VR apps. |
| quest_screen_recordA | Record the headset screen for N seconds (max 180) and save the MP4 locally. Returns the file path — useful for capturing a bug repro. |
| quest_pushA | Push a local file to the device (e.g. test assets to /sdcard/Android/data//files/). |
| quest_pullA | Pull a file from the device to the local filesystem (e.g. save files, logs written by the app). |
| quest_filesA | List a directory on the device. App data lives under /sdcard/Android/data//files/. |
| quest_connect_wirelessA | Switch the USB-connected headset to wireless ADB so the cable can be unplugged. The headset must be on WiFi. |
| quest_set_refresh_rateA | Set the display refresh rate hint (Quest 3: 72/80/90/120 Hz). Apps that request an explicit rate override this. |
| quest_trackingB | Check tracking subsystem status: head/hand/eye/body/controller tracking service availability, plus guardian boundary state if exposed. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 29 tools
Most tools have distinct purposes, but closely related pairs like quest_logs/quest_logs_stream and quest_performance/quest_monitor may require careful reading of descriptions to select correctly. The detailed tool descriptions largely resolve ambiguity.
All tools use the quest_ prefix and snake_case, but the naming pattern is mixed: some are verb-first (quest_install, quest_launch), some are noun-first (quest_app_list, quest_frame_timing), and others are single nouns (quest_thermal, quest_info). This inconsistency is readable but not uniform.
With 29 tools, the server exceeds the typical well-scoped range (3-15) and falls into the 'too many' category. While the broad domain justifies many tools, the heavy count can overwhelm an agent and includes several closely related performance/logging utilities.
The toolset provides comprehensive coverage of Quest device management and debugging: app lifecycle, file transfer, logging, crash reporting, performance profiling, screen capture, and device status. No major gaps or dead ends are apparent for the stated purpose.