Oculus Debug MCP
Provides tools for monitoring and controlling the Oculus/Meta Quest Link PC runtime, including runtime settings, ASW mode, performance capture, screenshots, logs, device diagnostics, and profile management.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Oculus Debug MCPtake a stereo screenshot and record 5 seconds of performance data, then explain any dropped frames"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Oculus Debug MCP
A local Windows stdio MCP server that gives compatible AI assistants 32 tools, access to 86 discovered Oculus CLI commands, native VR screenshots, performance data, headset/controller diagnostics and reversible tuning controls.
Installation
Requires Windows, Python (tested with 3.13), and the Oculus/Meta Quest Link PC software. The server runs on the same Windows PC as the VR application. Meta executables and libraries are not bundled.
Clone or download this repository, then open PowerShell in its folder:
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
$odt = (Get-Location).PathFor Claude Code, register it for your user account:
claude mcp add --transport stdio --scope user oculus_debug -- "$odt\.venv\Scripts\python.exe" "$odt\server.py"Open a new Claude Code session and use /mcp to check the connection.
For Codex:
codex mcp add oculus_debug -- "$odt\.venv\Scripts\python.exe" "$odt\server.py"Alternatively, ./install.ps1 creates the environment, installs dependencies and registers the server with Codex. Start a new task or restart the host to load the tools.
For Cursor and clients using mcpServers, merge this entry into the client's MCP configuration. Replace both example paths with the absolute path to your checkout. Cursor supports ~/.cursor/mcp.json or a project .cursor/mcp.json.
{
"mcpServers": {
"oculus_debug": {
"command": "C:/path/to/oculus-debug-mcp/.venv/Scripts/python.exe",
"args": ["C:/path/to/oculus-debug-mcp/server.py"]
}
}
}VS Code uses a servers object in .vscode/mcp.json instead of mcpServers; add "type": "stdio" inside the server entry. Other local stdio MCP hosts can use the same executable and argument. Keep the checkout in place after registration. No API key or network listener is required.
See the official Claude Code, Cursor, and VS Code setup guides.
Example request:
Use oculus_debug to take a stereo screenshot and record five seconds of performance data from my running VR application. Explain any rendering or dropped-frame problems.
Save a baseline settings profile, then compare the same scene before and after a tuning change. Restore the baseline when finished.
Related MCP server: system-media-control-mcp
Tools
Tool | Purpose |
| Oculus service, runtime registration, ASW mode, enumerated headsets |
| Help from the installed Oculus CLI version |
| ASW availability/mode, headset enumeration, resolution policy, pose-injection status |
| Record 1–30 seconds and save raw JSON plus a readable summary |
| Compare saved CPU/GPU timing and lost-frame metrics |
| Auto, off, Clock45 or Sim45; record previous value and read back the result |
| Numeric HUD mode 0–6; 0 hides it |
| Pixels-per-display-pixel override, 0 or 0.5–2 |
| Horizontal/vertical tangent multipliers, 0.5–1, or both 0 for defaults |
| Recent Oculus service, client, Link and performance logs |
| Bounded tail of a selected log |
| Full installed-version command catalogue, setting schemas and limitations |
| Native PNG returned as an MCP image; left, right, both eyes or distorted view |
| Short sequence of native PNGs plus an animated GIF |
| Start and stop MCP-owned Mirror instances |
| Read/write 21 named runtime and HUD properties with readback |
| Headset presence, mounting, head/hand poses, buttons, triggers and sticks |
| SDK profiler JSON/CSV including latency, CPU/GPU, ASW and visible process ID |
| Inspect user/machine overrides and modify 15 user Link settings |
| Exact available runtime/ASW and Link override snapshots, restoration and undo |
| Advanced access to the locally enumerated CLI commands |
| Command details and read-only diagnostic queries |
| Layer visibility, head locking, filtering and texture origin |
| Explicit Oculus service start, stop or restart |
| Request a trace into a new capture file |
| Open Debug Tool, Log Gatherer or VRC Validator for interactive use |
| Local ZIP of telemetry, settings, status, optional screenshot and log tails |
Screenshots
Screenshots use the installed OculusMirror.exe --Screenshot command. They capture VR content directly, without a visible desktop capture window. The MCP returns the PNG image content so the assistant can inspect it, and saves the original image and metadata locally. Generated screenshots and local verification reports are excluded from this repository.
The optional options object accepts these keys:
Boolean flags:
guardian,notifications,system_gui,disable_timewarp,symmetric_fov,disable_fov_stencil,native_resolution,flash_frame_drops,load_saved_settings.fov_multiplier:[horizontal, vertical], each 0.5–2.
Post-distortion mode cannot be combined with these optional flags. Use ordinary left/right/both-eye screenshots without options for an unmodified view. Some flags affect runtime rendering behavior or need an app restart. Image dimensions may be constrained by Mirror and the display.
Black frames are saved and labelled black_frame; they can mean an asleep headset, no active scene, a fade or protected content. Screenshot sequences include actual timestamps and an animated GIF. They are sequential snapshots, not high-speed video, and cannot establish the absence of brief flicker.
Verification
Development verification against a running PC VR application covered 32 tool registrations and 86 catalogue entries; a real PNG returned over MCP; SDK profiler frames; headset/controller state; runtime and Link reads; a same-value HUD write and baseline restoration; PNG/GIF sequence generation; owned Mirror start/stop; and diagnostic ZIP creation. The stereo view was visually inspected. Twelve automated tests cover capture lifetime, black/idle samples, units, type/range checks, profile comparisons and command boundaries.
Local recordings and verification reports are not distributed. Run the verification scripts below to collect evidence on your own setup.
Service interruption, deliberate hardware failures, advanced passthrough experiments and Link encoder changes were not executed during development testing. Their commands/settings were discovered and exposed; hardware support and effects remain dependent on the runtime and headset.
Interpreting captures
ok means application timing samples were present. compositor_only means the compositor produced frames but the capture had no application timing samples; this can happen while the app is idle or the headset sleeps. no_samples means no frames were captured. Missing application timings are reported as null, never as evidence of zero-cost rendering.
The reported frame rate comes from compositor event timestamps; it is not necessarily the application's frame rate. Raw timing fields are in seconds; summary rendering durations are converted to milliseconds. Compare the same scene under similar conditions and for similar durations. Lost-frame counts depend on recording duration.
Scope and limitations
This connects to the installed Oculus/Meta Quest Link PC runtime. It reads controller state but does not play games, move the physical headset, inspect game source or debug standalone Quest applications. The native API uses an invisible diagnostic session, so its own IsVisible flag is not the game's visibility flag. Check tracking validity flags before using poses, and treat reported headset model names as possible compatibility identities.
The CLI stays alive throughout recording; exiting after the start command prematurely ends the capture. Output uses relative filenames because the installed CLI did not accept quoted capture paths. Captures and settings are serialized across this server's instances. Oculus's telemetry facility is shared, so avoid simultaneous recording from another Oculus tool.
Prefer get_runtime_settings and set_runtime_setting for tuning: the native API provides readback for the named runtime/HUD properties. The original CLI convenience tools retain their delivery-only reporting. pose_injection uses its supported CLI setter plus native readback because the direct property setter is read-only on this build. Reading back a property proves the stored runtime value, not the application's rendered result; verify effects with measurements/screenshots.
Runtime setting writes save a narrow baseline for the setting being changed. Full profiles also preserve ASW and user/machine Link observations. Restoration changes only differing values, removes user Link overrides that were absent at capture time, creates an undo profile, and reports individual failures. It is not atomic. Defaults are not a substitute for an unknown prior custom setting.
Link settings use the registry keys embedded in the installed Debug Tool. The API exposes raw integer values rather than guessing GUI enum labels. It verifies the user registry value and leaves the machine values alone. This does not verify the active encoder state; Link changes generally require a service restart, which is never automatic.
control_service can explicitly start/stop/restart Oculus, subject to Windows privileges. Stop/restart interrupts active VR. Advanced CLI commands include ASW experiments, passthrough diagnostics, emulation and deliberate camera failure simulation. Use them only for an intended experiment after reading command_help. The MCP never changes OpenXR runtime registrations.
Coverage boundaries
The catalogue covers every client subcommand and server command returned by this installed CLI's help. Managed telemetry start and allocator trace calls are routed through dedicated tools for correct recording lifetime and file handling. The catalogue is a snapshot of ODT 85.0.0.0.549; it should be rediscovered after substantial Oculus updates.
Features with no verified unattended interface remain available through the original GUI: ODA archive editing/viewing, the Scene View's interactive camera controls, Mirror image-stabilization/override-view menus, proximity-sensor bypass and custom trace-merge scripts. open_diagnostic_utility can open the original tools, but does not pretend to automate those features. Log Gatherer is opened interactively and no log upload is submitted. The original ETW helper scripts and application validator workflows are not run automatically.
Files and troubleshooting
Raw captures, images, profiles, CSV files, bundles and the setting audit log stay locally under captures/. Logs can include local paths and device identifiers. There is no network listener or telemetry upload in this server. CLI subprocesses have timeouts and run without a command shell. Native runtime API work is isolated in disposable worker processes.
The Meta Quest Link service must be available. In testing, sandboxed Oculus CLI execution timed out while ordinary execution connected successfully. A timeout message reports this possibility rather than claiming that no headset exists.
If Oculus is installed elsewhere, set OCULUS_DIAGNOSTICS_DIR to the folder containing OculusDebugToolCLI.exe in the MCP server environment. Installation discovery also checks the Oculus installation registry and the standard Program Files location.
Run install.ps1 from PowerShell to recreate dependencies and registration if needed. Python 3.13 was used for testing. To remove the Codex registration, run codex mcp remove oculus_debug; this preserves all captured files.
For developers:
.\.venv\Scripts\python.exe -m unittest -v
.\.venv\Scripts\python.exe .\verify_live.py
.\.venv\Scripts\python.exe .\verify_extended.pyverify_live.py takes two short recordings and reapplies the current ASW setting when it is auto or off. It saves the resulting MCP evidence to verification.json.
verify_extended.py tests the expanded tools, captures screenshots/profiler data, reapplies the existing HUD value and restores its saved baseline. It does not test service interruption or encoder changes. It saves evidence to verification-extended.json.
References
Controls were checked against the help output of the locally installed OculusDebugToolCLI.exe. Meta documents the Debug Tool's performance HUD and runtime diagnostic purpose in Oculus Debug Tool. Registration follows the official Codex MCP documentation.
Mirror options were checked against the installed binary and Meta's Compositor Mirror documentation. Native data layouts were checked against the Oculus C API header and the published ovr-sys 1.15 ABI bindings, then verified against this PC's runtime.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Turns a phone into a camera+Bluetooth remote so AI assistants can see and control any PC.
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Live browser debugging for AI assistants — DOM, console, network via MCP.
60+ Meta Ads tools for AI agents: audits, campaign management, audiences and CAPI tracking.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to diagnose, troubleshoot, and manage PC settings on Windows, macOS, and Linux through natural language commands.GPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to monitor system resources and control media, brightness, volume, and other Windows PC functions through natural language commands.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to diagnose Windows computer problems safely through a consent-first, read-only default remote diagnostics bridge.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to retrieve structured information about the local Windows machine, including system specifications, resource health, developer tools, and AI environment, all through a secure, read-only interface.MIT
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/farmerarmor/oculus-debug-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server