DesktopVisionMCP. Show, don't tell.

6 min read Original article ↗

Stop taking screenshots, and stop trying to describe what you see. No more dragging images into the chat or copy-pasting. Ask your actual question and your assistant will know what you are referring to.

Give your AI assistant visibility. Claude, ChatGPT, Codex, Gemini, any of them. If it speaks MCP, it can see what you see.

What it looks like

Ask your assistant to take a look.

Now you can get your assistant's input without figuring out how to grab the correct context.

For coding

session.ts · npm run build

~/acme/web npm run build
vite v5.4.2 building for production...
transforming (312) src/checkout/session.ts

Build failed in 4.21s
[vite]: Rollup failed to resolve import "@/lib/money"
  from "src/checkout/session.ts".

  12 | import { Cart } from '@/lib/cart'
  13 | import { format } from '@/lib/money'
  14 | import { taxFor } from '@/lib/tax'

This is most likely unintended because it can
break your application at runtime.
~/acme/web 

Claude Code

> I have a build failing in my terminal, can you take a look

● Calling desktop-vision-mcp… (ctrl+o to expand)

Your build is failing on one unresolved import, not on the 312 files it transformed. Line 13 of src/checkout/session.ts imports @/lib/money, and the two imports either side of it resolve fine, so the @ alias itself is working. The path is the problem, not the config. Check whether that file is actually at lib/money.ts, and whether its casing matches; this is the classic one that passes on a Mac and fails in CI.

For reviewing

github.com/acme/api/pull/482

Open retry the webhook · 2 files changed

src/webhooks/deliver.ts

   async function deliver(evt: Event) {
     let attempt = 0
-    while (attempt < 3) {
+    while (attempt < MAX_RETRIES) {
       const res = await post(evt)
       if (res.ok) return res
+      await sleep(2 ** attempt * 1000)
       attempt++
     }
     throw new DeliveryError(evt.id)
   }

   src/config.ts
+  export const MAX_RETRIES = 8

ChatGPT

Something is off about the code in a PR I am reviewing, can you help me pinpoint the issue?

desktop-vision-mcp · screenshot

Yes. The backoff is exponential and the ceiling moved from 3 to 8, so the final wait is 2^7, about 128 seconds, and the total run is over four minutes. That is fine in a worker and a problem if deliver is ever awaited inside a request handler. Also worth checking: the sleep runs after the last failed attempt too, so you pay the longest wait before throwing.

For math

Q3 headcount plan

E6fx=SUM(B6:D6)

ABCDE
1TeamJulAugSepQ3 total
2Engineering14161949
3Design33410
4Sales891128
5Support56617
6Total30344096
7Budget104

Codex

> I'm looking at some figures and something does not add up, can you double check?

● Calling desktop-vision-mcp… (ctrl+o to expand)

No. The Q3 total row says 96, but the four team totals are 49, 10, 28 and 17, which come to 104. The monthly columns are consistent with the teams, so the error is in the total row itself, not the inputs. Worth noting the number it should be, 104, is also exactly your budget line, which is the kind of coincidence that makes a wrong cell look right.

For design

localhost:3000/team

Our team

Claude Code

> The images on my website are not correctly aligned, help me figure out how to fix them

● Calling desktop-vision-mcp… (ctrl+o to expand)

The names are not on a shared baseline because the images are different heights and each card is sizing itself. Your grid is laying out the cards, but nothing inside them is constrained, so the caption starts wherever its own image ends. Give the image a fixed height with object-fit: cover, or make each card a grid with grid-template-rows: 1fr auto so the captions line up whatever the image does.

For a last look

Draft

Subject Purchase order 4471, confirmation

Hi Elena,

Confirming we would like to procede with the order: 1,500 units of the XR-9 bracket at $12.40 each, for a total of $1,860.

Please invoice against PO 4471. We can recieve from the 22nd.

Thanks,
Gorka

Send

Gemini

I'm about to send an important email message, can you proof read it?

desktop-vision-mcp · screenshot

Do not send it yet. The total is wrong by a factor of ten: 1,500 units at $12.40 is $18,600, not $1,860. On a purchase order that is the kind of number a supplier will hold you to. Two spellings as well, procede should be proceed and recieve should be receive.

What it changes

You stop being the middleman

Right now you read the error, retype it, describe the layout, explain which tab you are on. Every one of those steps is a chance to leave out the thing that mattered. Ask instead, and the screen speaks for itself.

Fewer confidently wrong answers

Most bad answers are not reasoning failures, they are missing context. When the assistant can see the actual stack trace, the actual diff, the actual spreadsheet, it stops guessing at what you meant.

It works with every AI assistant

A plain MCP server, so it fits whichever assistant you already use and whichever you switch to next. Nothing about your setup has to change and there is no new app to live in. The tool appears where you already ask your questions.

Privacy

What it does and does not do.

It does

Capture a screen when your assistant asks

Show its state in the menu bar at all times

Require screen recording permission first

Stop completely when you stop it

It does not

Watch continuously or record video

Draw anything on your screen

Click, type or automate anything

Act on your machine in any way

Shut lid, stopped. Open eye, running. The same drawing in a light or dark menu bar, tinted by macOS, state is carried by shape, never by colour alone.

Setup

Setup lives inside the app.

01

A menu item copies the install instructions to your clipboard.

02

You paste them to your assistant, which does the install itself.

03

It runs a dry run and confirms everything works as expected.

Mon 15:41

DesktopVisionMCP 1.0.0

Stop

AI assistant instructions (copy)

About

Check for Updates…

Quit

One menu item is the whole setup. You never read the instructions, and after the dry run you never open the app again.

Stop explaining
your screen.