Releases: zavora-ai/computer-use-mcp
Release list
computer-use-mcp 7.1.0
computer-use-mcp 7.1.0 release record
Release date: 2026-08-23
Version 7.1.0 keeps the 64-tool v7 API intact and adds MCP 2026-07-28 as a second protocol era. Existing 2025 clients continue through the legacy initialization path; modern clients use stateless, self-describing requests.
Compatibility boundary
| Surface | v7.0 | v7.1 |
|---|---|---|
| Tool names and input schemas | 64 tools | Same 64 tools |
| Legacy MCP | Initialization and connection state | Retained |
| MCP 2026-07-28 | Not available | Stateless stdio and Streamable HTTP |
| Minimum Node.js | 18 | 20 |
| Native targets | macOS arm64/x64, Windows arm64/x64, Linux arm64/x64 | Same six targets |
The Node.js minimum is the only intentional runtime compatibility change. Tool callers do not need to rename tools or change v7 arguments.
Protocol implementation
server/discoverand per-request protocol, client identity, and capability envelopes.- Required Streamable HTTP routing headers and loopback-safe bundled HTTP serving.
- Private cache hints and response server identity.
- In-band multi-round-trip Roots and exact-scope form elicitation with HMAC-authenticated, expiring request state.
subscriptions/listendelivery for filtered resource and list-change notifications.- Complete standard behavior annotations on all tools and assistant audience/priority annotations on resources.
- The
io.modelcontextprotocol/tasksextension for selected long-running read-only operations, with polling, update, cancellation, TTL, routing, and authenticated caller isolation. - Legacy logging, Roots, resource subscriptions, and elicitation during the MCP deprecation window.
Tasks are opt-in per request. A client that does not advertise the extension always receives an ordinary synchronous tool result. The stock TypeScript SDK 2.0.0 client supports the modern core but requires a host-provided Tasks extension codec before advertising Tasks.
Security and operational behavior
- Filesystem access is constrained by the intersection of operator roots and client Roots.
- Remote HTTP authentication is owned by the embedding host; the bundled command listens only on loopback and does not invent authentication claims.
- Mutating tools retain policy, approval, target-focus, cancellation, session-lock, and audit controls.
- Task IDs contain 192 random bits. Authenticated tasks are bound to the verified client ID; unauthenticated IDs are bearer capabilities.
- Logs exclude arguments, results, scripts, clipboard values, secrets, accessibility contents, and image bytes.
- The unreleased v8 preview, remote sidecar, desktop supervisor, contracts, and migration facade are not part of this release.
Verification evidence
Local release validation completed on macOS arm64:
- 208 automated tests passed with zero failures.
- Modern stateless discovery, Tasks, MRTR, annotations, cache hints, and subscriptions passed dedicated conformance tests.
- Legacy and modern stdio serving both passed.
- The native doctor reported 9 passed, 0 warned, 0 failed, and 1 inapplicable/skipped check.
- The native module enumerated the display and windows, observed Accessibility state, captured a JPEG, and accepted a no-op pointer event without changing the cursor location.
- Live TextEdit automation opened a new document, clicked its window, typed, pasted a verified clipboard value, saved a file, and read it through the MCP filesystem tool. The original clipboard text was restored.
- Direct native typing preserved
—,café, and emoji exactly. Plain-text encoding selected by an application or AppleScript save command remains outside the input injector. - The final CI-built universal npm tarball contains 99 files, including all six native binaries, installs in a clean temporary project, and imports all seven public entry points.
The GitHub Actions release gate repeats the build and test suite on macOS arm64, Windows x64/arm64, and Linux x64/arm64, verifies packed contents and Node.js 20/22/24/current installation, builds all six native binaries, emits an SBOM and provenance attestations, and submits the exact root tarball through npm staged publishing. A maintainer reviews and approves that staged release with 2FA before it becomes public.
The repository retains lockstep manifests and resolver support for future split native packages. npm does not permit a brand-new package name to enter staged publishing, so v7.1 deliberately ships as one universal package rather than declaring six package names that cannot be staged under the organization policy.
Upgrade
npm install @zavora-ai/computer-use-mcp@7.1.0Legacy hosts may keep their existing configuration. To use the modern HTTP runner locally:
npx -y --package @zavora-ai/computer-use-mcp@7.1.0 computer-use-mcp-httpRemote deployments should embed createComputerUseHttpHandler, verify OAuth externally, pass only verified authInfo, configure COMPUTER_USE_FS_ROOTS, and set COMPUTER_USE_REQUEST_STATE_SECRET when MRTR retries must survive process restarts.
v7.0.0 — Architecture finish: cancellation, progress, filesystem jail, native packaging
What's New
v7.0 completes the MCP modernization: protocol correctness, cancellation & progress, filesystem containment, a resilient native-binary layer, and a cleaner session architecture — across macOS, Windows, and Linux.
Highlights
- Cancellation — tool calls honor the MCP host
AbortSignal:waitreturns early andrun_scriptkills its child process when the host cancels. - Progress — long
filesystemsearches emitnotifications/progresswhen the request carries a progress token (silent otherwise). - Filesystem jail —
COMPUTER_USE_FS_ROOTSconfines thefilesystemtool to allowlisted absolute roots, blocking..traversal and symlink escapes. - Native binary resolver + packaging — resolution order
COMPUTER_USE_NATIVE_PATH→ optional per-platform package → bundled binary; installs never fail on the native layer. - MCP modernization — tool annotations,
structuredContent+outputSchema, server instructions, MCP prompts & resources, and init-time tool profiles (COMPUTER_USE_PROFILE=core|ax|scripting|windows-admin|full). - Approval elicitation — interactive approval when the host supports it;
approval_tokenstill wins for headless use.
Breaking
- The
[focusRequired: X]description suffix is off by default in v7 (focusRequiredremains available via_metaandget_tool_metadata). Restore it withCOMPUTER_USE_LEGACY_FOCUS_TAG=true. - Text-JSON result shapes:
list_windows→{ windows },get_frontmost_app→{ app },get_active_space→{ active_space_id }.
Install
npx --yes @zavora-ai/computer-use-mcpThe published package bundles prebuilt native binaries for all supported targets (darwin-arm64, darwin-x64, win32-x64, linux-x64, linux-arm64), so it works out of the box with no build step.
Full changelog: https://github.com/zavora-ai/computer-use-mcp/blob/main/CHANGELOG.md
v6.2.0 — Native Linux Support (X11 + Wayland)
What's New
This release adds native Linux support to computer-use-mcp, making it a true cross-platform desktop automation server for macOS, Windows, and Linux.
Linux Native Backend
| Feature | X11 | Wayland (GNOME) |
|---|---|---|
| Mouse | X11/XTest | ydotool |
| Keyboard | X11/XTest | ydotool |
| Text input | xdotool type | ydotool type |
| Screenshots | scrot | XDG Desktop Portal |
| Clipboard | xclip/xsel | wl-copy/wl-paste |
| Windows | wmctrl | GNOME Shell D-Bus |
| Apps | /proc + wmctrl | /proc + GNOME D-Bus |
| Workspaces | wmctrl | wmctrl |
Key Features
- Runtime Wayland detection via
XDG_SESSION_TYPE— auto-selects native tools - Zero impact on macOS/Windows — all code gated behind
#[cfg(target_os = "linux")] - CI pipeline — Linux x64 build and test added to GitHub Actions
Requirements
Build: pkg-config, libx11-dev, libxtst-dev, libxrandr-dev
Runtime (X11): xdotool, wmctrl, xclip, scrot
Runtime (Wayland): ydotool, wl-clipboard, grim
Install
npx --yes @zavora-ai/computer-use-mcpOr build from source:
git clone https://github.com/zavora-ai/computer-use-mcp
cd computer-use-mcp
sudo apt-get install -y pkg-config libx11-dev libxtst-dev libxrandr-dev
npm install
npm run build:native:linux
npm run build:tsFull Changelog: v6.1.0...v6.2.0
v6.1.0 — Client API Parity + Agent Examples
Client API parity
- Added typed methods:
zoom,tripleClick,middleClick,mouseDown,mouseUp,holdKey,getToolMetadata - Updated
type()withclear,pressEnter,caretPositionoptions - Updated
key()withrepeatoption
Agent examples
Three ready-to-run agent examples that connect an LLM to computer-use-mcp:
- Claude agent — Anthropic Claude with vision support (tested, working)
- OpenAI agent — GPT-4o with function calling
- LangChain agent — LangChain + Claude with tool binding
Fixes
- Fixed
.gitignoreencoding (was UTF-16 from Windows edits) - Added
zoom-output/to gitignore
v6.0.0 — Native Windows Support
What's New
v6.0 transforms computer-use-mcp from a macOS-only tool into a cross-platform desktop automation server supporting both macOS and Windows.
Windows Native Modules (Rust)
Every Windows API call goes through Rust via windows-rs — no Python, no pywin32, no subprocess overhead.
- Mouse — SendInput with absolute coordinates, move-and-settle
- Keyboard — SendInput + KEYEVENTF_UNICODE, full VK code map
- Screenshot — DXGI Desktop Duplication + GDI fallback, PNG support
- Clipboard — Native Win32, 31x faster than pywin32
- Window management — EnumWindows + SetForegroundWindow, 97x faster
- UI Automation — IUIAutomation COM with tree walking + element search
- Display — EnumDisplayMonitors + GetDpiForMonitor
- Virtual Desktops — Registry-based enumeration + keyboard shortcuts
New Tools (58 total, up from 46)
filesystem, process_kill, registry, notification, multi_select, multi_edit, scrape, snapshot, zoom, resize_window, create_agent_space, destroy_space
macOS Feature Parity
- Zoom and snapshot annotations use native Rust image processing on both platforms
- resize_window works via AppleScript on macOS
- 10 macOS examples: calculator, browser, crypto spreadsheet, budget template, email, calendar, contacts, VS Code, terminal
Performance vs Python Reference
| Operation | Rust NAPI | Windows-MCP (Python) | Speedup |
|---|---|---|---|
| Screenshot (800px) | 20ms | 32ms | 1.6x |
| Clipboard round-trip | 0.7ms | 21ms | 30x |
| Window listing | 1.7ms | 165ms | 97x |
| Frontmost app | 0.2ms | 169ms | 845x |
CI Pipeline
GitHub Actions builds on macOS arm64, macOS x64, and Windows x64 with automated testing.
Breaking Changes
package.jsonosfield:["darwin"]→["darwin", "win32"]run_scriptlanguage enum now includes"powershell"
v3.0.0 — Multi-provider vision support
What's new
Multi-provider screenshot sizing
provider param on screenshot sets optimal width per AI provider:
| Provider | Width | Est. tokens |
|---|---|---|
anthropic |
1024px | ~928 |
openai |
1024px | ~765 |
gemini |
768px | ~258–516 |
qwen / deepseek-vl / phi |
896px | ~512–768 |
openai-low |
512px | 85 (flat) |
JPEG quality control
quality param (1–100) on screenshot. Default: 80. Lower = fewer bytes = fewer tokens.
Non-vision model support
COMPUTER_USE_VISION=false makes screenshot return text metadata instead of an image — enables DeepSeek-V3, R1, and other text-only models.
Reliability fixes
- Move-and-settle (50ms) before every click — fixes missed clicks on fast UIs
- Clipboard-based typing for text >100 chars — fixes long text in Electron/web apps
- Animated drag — ease-out-cubic at 60fps
Other
- Screenshot deduplication
COMPUTER_USE_PROVIDERenv var for server-wide defaultcreateComputerUseServer({ vision, provider })programmatic config
v2.0.4 — Fix client screenshot() params
What's fixed
client.screenshot() now accepts width and target_app parameters.
Previously, calling client.screenshot({ target_app: 'com.apple.iCal' }) would silently drop the arguments and capture the full screen instead of the app window. The method signature was missing the params entirely.
Changes
client.screenshot(args?: { width?: number; target_app?: string })- Args are now forwarded to the MCP tool call correctly
Upgrade
npm install -g @zavora-ai/computer-use-mcpOr update your mcp.json — npx will pick up the latest automatically.
v2.0.0 — Initial public release
computer-use-mcp v2.0.0
MCP server + client for macOS computer control. 24 tools covering screenshot, mouse, keyboard, clipboard, app management, and display info — all in-process via Rust NAPI (no subprocesses, no focus stealing).
Install
npx @zavora-ai/computer-use-mcpMCP client config (Claude Desktop, Cursor, Windsurf)
{
"mcpServers": {
"computer-use": {
"command": "npx",
"args": ["-y", "@zavora-ai/computer-use-mcp"]
}
}
}What's included
- 24 MCP tools: screenshot, mouse (11), keyboard (3), clipboard (2), apps (4), display (2), wait
- Typed TypeScript client with in-process and stdio transport
- Rust NAPI native module — CGEvent, NSWorkspace, CoreGraphics
- Full input validation at two layers (Zod + session guards)
- Security hardened: O_EXCL temp files, no shell injection, bounded waits
Requirements
- macOS 10.15+ (Catalina)
- Node.js 18+
- Accessibility permission granted to your terminal
See README for full documentation.