Spa Reader Mcp

io.github.XXO47OXXPublished by GitHub account XXO47OXXv1.0.2Updated Oct 24, 2026

MCP Server that renders JavaScript SPA pages and extracts LLM-ready Markdown content

Overview

AI-generated overview

A local MCP server that renders JavaScript single-page apps in headless Chromium and returns clean Markdown or PNG screenshots to an assistant.

What you can do
Render a page in headless Chromium, wait for JavaScript or a chosen CSS selector, and extract the content as Markdown, optionally with YAML frontmatter metadata and custom cookies or headers for authenticated pages. Capture a PNG screenshot of the rendered page with configurable viewport size and full-page option. Both tools accept a URL, a wait selector and a timeout.
When to use it
Useful when an assistant needs to read or capture content from JavaScript-heavy single-page sites where plain HTTP fetching returns empty or incomplete HTML, including pages behind a login supplied via cookies or headers.
Requirements
Runs locally over stdio via npx; requires Node.js and a Playwright Chromium browser installed on the machine (npx playwright install chromium). Desktop only. No accounts, API keys or environment variables are declared.
Before you install
The tools fetch arbitrary URLs from the user's machine, so the built-in SSRF protection blocking private and loopback addresses and non-HTTP schemes matters. Cookies and custom headers passed for authentication are sent to the target site; avoid exposing sensitive session credentials. Rendered content is capped at 100KB.

Installation

In SourceWeft

  1. Open Spa Reader Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

spa-reader-mcp

[CI] [npm version]

MCP server that renders JavaScript SPA pages and extracts Markdown via headless Chromium.

Traditional scrapers fail on SPAs because content is rendered client-side. This tool launches Playwright, waits for JS to finish, then extracts clean Markdown using Readability + Turndown.

Install

bash
npx playwright install chromium

Claude Desktop

json
{  "mcpServers": {    "spa-reader": {      "command": "npx",      "args": ["-y", "spa-reader-mcp"]    }  }}

Claude Code

bash
claude mcp add spa-reader -- npx -y spa-reader-mcp

Tools

spa_read

Render a page and extract content as Markdown.

ParameterTypeDefaultDescription
urlstring—URL to read (required)
waitForSelectorstring—CSS selector to wait for
waitTimeoutnumber30000Timeout in ms
includeMetadatabooleantrueAdd YAML frontmatter
cookiesarray—Cookies for auth
headersobject—Custom HTTP headers

spa_screenshot

Capture a PNG screenshot after JS rendering.

ParameterTypeDefaultDescription
urlstring—URL to capture (required)
waitForSelectorstring—CSS selector to wait for
waitTimeoutnumber30000Timeout in ms
widthnumber1280Viewport width
heightnumber720Viewport height
fullPagebooleanfalseFull page capture
cookiesarray—Cookies for auth
headersobject—Custom HTTP headers

Security

  • SSRF protection: blocks private/loopback IPs
  • Only http: and https: schemes allowed
  • Selector injection prevention
  • Content capped at 100KB

Dev

bash
pnpm install && pnpm buildpnpm test

License

MIT

Source: README.md at commit 2299c1c

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.2LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts