# Reading a web page or driving a browser: which recorded MCP server for which page

For assistants asked to read a web page or act in a browser, this feature separates a fetch server from two browser servers and lists what headlesson observed in their lesson tests, separately from cautions taken from their documentation. The recorded lesson runs used https://example.com on macOS on 2026-10-11, and the two browser records also include a supplementary test on a local fixture page; none covered logins, clicks, forms, console or network inspection, traces, JavaScript-heavy pages or real sites.

Published 2026-10-13, updated 2026-10-13. Editorial article by the headlesson operator, written from the catalog records it cites. Test results in it are the operator's own observations, not vendor claims. Each cited record keeps its own source; the article's editorial source does not stand in for them.

## Read a page, or drive a browser

- To read one public page as text: Fetch MCP server (mcp-server-fetch) (`app:mcp-server-fetch`), a reference MCP server with a single fetch tool that converts the HTML of a URL to Markdown. Its lesson passed both steps with 2026.10.10 on 2026-10-11, fetching https://example.com through uvx.
- To look at a page the way a browser renders it, or to click and fill forms: Playwright MCP (`app:playwright-mcp`), which works from accessibility snapshots of the page. Its lesson passed 4 steps with 0.0.83 on 2026-10-11: navigate to https://example.com, take a snapshot, close, in a fresh isolated headless browser; a supplementary test opened a local fixture page. Clicking and filling forms were not tested.
- To use Chrome's debugging and performance tools (console, network, traces): Chrome DevTools MCP (`app:chrome-devtools-mcp`), which drives Google Chrome. Its lesson passed 4 steps with 1.10.1 on 2026-10-11: open https://example.com, list pages, take a snapshot, close; a supplementary test opened a local fixture page. Console, network and trace tools were not tested.
- Editorial advice, not tested: start with Fetch MCP server (mcp-server-fetch) (`app:mcp-server-fetch`) for a static public page, and move to Playwright MCP (`app:playwright-mcp`) or Chrome DevTools MCP (`app:chrome-devtools-mcp`) when the page needs a browser to render it or a login; the three were separate lesson runs at the same example URL, not a controlled head-to-head comparison.

## Observed in the tests

- Fetch MCP server (mcp-server-fetch) (`app:mcp-server-fetch`): the Markdown for https://example.com held only the body paragraph after the line "Contents of https://example.com/:"; the page title and link were missing. Check whether something you need was dropped, not only that text came back.
- Playwright MCP (`app:playwright-mcp`) and Chrome DevTools MCP (`app:chrome-devtools-mcp`): both ran with a fresh isolated headless browser on macOS with Node 24.19.0 and Chrome 154; for Chrome DevTools MCP (`app:chrome-devtools-mcp`) the test turned off its usage statistics with flags.

## Cautions from the documentation

- Fetch MCP server (mcp-server-fetch) (`app:mcp-server-fetch`): output is cut at max_length (5000 characters by default), so read further with start_index; for requests the model starts it obeys the site's robots.txt and sends its own user-agent; it refuses private and loopback addresses by default, and its README notes this does not cover DNS rebinding; installing Node.js switches it to a different HTML simplifier, so output can differ between machines.
- Playwright MCP (`app:playwright-mcp`): it is not a security boundary, and a persistent profile can keep login state, so use an isolated profile unless the person wants their logins used.
- Chrome DevTools MCP (`app:chrome-devtools-mcp`): usage statistics are on by default; only Google Chrome and Chrome for Testing are officially supported; its CLI has unrestricted file system access unless a workspace restriction is set. Browser contents are visible to the connected MCP client. headlesson's own reading of the configuration, not tested: connecting to the person's running Chrome (--autoConnect) needs them to approve a dialog.

## A safe sequence

With Fetch MCP server (mcp-server-fetch) (`app:mcp-server-fetch`), Playwright MCP (`app:playwright-mcp`) or Chrome DevTools MCP (`app:chrome-devtools-mcp`): confirm the exact URL with the person; read before acting (fetch the page, or navigate and take a snapshot); use a fresh isolated browser profile unless the person asks for theirs; show any form submission, purchase or account change and get approval before doing it; check that the text you rely on was not truncated or dropped. Each lesson (headlesson_get with sections ["lesson","gotchas"]) gives the exact configuration and versions.


## Records cited

Each line gives the record, its public page if there is one, and where its name comes from.

- Fetch MCP server (mcp-server-fetch) — `app:mcp-server-fetch` (no public page yet; available over MCP); source: [https://github.com/modelcontextprotocol/servers/blob/main/src/fetch/README.md](https://github.com/modelcontextprotocol/servers/blob/main/src/fetch/README.md) (checked 2026-10-11, primary, official)
- Playwright MCP — `app:playwright-mcp` (no public page yet; available over MCP); source: [https://github.com/microsoft/playwright-mcp/blob/main/README.md](https://github.com/microsoft/playwright-mcp/blob/main/README.md) (checked 2026-10-09, primary, official)
- Chrome DevTools MCP — `app:chrome-devtools-mcp` (no public page yet; available over MCP); source: [https://github.com/ChromeDevTools/chrome-devtools-mcp/blob/main/README.md](https://github.com/ChromeDevTools/chrome-devtools-mcp/blob/main/README.md) (checked 2026-10-09, primary, official)

## Article source

headlesson editorial judgement (checked 2026-10-13, inferred, editorial).

## Retrieve over MCP

`headlesson_get id="feature:web-pages"` on https://mcp.headlesson.com/mcp

Page updated: 2026-10-13 (the date its content last changed).

要約（日本語）: headlesson の運営が、カタログの記録（試用の結果と注意点）だけから書いた使い分けの特集。試用の結果は記載の版・日付での運営の観察で、精度や安全性の保証ではない。
