How to let an AI agent capture a web page you are signed in to: Playwright MCP vs. Chrome DevTools MCP vs. Puppeteer vs. Page Scanner MCP
Four ways to give a coding agent a full-page capture, compared on whether they can use your everyday Chrome and its logins, what they hand back, and what you have to set up first.
An agent that can read the web is easy. An agent that can read the page you are looking at, behind your login, in the state you left it, is the useful one, and it is a different problem. Every tool below can take a full-page screenshot. The question that separates them is whose browser they take it in, and what they hand the agent afterwards.
Four tools at a glance
| Playwright MCP | Chrome DevTools MCP | Puppeteer | Page Scanner MCP | |
|---|---|---|---|---|
| Uses your everyday Chrome, logins included | ✓ in extension mode; otherwise its own browser | ✓ with --autoConnect on Chrome 144 or later; otherwise a separate profile | with connect(), to a separate profile | ✓ through the extension, in every profile you pair |
| What you set up | the server; an extension for extension mode | the server; enable remote debugging in Chrome | a script; launch a browser or a debugging port | the server, one pairing, a token pasted into Chrome |
| Full-page screenshot | ✓ browser_take_screenshot | ✓ take_screenshot with fullPage | ✓ page.screenshot({ fullPage: true }) | ✓ scan_page with format png or jpeg |
✓ browser_pdf_save, opt-in | ✗ | ✓ page.pdf(), print media by default | ✓ text stays text, artwork stays vector | |
| Choose the page width and paper first | ✗ | ✗ | ✓ in code | ✓ captureWidth and pageSize |
| What the agent gets back | an image, or a file | an image, or a file | bytes, in your code | the absolute path of the file on disk |
| Also does | full browser automation | automation, debugging, performance traces | anything, in code | list browsers and tabs, pair |
| Licence and price | Apache-2.0 | Apache-2.0 | Apache-2.0 | free; the extension and an npm package |
✓ yes, ✗ no.
Why "signed in" is the whole question
A page behind a login, a dashboard, a thread in your mail, an internal wiki, is only there in a browser that is logged in. A tool that launches its own browser sees the login wall. There are three ways round that, and the four tools here take different ones.
Drive the real Chrome. Chrome can be started with a remote debugging port, and then any
program on the machine can control it. Chrome DevTools MCP's documentation is frank about the
trade: "Chrome requires you to use a non-default user data directory when enabling the remote
debugging port", so this is a separate profile rather than your daily one, and "any application
on your machine can connect to this port and control the browser". Puppeteer's connect() works
the same way.
Ask Chrome to allow it. From Chrome 144, DevTools MCP's --autoConnect uses a setting at
chrome://inspect/#remote-debugging that you enable and confirm, and then it drives your default
profile, with the caveat that it cannot pick a profile if you have several.
Put an extension in the browser. Playwright MCP's extension mode and Page Scanner both go this way: a piece of the tool lives inside Chrome, the agent talks to it, and Chrome's own permission model decides what it can touch.
Playwright MCP
Playwright MCP is the general-purpose option. It gives an agent a browser to navigate, click and
type in through accessibility snapshots, and among its tools are browser_take_screenshot, with
full-page capture in PNG, JPEG or WebP, and browser_pdf_save, which is opt-in. By default it
runs its own browser; its extension mode connects to the Chrome or Edge you are logged in to, so
the agent works where you work. If the capture is one step in a longer browsing task, this is the
natural choice.
Chrome DevTools MCP
Google's own server lets an agent "control and inspect a live Chrome browser": automation,
debugging, performance traces, and take_screenshot with a fullPage option in PNG, JPEG or
WebP. It has no PDF tool. Its two ways of reaching a running Chrome are the ones above, the
debugging port with a separate profile or --autoConnect on a recent Chrome. If the agent's job
is to debug a page rather than to keep a copy of it, this is the one built for that.
Puppeteer
Puppeteer is a library, not a server, so the agent runs a script you wrote, or writes one.
page.screenshot({ fullPage: true }) and page.pdf() do the capturing; the PDF renders with the
print stylesheet unless you emulate screen media first, and its options cover paper format,
margins, scale, backgrounds and page ranges. It launches its own browser by default, and connects
to a running one through a debugging port. Maximum control, in exchange for owning the code.
Page Scanner MCP
Page Scanner's server is four tools over its command line: pair, list_browsers, list_tabs
and scan_page. The capture runs inside the Chrome you already use, through the extension, so a
page behind a login is a page you are logged in to, and scan_page writes the file to disk and
returns its absolute path. The file is the same PDF the editor makes, text selectable and artwork
vector, laid out at the window's width or at A4 or Letter so it prints at 1:1, or a PNG or JPEG
when format says so. Nothing leaves the
machine: the bridge listens on 127.0.0.1 only, is off until you pair it, and a token is what stops
any other program on the machine asking for a scan. It does not navigate or click; it captures
the page a tab is showing. Setup is one line for Claude Code:
claude mcp add page-scanner -- npx -y @page-scanner/mcpthen a pairing, and the port and token pasted into the extension's settings page. Chrome shows its "started debugging this browser" bar while a scan runs, for the agent's scans as much as yours.
Which should you use?
Use Playwright MCP if the agent has to browse, not just capture: log in, click through, fill a form, and take the screenshot at the end.
Use Chrome DevTools MCP if the agent's job is the page's behaviour, console and performance, and a screenshot is evidence rather than the product.
Use Puppeteer if you are writing the pipeline yourself and want every option in code.
Use Page Scanner MCP if what the agent needs is the document: a faithful PDF of a page you are signed in to, with real text, printable, from a tool that cannot do anything else in your browser.
Frequently asked questions
Is it safe to let an agent into my browser? The debugging-port route is the one to be careful with, and Chrome DevTools MCP's docs say so: with the port open, any application on the machine can control the browser. Playwright MCP's extension mode and Page Scanner's pairing keep Chrome's own permission model in place; Page Scanner's bridge is loopback only, off until paired, and needs the token.
Can any of these capture a page as a vector PDF with selectable text? Playwright MCP, Puppeteer and Page Scanner write PDFs with real text. Chrome DevTools MCP writes images.
Will the agent see the debugger bar too? Page Scanner attaches Chrome's debugger for each scan, so the bar shows during an agent's scan as it does during yours. Its documentation says why it cannot be hidden.
Where this comes from
- Playwright MCP on GitHub.
- Chrome DevTools MCP, its tool reference and advanced usage.
- Puppeteer's
page.pdf()andPDFOptions. - Page Scanner's MCP documentation.
Page Scanner is a Chrome extension. Add it to Chrome.