shotbox MCP server
io.github.mishan/shotbox·v0.10.0Sealed X11/Wayland sessions to see, drive and check real GUI programs: a11y, pictures, sound.
not scanned yet
0 stars554 downloads/wk
Reviews
Write oneNobody has reviewed shotbox yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
shotbox tools
No tool declarations could be read from the package source. They show once the server is installed.
How shotbox compares
Against every graded Productivity MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 92/100
- higher than 90% of 1,299 Productivity servers
- Downloads a week
- 554
- more than 84% of 427 Productivity servers with a package
Release history: 2 versions in the registry since 2026-10-16, latest 2026-10-23, typically one every 7 days.
Install shotbox in Claude Code, Cursor or VS Code
claude mcp add shotbox -- uvx shotbox
What the publisher says
From the shotbox repository's README, as published. We do not edit it. Read it on GitHub
shotbox
<!-- mcp-name: io.github.mishan/shotbox -->
Eyes, ears and hands on a real graphical program, for an AI agent, a script or CI.
An agent working on a program with a window can't see it or hear it. shotbox runs the program in a sealed session of its own, X11 or Wayland, and lets whatever is driving it look, listen and act: read the accessible tree, take screenshots, record what it plays, click by a button's name, type, hold keys and gamepad buttons, and wait until the program is actually ready. Then measure what it finds: names a screen reader can't say, contrast, the Tab order, pixels changed against a reference, where it flickers, how fast it follows the pointer, where its sound drops out, and what it used. Nothing it runs reaches your desktop or speakers by accident, and with --net loopback, not your network either.
claude mcp add shotbox -- shotbox mcp --allow ~/src/app/shotbox-programsWithout an agent, it's the same session from the command line:
shotbox shoot editor.png --window 'Text Editor' -- gnome-text-editor notes.mdWorked examples, from checking a change to a game's smoke test: docs/recipes.md. How it differs from other tools that drive a GUI: docs/comparison.md.
For agents
shotbox mcp --allow PROGRAMS gives an agent sealed sessions over the Model Context Protocol (stdio). It can start a session, spawn programs from the list in PROGRAMS (NAME = COMMAND a line, and nothing else), and then:
images;
- read the accessible tree, and take screenshots, which come back as
- click by a node's name, press keys, type and work a gamepad;
- wait for windows, stillness and announcements;
- lint, measure contrast and walk the Tab order;
- record what a session plays, and hear where it dropped out.
That's enough for an agent to check its own change in a GUI, test a game by playing it, audit what a screen reader hears, or reproduce a bug report in a session that's the same each time. The accessible tree is the cheap way to look, a few hundred tokens of text; a screenshot is for what only pixels say. An agent can't run anything off the list, and its sessions stop when the server does.
What it's for, the tools, and how it's built: docs/mcp.md.
An agent that runs a program itself, from its shell, runs it on your desktop: a window opens on your screen, a sound plays through your speakers, a browser run under xvfb-run finds your Wayland display all the same. To keep it in a session, put this in the project's CLAUDE.md or AGENTS.md, or your own:
## Graphical programs, browsers and sound
Never run a graphical program, a browser (headless too) or anything that
makes sound straight on this machine: it reaches my desktop and speakers.
Run it in a shotbox session:
- a picture: `shotbox shoot OUT.png --window RE -- COMMAND`
- a script or a test suite with windows: `shotbox run [--audio] -- COMMAND`
- with none, a headless browser say: `shotbox exec [--audio] -- COMMAND`;
the shotbox package's `sealed()` seals a browser's environment, but
not the speakers
- a session to come back to: `shotbox start --name NAME`, then
`shotbox spawn --session NAME -- COMMAND`, and `shotbox stop NAME`
Not `xvfb-run`: it lets `WAYLAND_DISPLAY` and the session bus through. A
server started for a test listens on 127.0.0.1, not 0.0.0.0.Why
An agent checking its change, a screenshot for a README, and a test in CI all want the same things, and every project was growing its own copy:
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
shotbox: common questions
- Is shotbox MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the shotbox safety report
- How do I install shotbox?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does shotbox need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is shotbox maintained?
- The last commit was 19 days ago (2026-10-16). The latest release is v0.10.0.
- What can I use instead of shotbox?
- Servers from other publishers that do the same job: INSSIST MCP server, Argent MCP server and SvGrid MCP server.
- How does shotbox compare with other Productivity MCP servers?
- safety score 92/100 (higher than 90% of 1,299 Productivity servers); downloads a week 554 (more than 84% of 427 Productivity servers with a package). Full comparison.
Alternatives to shotbox
Same job from other publishers: the closest match first, then the best rated.
INSSISTDrive your own logged-in Instagram session via the INSSIST extension: read, publish, DMs, analytics.not reviewedGrowingA- ArgentDrive iOS Simulators, Android emulators, TVs and Electron/web apps from your coding agentnot reviewedWidely usedA
SvGridChecks AI-written SvGrid code against the real API, plus version-pinned Svelte 5 grid docs.not reviewedEstablishedA- gflow-cliDrive Google Flow from an agent: Veo video and Imagen image generationnot reviewedEstablishedA
- Buoy GgLet AI agents read and drive a running React Native or Flutter app through Buoy's devtools.not reviewedEstablishedA