Cua Driver lets any computer-use agent drive the host desktop — installed apps, signed-in browser sessions, local files, and the current OS user session. MCP-capable agents connect throughDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/trycua/cua/llms.txt
Use this file to discover all available pages before exploring further.
cua-driver mcp; applications that want an in-process runtime import the Python or TypeScript SDK directly.
This page connects an agent to Cua Driver on the current machine. To create a disposable isolated desktop instead, use Cua Sandbox.
Before you start
Install Cua Driver, start the daemon, and verify it can see the host desktop:Decide the permission mode first
Registering the MCP server does not choose a permission mode — the process that owns the driver runtime does, at launch. Every config below therefore runs in the defaultstandard mode unless you configure the owning process.
- macOS:
cua-driver mcpproxies to theCuaDriver.appdaemon to keep TCC attribution with the app, so that daemon’s launch flags decide the mode. Start it in the mode you want before the client connects, and use autostart to make that persist across reboots. - Windows and Linux: bare
cua-driver mcpowns its own runtime and has no--permission-modeflag. Either setCUA_DRIVER_PERMISSION_MODE— plusCUA_DRIVER_SESSION_POLICY_FILEandCUA_DRIVER_SESSION_POLICY_APPROVEDforbounded— in the client’senvblock, or run acua-driver servedaemon in that mode and point the client at it with--socket.
Generate the client config
mcp-config prints the exact registration command or JSON for any supported client:
Claude Code
Register the standard stdio server:cua-computer-use server name. This matches the mcp__cua-computer-use__screenshot tool name that Claude Code uses as its image-grounding cue:
screenshot, which in compatibility mode requires pid and window_id and captures that specific window only. Generate the current exact command at any time:
Codex
Print the Codex registration command:Cursor
Generate the Cursor JSON snippet:~/.cursor/mcp.json (global) or .cursor/mcp.json (project scope):
cua-driver appears in the MCP server list.
Generic MCP JSON config
For any client that accepts the standardmcpServers shape, print the generic config:
cua-driver server is connected.
Other supported clients
mcp-config also prints the correct shape for clients that use config files or different add commands:
| Client | Generate with | Notes |
|---|---|---|
| Antigravity | cua-driver mcp-config --client antigravity | Paste into ~/.gemini/config/mcp_config.json; --client gemini is a legacy alias. |
| OpenClaw | cua-driver mcp-config --client openclaw | Gateway-spawned MCP does not inherit OpenClaw.app’s macOS grants; use the embedded host instead. |
| OpenCode | cua-driver mcp-config --client opencode | Configure a real MCP server so screenshots are preserved in image blocks. |
| Hermes | cua-driver mcp-config --client hermes | Paste under mcp_servers and reload MCP servers in Hermes. |
| Qwen Code | cua-driver mcp-config --client qwen | Supports both a CLI add command and ~/.qwen/settings.json. |
| Factory Droid | cua-driver mcp-config --client droid | Supports CLI and JSON config forms. |
| ZCode | cua-driver mcp-config --client zcode | Configure MCP in the GUI, or use zai mcp add for the Z.ai CLI. |
command -v cua-driver and use the client’s native stdio MCP interface:
Python in-process SDK
Applications that want to embed the runtime directly — without a separate daemon — import the Python SDK. The same native runtime runs in-process through generated UniFFI bindings:CuaDriver.create() loads the native runtime in the application process. A daemon is not required for direct application use. The connect() path is retained for clients that want to connect to an external daemon.
TypeScript in-process SDK
/sdk, /mcp, or /native public suffix.
The language packages (
cua_driver for Python, @trycua/cua-driver for TypeScript) are for client applications, not for agents. MCP remains implemented by the cua-driver executable as the runtime-neutral agent boundary.Next steps
Permission Modes
Lock an agent to a bounded manifest or grant unrestricted access.
Background Delivery
Understand how agents act without stealing focus or moving your cursor.