conductor-desktop
Enables automation of Android devices through ADB, including mobile taps and interaction with mobile apps and screens.
Provides web page automation for Firefox tabs via WebDriver BiDi, including web_eval and related browser interaction tools.
Supports desktop automation on FreeBSD, including screen capture, input control, accessibility tools, and web automation where available.
Supports desktop automation on GNOME Wayland sessions using screen capture, input, and accessibility-based UI actions.
Supports desktop automation on wlroots/Hyprland Wayland sessions using screen capture, input, and accessibility-based UI actions.
Enables automation of iOS devices via WebDriverAgent, including mobile taps and interaction with the device screen.
Supports desktop automation on KDE Plasma Wayland sessions using screen capture, input, and accessibility-based UI actions.
Provides desktop automation on Linux, including X11 and Wayland desktops, with screen capture, input control, accessibility tree actions, and web tools.
Provides desktop automation on macOS, including screen capture, keyboard and mouse input, accessibility tree actions, and web automation.
Supports desktop automation on Wayland sessions, including GNOME, KDE Plasma, and wlroots/Hyprland, using screen capture, input, and accessibility tools.
Click on "Deploy 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., "@conductor-desktopOpen the calculator app and calculate 12 times 8"
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.
conductor-desktop
Desktop / mobile / web automation server speaking the Model Context Protocol.
Add it to any MCP client (Claude Code, Claude Desktop, Codex, Gemini CLI, Cursor, VS Code, opencode, your own agent) and the agent can see and drive the real desktop: read_screen, capture_screen, click, type_text, hotkey, ui_find, web_eval, mobile_tap and the rest.
Three ways to see and act, because no single one covers every app:
Visual:
capture_screenshows the agent the screen andclick_atacts on what it sees. With a grounder model configured,read_screen,locateandclickalso work by description. Works on anything, including canvases, games and remote desktops.Accessibility:
ui_tree/ui_findand theui_*actions read a native app's own control tree and act on it by reference rather than coordinates. No pointer, and a stale reference fails instead of clicking the wrong thing.Web:
web_evaland friends work on the page itself, over CDP (Chrome) or WebDriver BiDi (Firefox).
The server tells the agent how to use all this: it sends MCP instructions and each tool describes itself, so there's no manual to paste in.
Because this hands an agent a real keyboard, mouse and shell, every tool call is recorded to a daily audit log: on by default, secrets redacted, pruned after two weeks.
Quick start with Claude
git clone https://github.com/yuuko-eth/conductor-desktop && cd conductor-desktop
uv sync # creates .venv; Linux: see the setup guide for your desktop first
.venv/bin/conductor-desktop-check # checks screen capture, input and the backendOn macOS, grant Screen Recording and Accessibility to the app that launches the server, or, if macOS asks about it instead, to the Python binary conductor-desktop-check names (setup-macos.md). On Linux, the accessibility tools need the system's python3-gi, so follow your desktop's setup guide under Platforms.
Claude Code:
claude mcp add --scope user conductor-desktop -- "$PWD/.venv/bin/conductor-desktop"Claude Desktop: add this to claude_desktop_config.json (Settings → Developer → Edit Config), with your own path, then restart Claude Desktop:
{
"mcpServers": {
"conductor-desktop": {
"command": "/absolute/path/to/conductor-desktop/.venv/bin/conductor-desktop"
}
}
}That's enough: Claude looks with capture_screen and acts with click_at, the ui_* tools and the web_* tools. A screenshot smaller than the screen says so, and image_coords=true maps its pixels back. A grounder model is optional. It adds read_screen (a cheap text read of the screen) and locate / click by description, which saves image tokens on long sessions; see grounder ensembles. Settings are environment variables, listed in examples/mcp-executor.env.example.
Other clients (Codex, Antigravity, Gemini CLI, Grok, Cursor, VS Code, Windsurf, opencode, Kilo, goose, Cline, Zed, Continue) take the same command in their own format: examples/clients/ has a file for each, and where it goes.
To tell the agent about your machine (its language, the apps it should use, what to leave alone), drop a filled-in operator briefing into your CLAUDE.md.
Related MCP server: Open Computer Use
Layout
conductor_desktop/: the MCP server, tool handlers, tray, dashboardconductor_desktop/core/: platform infrastructure (executors, perception, backends)Docs live at docs.conductor-mcp.io: ui tools for driving native apps through the accessibility tree; web tools for Chrome and Firefox tabs; grounder ensembles for mixing point / describe / region models; audit log; hardening for what is optional and when you'd want it; platform coverage for what each OS and desktop supports; design for the architecture
examples/: client configs, the env reference, and operator briefingssetup/: per-platform dependency installerstests/: pytest suite
Status
Pre-release (0.1.0). Known issues:
On Windows,
read_gridreturns only the rows on screen.From macOS, typing into a remote-desktop or VM window sends the wrong characters; drive the remote side with its own conductor-desktop instead.
The HTTP transport is plain HTTP. It binds to loopback by default; off loopback it requires a bearer token (
CONDUCTOR_DESKTOP_AUTH_TOKEN_FILE), which crosses the network unencrypted, so tunnel over SSH on a network you don't trust.
Platforms
macOS, Linux (X11; Wayland on GNOME, KDE Plasma and wlroots/Hyprland), FreeBSD, Windows 10/11, Android (via ADB), iOS (via WebDriverAgent). What each one supports, and where the accessibility modality is degraded: platform coverage. Each desktop has a dependency installer in setup/ and a setup guide on the docs site: X11, GNOME Wayland, KDE Plasma, macOS, Windows; Linux packages and the gi ABI trap are collected in Linux. Haiku R1/beta5 is covered by a separate TypeScript extension, conductor-haiku.
This server cannot be deployed
Maintenance
Related MCP Connectors
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Let AI agents control Android and iOS devices on Mobilerun Cloud: screen, input, apps, workflows.
Let your AI agent operate any website through a real, logged-in browser session.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceLets AI agents see and control desktop applications through the accessibility layer, enabling clicking, typing, scrolling, dragging, and window/app management across macOS, Windows, and Linux entirely on the local machine.15MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to observe and control the user's live desktop by listing apps, reading accessibility trees, and performing clicks, typing, scrolling, dragging, and other input actions with per-action approvals and local audit archives.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to automate desktop operating systems and applications through UI automation, screenshots, and input simulation.1MIT
- AlicenseAqualityAmaintenanceEnables AI agents to automate GUI interactions across Windows, Linux, macOS, Android, iOS, and browsers using structured platform APIs first, with vision grounding as a fallback for robust cross-platform computer use.17MIT