holo mcp over stdio. The CLI starts the desktop runtime locally and exposes one tool named holo_desktop.
MCP support is beta. The protocol and host implementations are still moving, especially around cancellation and long-running desktop tool calls.
When an MCP host calls HoloDesktop CLI, it delegates control of the visible desktop. The CLI may open apps, switch focus, click, type, and observe whatever is on screen until the task completes, times out, or is cancelled.
Before you start
Run one CLI task first to check that HoloDesktop CLI starts on this machine:HAI_AGENT_RUNTIME_MODEL too if your local server needs a model ID, for example Hcompany/Holo-3.1-35B-A3B.
That export works for terminal-launched hosts such as Claude Code, Codex, OpenCode, or other MCP clients you start from the same shell. GUI apps launched from the Dock or Finder usually do not inherit shell exports. For those hosts, add the variables to the host’s MCP config if it supports an env block, or start the host from a shell that already has the variables set.
List supported hosts
| Host ID | Host |
|---|---|
claude-code | Claude Code |
claude-desktop | Claude Desktop |
codex | Codex |
cursor | Cursor |
opencode | OpenCode |
openclaw | OpenClaw |
hermes | Hermes |
copilot | GitHub Copilot CLI |
antigravity | Antigravity |
Install into one host
Install into Claude Code from the workspace where Claude Code should use HoloDesktop CLI:local scope. HoloDesktop CLI calls that CLI, so the MCP server is registered for the current Claude Code workspace. Claude stores the local-scoped entry in its own config, associated with that project path, rather than in a HoloDesktop CLI-managed mcp.json file.
Install into Cursor:
holo install either calls the host’s own MCP CLI or updates the host’s MCP config file. When possible, it writes the absolute path to the holo executable so GUI hosts do not depend on your shell PATH.
For file-backed hosts such as Cursor, the installed entry looks like this:
holo install preserves extra keys such as env while refreshing the command and args.
Stop an MCP run
For MCP, the host owns the chat UI and HoloDesktop CLI runs as a stdio tool server. Keep both stop paths available:- press
Esctwice quickly if the guard is installed and running; - run
uv run holo stopfrom a terminal if you need a host-independent stop request.
holo install can install the guard so double-Esc works for host-launched runs. On macOS, grant Input Monitoring to the guard when prompted; a listener inside the MCP process may not receive key events because macOS attributes the permission to the launching GUI app.
Normal stop is step-bounded: the CLI pauses and cancels the active run at the next safe point. If the run is stuck and does not respond, use uv run holo stop --force, then restart the host if its MCP tool call is still blocked.
What the host gets
The MCP server exposes one tool:holo_desktop is a blocking tool call, not a background job. While it is running, HoloDesktop CLI owns one desktop task and may keep observing, clicking, and typing until the task completes or reaches its safety budget.MCP defines request cancellation with a notifications/cancelled message for an in-progress request. Current HoloDesktop CLI clients use that signal, and stdio-server shutdown, to cancel the active runtime session before the tool call unwinds. Some MCP hosts do not propagate cancellation consistently yet, so stopping a chat response may not stop the desktop run right away. We are working with upstream host providers to improve this. For now, keep HoloDesktop CLI up to date and prefer short, specific tasks that can finish or time out cleanly.Confirm the host picked it up
Restart the host after installation if it was already open. Then ask the host to do a small, safe desktop task, such as opening a text editor and writing a short note. If the host cannot find HoloDesktop CLI:- run
uv run holo install listand confirm the host ID; - re-run
uv run holo install <host-id>; - check that hosted mode has
HAI_API_KEYavailable, or local mode hasHAI_AGENT_RUNTIME_BASE_URLavailable to the host process; - check
~/.holo/logs/for runtime startup errors.