
Spa Reader Mcp
Solves the classic SPA scraping problem by spinning up headless Chromium via Playwright, waiting for JavaScript to finish executing, then extracting clean Markdown using Readability and Turndown. Exposes two tools: spa_read for pulling rendered content with optional YAML frontmatter, and spa_screenshot for grabbing PNGs after page load. You can pass custom selectors to wait for, set timeouts, inject cookies and headers for authenticated pages, and control viewport dimensions. Includes SSRF protection that blocks private IPs and caps content at 100KB. Reach for this when you need Claude to read documentation sites, dashboards, or any content that doesn't exist until React or Vue renders it.
- tools
- 2
- transport
- STDIO
- last updated
- Mar 13, 2026
Tools
2 toolsPublic tool metadata for what this MCP can expose to an agent.
spa_readRender a page and extract content as Markdown.
Render a page and extract content as Markdown.
No parameter schema in public metadata yet.
spa_screenshotCapture a PNG screenshot after JS rendering.
Capture a PNG screenshot after JS rendering.
No parameter schema in public metadata yet.
Sponsors
Readme
spa-reader-mcp
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
npx playwright install chromium
Claude Desktop
{
"mcpServers": {
"spa-reader": {
"command": "npx",
"args": ["-y", "spa-reader-mcp"]
}
}
}
Claude Code
claude mcp add spa-reader -- npx -y spa-reader-mcp
Tools
spa_read
Render a page and extract content as Markdown.
Details
- Repository
- github.com/xxo47oxx/spa-reader-mcp
- Categories
- AI & LLM Tools, Documents & Knowledge
- Package
spa-reader-mcp- Transport
- STDIO
- Registry
- MCP registry, active