How to let Claude Code or Cursor see your Mac's screen

By Ziad Ziadeh, Snapline’s developer · Published 22 September 2026

The short version

  • An AI coding assistant sees only what you hand it. The free route is to copy a screenshot to the clipboard (hold Control with the screenshot keys) and paste it into the chat, every time you want it to look.
  • An MCP server lets the assistant look for itself. Browser servers (Playwright MCP, Chrome DevTools MCP) see pages in the browser they drive. For a native app, a simulator, an error dialog or anything else on screen, you need a screenshot server for the whole Mac.
  • Snapline's is local and off by default. Turning it on, letting it capture, and letting it write files are three separate switches, and a capture raises an Allow or Deny card naming the assistant and the window. Setup is a snippet Snapline generates for Claude Code, Cursor, VS Code, Codex and Antigravity.

The free route: paste a screenshot

An assistant can't see your screen. It sees the images you give it. So the route that needs no setup is a screenshot on the clipboard, pasted into the chat. Apple's screenshot guide gives the rule: press Control in addition to the other keys, and the shot goes to the clipboard instead of a file. For a dragged region that is ⌃⇧⌘4.

Every assistant on this page takes an image that way. Claude Code's documentation lists three: drag an image into the window, paste it with Ctrl+V, or give it the file's path. Cursor's and VS Code's chat panels take a pasted image too.

It works, and for one question it is the right amount of effort. It stops being that in a loop. Change the layout, screenshot, paste, read the answer, change it again: you are the assistant's eyes, and every look costs you a trip out of what you were doing.

What an MCP server changes

The Model Context Protocol is how an assistant is given tools. A server offers some (take a screenshot of this window, read the text in it) and the assistant calls them when it decides it needs to. With a screenshot tool connected, "why is the pay button cut off?" no longer needs you to go and fetch the evidence. The assistant asks for the window, looks, and answers. It can look again after its own fix, which is the part a pasted screenshot never gave you.

That is also exactly why it deserves a second thought. A tool that can capture your screen is a way to read your screen, for anything that can call it. What stands between the assistant and the pixels is the question to ask of any server on this page, including ours.

Browser servers and whole-Mac servers

Each is described from its maker's own pages:

RouteWhat the assistant can seeWho decides when it looksCost model
Paste a screenshotWhatever you capture and pasteYou, by hand, every timeFree
Playwright MCPWeb pages in the browser it drivesThe assistantFree, open source
Chrome DevTools MCPA live Chrome browser it controls and inspectsThe assistantFree, open source
PeekabooThe Mac's screen, apps and windows; it also clicks and typesThe assistant; a per-capture prompt is not described in its READMEFree, open source (MIT)
Snapline's MCP serverA display, a named window or a region; recognized text with no image; the captures already in HistoryYou: three switches, and an Allow or Deny card on a schedule you chooseOne-time license; free to try

Playwright MCP and Chrome DevTools MCP

Playwright MCP, from Microsoft, lets an assistant interact with web pages through structured accessibility snapshots, which its README presents as a way to avoid needing screenshots at all; it also has a browser_take_screenshot tool for the current page. Chrome DevTools MCP lets a coding agent control and inspect a live Chrome browser, with a take_screenshot tool for the page or an element; it officially supports Chrome and Chrome for Testing. If what you build runs in a browser, start with one of these: they can click, read the DOM and watch the console, none of which a screenshot does. Both describe pages in a browser and nothing else on the Mac.

Peekaboo

Peekaboo describes itself as "a macOS CLI and menu-bar app for screen capture, accessibility inspection, and native UI automation", and it can expose the same toolset to MCP clients. It is MIT licensed, needs macOS 15 or later and the Screen Recording permission, and with Accessibility granted it drives the interface as well as looking at it. If you want an agent that operates your Mac, this is the one on this page that does.

Which one to use

  • A web app, in a browser: Playwright MCP or Chrome DevTools MCP.
  • An agent that clicks and types across the Mac: Peekaboo.
  • A native app, a simulator, an error dialog or a design tool, where the assistant should look and you should have a say each time: Snapline, below.

Turn on Snapline's MCP server

Snapline is a screenshot app for the Mac's menu bar, and from version 2.40 it carries a local MCP server. It already holds the Screen Recording permission and already knows how to capture a window by name, so the server is a second door onto the same app, with its own locks.

  • Open Settings → MCP. The server ships off, and updating Snapline does not turn it on.
  • Press Start. The pane shows a state dot and the address, http://127.0.0.1:8787/mcp unless you change the port. With only this on, an assistant can read the captures already in History, and nothing else.
  • Under What the assistant can do, switch on Take new screenshots if you want it to look at the screen, and set When to ask: Ask every time, Ask once per session (the default), or Allow.
  • Leave Write copies of captures to a folder off unless you want that. It writes into one folder you choose and never overwrites a file.

The menu bar icon carries a small ring while the server is listening and a solid dot while a client is connected, so you can always tell.

Connect your assistant

Under Connect an assistant, pick your client. Snapline shows where its config goes and a snippet with the live address and your token already filled in, so copy it from there rather than typing these by hand. The shapes below are what it generates, with YOUR_TOKEN standing in for the token. The five clients agree on almost nothing, which is most of why the app writes the snippet for you.

Claude Code

One command, which registers the server for every project on this Mac:

claude mcp add --scope user --transport http snapline http://127.0.0.1:8787/mcp \
  --header "Authorization: Bearer YOUR_TOKEN"

For one project, use .mcp.json instead. That file gets committed, so keep the token out of it: export it from your shell profile and let Claude Code expand it.

export SNAPLINE_MCP_TOKEN="YOUR_TOKEN"

{
  "mcpServers": {
    "snapline": {
      "type": "http",
      "url": "http://127.0.0.1:8787/mcp",
      "headers": {
        "Authorization": "Bearer ${SNAPLINE_MCP_TOKEN}"
      }
    }
  }
}

Then press Install Skill in the pane. It adds Snapline's Agent Skill to ~/.claude/skills, which is how Claude Code learns when a look at the screen beats a guess.

Cursor

In ~/.cursor/mcp.json (Cursor's MCP docs):

{
  "mcpServers": {
    "snapline": {
      "url": "http://127.0.0.1:8787/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

VS Code

In your user MCP config: run MCP: Open User Configuration from the Command Palette. Not a project's .vscode/mcp.json, which gets committed. The top-level key is servers, not mcpServers (VS Code's reference), and a file that spells it the other way loads with no servers and no error.

{
  "servers": {
    "snapline": {
      "type": "http",
      "url": "http://127.0.0.1:8787/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Codex

TOML, in ~/.codex/config.toml (Codex's MCP docs). Install Skill works here too.

[mcp_servers.snapline]
url = "http://127.0.0.1:8787/mcp"
enabled = true
http_headers = { Authorization = "Bearer YOUR_TOKEN" }

Antigravity

In Antigravity's MCP config file, whose current location is given in its MCP docs. The field is serverUrl, not url:

{
  "mcpServers": {
    "snapline": {
      "serverUrl": "http://127.0.0.1:8787/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Restart the assistant's session so it picks the server up, and ask it to look at a window.

Three switches, and they do not imply each other. Turning the server on allows reading History. Taking new captures is its own switch. Writing copies to disk is a third. A call into a switch that is off comes back with an error naming it, so the assistant can tell you what to turn on instead of retrying.

  • The card. A capture raises an Allow or Deny card under Snapline's menu bar icon. It names the assistant and what it resolved the request to, in words ("Safari, “Checkout”"), not the raw arguments. It never takes the keyboard from what you are typing, Deny is the same size as Allow, and both can be answered from the Snapline menu with the keyboard or VoiceOver.
  • The schedule is yours. Ask every time, Ask once per session, or Allow. Once per session is the default because an assistant iterating on a layout looks five times in two minutes, and a prompt between each look is a feature people switch off. The card says what Allow buys before you press it, and Forget in the pane drops that trust without stopping the server.
  • Silence is a refusal. A card nobody answers in 20 seconds declines by itself, and the assistant is told that nobody answered.
  • You always know. Every capture an assistant takes shows a notice naming it ("Claude Code took a screenshot").
  • Redactions hold. An assistant only ever receives the flattened image. If a capture was redacted, the original under the boxes is never offered, by any tool, at any setting. With Smart Redact after capture on, text read for an assistant has the same items removed and marked.
  • Nothing is destroyed. No tool deletes a capture, empties the Trash or overwrites a file.
  • It only looks. Snapline does not click, type or drive your apps for an assistant.

One limit, stated plainly: the name on the card is whatever the client calls itself. Every client shares the one token, so under Ask once per session, another process on your Mac that had read the token from a config file could claim a name you already allowed. That is why the card says "any client calling itself Claude Code" and not "Claude Code". Ask every time closes it, and Regenerate in the pane replaces the token and drops every trust at once.

What leaves your Mac

From Snapline, nothing. The server listens on 127.0.0.1 only, never on your network; it needs the token, which lives in your Keychain; it refuses any request that carries a browser's Origin header, so a web page can't reach it; and it runs only while Snapline is running. There is no cloud component and no account.

What the assistant does next is its own business, and you should know it. A cloud-hosted assistant sends the image it looked at to its provider, exactly as it would a screenshot you pasted by hand. That step is governed by the assistant's policy, not by Snapline's, and the privacy policy says so. Redact before the look, or ask for text instead of pixels, when what is on screen is not yours to share.

Asking it to look

With the skill installed the assistant mostly reaches for the right tool unprompted. When you are steering it, these are the phrasings that map onto something:

  • "Look at the Simulator window." A window by app name, and by title when there are several. This is the one that earns the feature: turning "Chrome" into a particular window is the step an assistant can't do cleanly by itself.
  • "Read the error dialog, text only." Recognized text comes back as plain text, a table or code, with no image. It costs far fewer tokens than a screenshot, and it is the right default for anything you would otherwise retype.
  • "Let me show you." Snapline's own crosshair opens and you drag the region yourself. Nothing to approve, because you are the one capturing.
  • "I'll scroll the page for you." For a page taller than the screen the assistant can ask for a Scrolling Capture: you scroll, Snapline stitches, the assistant receives one tall image.
  • "Find the screenshot of the invoice from this morning." History is searchable by the text inside each capture, so a shot you already took doesn't have to be taken again.

Snapline is free to try in full for 14 days. After the trial an assistant can still read the captures in History; taking new ones unlocks with a one-time license, the same as a hotkey capture. It requires macOS 14 or later.

Questions

Can Claude Code see my screen?

Not by itself. Claude Code reads what you give it: an image you drag into the window, paste with Ctrl+V, or name by file path. To let it look for itself, connect an MCP server that can take a screenshot. A browser server such as Playwright MCP or Chrome DevTools MCP covers pages in the browser it drives; a screenshot server such as Snapline's or Peekaboo covers the rest of the Mac.

Is it safe to let an AI assistant take screenshots of my Mac?

It depends on what stands between the assistant and the screen. Snapline's MCP server is off until you turn it on, listens on 127.0.0.1 only, needs a token kept in your Keychain, and refuses any request that comes from a web page. Taking new captures is a separate switch, and each capture raises an Allow or Deny card naming the assistant and the window, on a schedule you choose: every time, once per session, or never. What the assistant then does with the image, including sending it to its provider, is governed by that assistant's own policy.

Does the image leave my Mac?

Snapline sends nothing over the network for this: the server and the assistant talk over 127.0.0.1. But a cloud-hosted assistant sends what it looks at to its own provider, the same as a screenshot you paste into it by hand. If a capture has been redacted in Snapline, the assistant only ever receives the flattened, redacted image, never the original.

Can the assistant read text from the screen without an image?

Yes. Snapline's capture_text tool returns the recognized text of a window as plain text, a table or code, with no image at all, which costs far fewer tokens than a screenshot and is the better way to read an error dialog or a log. With Smart Redact after capture switched on, the same sensitive items are removed from the text and marked.

Does Snapline's MCP server need a license?

It follows the same rule as the rest of the app. Everything works during the 14-day trial. After it, an assistant can still read the captures already in History, and taking new captures needs a license, exactly as it does from a hotkey.

Can the assistant click, type or delete things through Snapline?

No. Snapline's server only looks. It has no tool that clicks, types, deletes a capture, empties the Trash or overwrites a file. The one tool that writes anything, export_capture, is its own switch, writes into a single folder you choose, and never overwrites.