Computer use in opencode, Gemini CLI and other MCP clients on the Mac
opencode and Gemini CLI have no built-in tool for desktop apps. What each client includes, how its MCP support works, what to check before adding computer use, and how agents get Mac apps.
Short answer: opencode has no built-in computer use: its tools cover files, the shell and the web. Gemini CLI has a browser agent for Chrome, off by default, but nothing for desktop apps. Both support local MCP servers, as do Zed and the GitHub Copilot CLI, so a computer use MCP server gives any of them tools to see a Mac app window, click, type and choose menu items. ShadowCursor is such a server; in these clients you add it once as a local server, using the command its setup shows.
What each client has built in
Every client below can run local MCP servers over stdio, which is what a computer use server on your Mac needs. They differ in what they ship themselves and in how they treat tool calls. As documented in October 2026:
| Client | Built-in GUI or browser tools | Where MCP servers are configured | Approval of MCP tool calls |
|---|---|---|---|
| opencode | None: bash, edit, read, grep, glob, LSP, web fetch and search | mcp in opencode.json | Permission rules per tool: allow, ask or deny; most default to allow |
| Gemini CLI | A browser agent for Chrome, disabled by default | mcpServers in settings.json, or gemini mcp add | Confirmation dialog unless the server is marked trusted |
| Zed | None documented for desktop apps | Settings > AI > MCP Servers, stored under context_servers | Confirms every tool action by default |
| GitHub Copilot CLI | None documented for desktop apps | /mcp add, stored in ~/.copilot/mcp-config.json | Not described on its MCP page |
Sources: opencode tools, opencode MCP servers, opencode permissions, Gemini CLI MCP servers, Gemini CLI subagents, Zed MCP, Copilot CLI MCP servers.
opencode
opencode adds MCP tools "alongside built-in tools" as soon as a server is configured, and you can refer to a server by name in your prompt. Points worth knowing for a computer use server:
- Tool names carry the server name as a prefix, so you can enable or disable one server's tools with a single glob, globally or per agent. Turning a server on only for one agent keeps it out of the others' context.
- Context cost. opencode warns that every MCP server adds to the context. ShadowCursor alone adds 14 tools; keep other large servers off when you do not need them.
- Startup timeout. opencode waits 5 seconds by default for a server to list its tools, configurable per server.
- Approvals. opencode's permissions resolve to allow, ask or deny, and most default to allow. Its permissions page documents rules for the built-in tools but does not describe ask rules for MCP tools, so check in your version whether you can make opencode ask before each click.
opencode --autoapproves every request that is not explicitly denied. - Images. The MCP page does not say whether screenshots returned by a tool reach the model. Test it with your model before relying on it.
Gemini CLI
Gemini CLI's own browser agent automates Chrome (version 144 or later) through a bundled Chrome DevTools MCP server. It is off until you enable it, asks for consent on first use and stays inside the browser. For anything outside Chrome, add an MCP server:
- Adding a server.
gemini mcp add <name> <command>writes to.gemini/settings.jsonin the project by default; use--scope userfor~/.gemini/settings.json./mcpshows connected servers and their tools. - Images work. Gemini CLI documents that MCP tools can return text, images and other content in one result, and passes it to the model. That is what a computer use server needs.
- Confirmations. Tool calls ask for confirmation unless you mark the server as trusted with
--trust, which bypasses all of its confirmations. For a server that clicks in your apps, keep confirmations on at first. - Allow and exclude lists.
mcp.allowedandmcp.excludedinsettings.jsoncontrol which servers may connect at all;includeToolsandexcludeToolsnarrow one server's tools. - Timeouts. The default request timeout is 10 minutes.
- Sandboxing. If you run Gemini CLI in a sandbox, a local server's executable has to be reachable from inside it; Gemini CLI's troubleshooting section covers this.
Zed and the GitHub Copilot CLI
Zed's own agent uses MCP servers configured in Zed and supports MCP tools and prompts. You add a local server under Settings > AI > MCP Servers. By default Zed asks before running any tool action, including MCP tool calls, and you can set rules per tool with keys of the form mcp:<server>:<tool_name>. Zed's MCP page does not say whether image results reach the model.
GitHub Copilot CLI adds servers with /mcp add and makes them available without a restart. Organizations can limit which servers run through an allowlist. If you also use Copilot in VS Code, see VS Code and GitHub Copilot computer use.
What to check before adding computer use to a client
A computer use server works differently from most MCP servers: every step returns a screenshot, and the agent acts on what it sees.
- The model must accept images. Pick a model with image input in your client, or the agent works blind and has only accessibility elements.
- The client must pass images on. Gemini CLI documents it; for other clients, test with one screenshot first.
- Decide on approvals. Asking before every click is safe but slow; trusting all tools is fast but means the agent acts unchecked. A sensible start is confirmations on, loosened later for a narrow, repeated task.
- Keep the tool list lean. Disable servers you do not need for the task.
For what separates good computer use servers from weak ones, see computer use MCP servers for the Mac.
ShadowCursor in these clients
ShadowCursor is a Mac app and MCP server that gives each connected agent a full set of its own:
- Its own cursor, drawn on screen in the agent's color with a name tag.
- Its own keyboard. Keys arrive only in the agent's window, in one app.
- Its own clipboard. Copy and paste never touch your clipboard or another agent's.
- Its own windows. The agent works in background windows, even when yours cover them, and screenshots capture only the window it works in.
Every action returns the window's new state, a screenshot plus accessibility elements, so the agent sees the result of each step and can target buttons and fields by index. Several agents can work at once, each with its own cursor: opencode, Gemini CLI and Claude Code can each operate a different app side by side. Input moves like a person, with curved pointer paths and typing at about 200 words per minute. It runs locally and needs macOS 15 Sequoia or later.
Setup
ShadowCursor connects Claude, Codex, Cursor and VS Code with one click. opencode, Gemini CLI, Zed and the Copilot CLI are not among them, so for these you add it once yourself:
- Open ShadowCursor and allow Accessibility and Screen Recording when your Mac asks.
- Open Set up manually in ShadowCursor's setup. It shows the command that starts ShadowCursor's MCP server.
- Add that command as a local (stdio) MCP server in your client, through its MCP settings or its
mcp addcommand, under a name such asshadowcursor. - Start a new session and check that the tools are listed, for example with
/mcpin Gemini CLI or the Copilot CLI. - Ask for a task in an app and name the app.
Limits to know
- Minimized and hidden windows cannot be seen or operated. Covered windows can.
- System drag and drop of files, tabs or text follows the real mouse, so ShadowCursor cancels such drags instead of dropping.
- Hover without a pressed button works in Safari, not in Chrome or Electron apps.
- An agent cannot use a background tab of your browser window; it opens its own window.
- LibreOffice ignores posted clicks; its menus and keyboard work.
- ShadowCursor is a paid app: a 7-day free trial without a card, then $12.99 per month or $69.99 per year, with unlimited agents on up to three devices.
FAQ
Does opencode have computer use?
No. opencode's built-in tools work on files, the shell and the web. It supports MCP servers, so a computer use MCP server adds tools to operate Mac apps.
Does Gemini CLI have computer use?
It has a browser agent that automates Chrome, disabled by default. It has no tool for desktop apps. A computer use MCP server adds that, and Gemini CLI passes returned screenshots to the model.
Which models work for computer use in opencode?
Pick a model that accepts images, because the agent reads screenshots. Along with each screenshot, ShadowCursor returns the window's accessibility elements.
Can opencode and Claude Code operate apps at the same time?
Yes, with ShadowCursor. Each agent connects on its own and gets its own cursor, keyboard and clipboard. See running several AI agents at once.
Is there a free option?
Open-source computer use MCP servers exist. Many drive the real pointer, and some work in the background; check each one's README. ShadowCursor has a 7-day free trial and no free tier.