XXO47OXX/spa-reader-mcp
MCP server that renders JavaScript SPA pages and extracts Markdown via headless Chromium
Platform-specific configuration:
{
"mcpServers": {
"spa-reader-mcp": {
"command": "npx",
"args": [
"-y",
"spa-reader-mcp"
]
}
}
}Add the config above to .claude/settings.json under the mcpServers key.
[](https://github.com/XXO47OXX/spa-reader-mcp/actions/workflows/ci.yml) [](https://www.npmjs.com/package/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.
npx playwright install chromium{
"mcpServers": {
"spa-reader": {
"command": "npx",
"args": ["-y", "spa-reader-mcp"]
}
}
}claude mcp add spa-reader -- npx -y spa-reader-mcpspa_readRender a page and extract content as Markdown.
| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | url | string | — | URL to read (required) | | waitForSelector | string | — | CSS selector to wait for | | waitTimeout | number | 30000 | Timeout in ms | | includeMetadata | boolean | true | Add YAML frontmatter | | cookies | array | — | Cookies for auth | | headers | object | — | Custom HTTP headers |
spa_screenshotCapture a PNG screenshot after JS rendering.
| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | url | string | — | URL to capture (required) | | waitForSelector | string | — | CSS selector to wait for | | waitTimeout | number | 30000 | Timeout in ms | | width | number | 1280 | Viewport width | | height | number | 720 | Viewport height | | fullPage | boolean | false | Full page capture | | cookies | array | — | Cookies for auth | | headers | object | — | Custom HTTP headers |
http: and https: schemes allowedLoading reviews...