zeuxis

by bnomei

Not rated
GitHub

About

Let AI agents capture screenshots themselves

Details

Author
bnomei
Categories
Developer Tools, Automation, Other

Setup

Install zeuxis in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/bnomei/zeuxis

Follow the installation instructions in the repository README, then restart your MCP client.

Zeuxis is a local MCP screenshot server that lets AI agents capture the current desktop, windows, cursor regions, and exact rectangles through MCP tools.

It runs as one local binary over stdio by default. Capture results stay on the machine as managed image artifacts and are returned to the MCP client asfile://resource links plus structured metadata. Zeuxis does not upload screenshots, perform OCR, drive the UI, or expose system-control tools.

brew install bnomei/zeuxis/zeuxis zeuxis --version

Download a prebuilt archive fromGitHub Releases, extract it, and placezeuxison yourPATH.

git clone https://github.com/bnomei/zeuxis.git cd zeuxis cargo build --release ./target/release/zeuxis --version

Add Zeuxis to an MCP client as a stdio server:

{ "mcpServers": { "zeuxis": { "command": "zeuxis", "args": [] } } }
codex mcp add zeuxis -- zeuxis codex mcp list
amp mcp add zeuxis -- zeuxis amp mcp list

After the client connects, callget_runtime_diagnosticsfirst. A healthy result reportspermission_ok=trueandmonitors_ok=true. Then callcapture_screenfor the first screenshot.

- a short text summary,
- afile://resource link to the local artifact,
- structured fields such aspath,uri,output_format,mime_type,artifact_sha256,width,height,capture_mode,captured_at_utc,source_scale_factor, andtarget.

For deterministic window capture, calllist_windowsand pass bothsnapshot_idandwindow_idfrom that same response tocapture_window. Window IDs are scoped to the snapshot, not durable across listings.

Tool schemas are defined insrc/mcp/tools.rs. Result payloads are built insrc/mcp/result.rs, and stable errors are defined insrc/mcp/errors.rs.

{ "delay_ms": 800, "play_sound": true }
{ "output": "compact" }
{ "output": { "mode": "custom", "format": "webp", "max_dimension": 2048 } }

IfZEUXIS_ARTIFACT_HMAC_KEYis set, capture results also includeartifact_hmac_sha256.

Coordinate inputs use logical desktop points. Captured image dimensions use source pixels. Use the returnedinput_units,source_units, andsource_scale_factorfields to reason about HiDPI scaling.

Requested delays run before capture work and are additive to the capture timeout. For example, a request withdelay_ms=30000and the default--blocking-task-timeout-ms=15000can take up to about 45 seconds before the client receives a timeout or result.

Configuration is resolved asCLI flag > environment variable > default. Zeuxis does not read config files.

Runtime configuration lives insrc/runtime_config.rs.

ZEUXIS_MAX_CONCURRENT_CAPTURES=4 \ ZEUXIS_MAX_ARTIFACTS=128 \ zeuxis --blocking-task-timeout-ms 30000

Zeuxis checks Screen Recording permission before capture. If permission is missing, Zeuxis asks macOS for access and returnspermission_deniedfor that same tool call. Grant Screen Recording permission to the terminal or host app that starts Zeuxis, then retry the tool call.

Cursor-dependent tools read the global cursor position and may also require Accessibility permission. If those fail, trycapture_screenorcapture_rectwhile you update permissions.

Linux capture support depends on the graphical session and backend capabilities. If capture fails, callget_runtime_diagnosticsand checkxdg_session_type,display,wayland_display,monitors_ok, andcursor_ok.

On Wayland, cursor and window capture behavior can be more limited than full-screen capture. Prefercapture_screenfirst, then narrow to regions if the compositor allows it.

Cause: The OS denied screen capture permission.
- On macOS, grant Screen Recording permission to the terminal or MCP host app.
- Retry the same tool call after granting permission.
- Callget_runtime_diagnostics.
- Confirmpermission_ok=true.

Cause: Zeuxis could not read the global cursor position.
- Grant Accessibility permission if your platform requires it.
- Usecapture_screen,capture_active_window, orcapture_rectwhen cursor position is unavailable.

Cause: The focused window, cursor window, or requested snapshot window is no longer available.
- Calllist_windowsagain.
- Retry with a freshsnapshot_idandwindow_id, or fall back tocapture_screen.

Cause: The requested rectangle is outside supported bounds or exceeds the size limits.
- Check monitor bounds withlist_monitors.
- Reducewidthandheight.
- Keep the capture area at or below40000000pixels.

Cause:get_latest_capturewas called before this server session captured an artifact.
- Call acapture_*tool first.
- Retryget_latest_capture.

Cause: Artifact write, retention cleanup, worker IPC, or timeout handling failed.
- Check thatZEUXIS_ARTIFACT_DIRis writable, if set.
- Increase--blocking-task-timeout-msfor slow captures.
- Retry the capture. Timed-out worker processes are terminated and reaped before Zeuxis returns.

Zeuxis is designed for local observation:

- It serves MCP over local stdio.
- It returns localfile://artifact links.
- It does not upload screenshots to remote services.
- It does not perform OCR, UI element detection, input automation, shell execution, or window control.
- It validates tool parameters before capture.
- Capture work runs in a subprocess worker with parent-enforced timeout and termination.
- clear_session_artifactsdeletes only Zeuxis-managed artifacts from the current session.

Managed artifact files use thezeuxis-prefix and.png,.jpg, or.webpsuffix. Retention pruning is best effort and never deletes the artifact currently being returned.

cargo check cargo fmt --all -- --check cargo clippy --all-targets --all-features -- -D warnings cargo test --all-targets

On Ubuntu/Linux CI-like environments, install the capture backend build dependencies first:

sudo apt-get update sudo apt-get install -y \ pkg-config \ libclang-dev \ libxcb1-dev \ libxrandr-dev \ libdbus-1-dev \ libpipewire-0.3-dev \ libwayland-dev \ libegl-dev \ libdrm-dev \ libgbm-dev

This repo also ships aprek.tomlfor lightweight local commit gates:

prek validate-config prek run --all-files prek install

The configured hooks runcargo fmt --all -- --checkandcargo clippy --all-targets --all-features -- -D warnings.

Zeuxis is licensed under theMIT License.

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

An AI agent for the Playwright MCP server, enabling automated web testing and interaction.

Generate Playwright BDD tests, GitHub Actions and Azure Pipelines with business-rule traceability, focused CodeGraph context and persistent Engram memory.

Autonomous QA MCP that tests web and macOS apps like a real engineer and verifies every bug.

A Playwright-based MCP server that exposes a live browser as a traceable, inspectable, debuggable and controllable execution environment for AI agents.

Browser automation via Chrome DevTools Protocol

Drive, inspect, and assert on real Electron desktop apps from an AI agent — agent-native, Playwright-style automation with accessibility refs, stable error codes, and retrying assertions

Playwright MCP for Godot, screenshots, SceneTree manipulation, and arbitrary GDScript execution at runtime through a local UDP bridge.

A lightweight, AI-powered end-to-end testing framework for CI workflows. Requires an OpenAI API key.

Automate web testing and tasks by connecting Claude Desktop with Playwright.

Create and manage end-to-end tests using the Octomind platform.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.