io.github.XXO47OXX/spa-reader-mcp
MCP Server that renders JavaScript SPA pages and extracts LLM-ready Markdown content
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
spa-reader-mcpclaude mcp add spa-reader-mcp -- npx -y spa-reader-mcp@1.0.2
{
"mcpServers": {
"spa-reader-mcp": {
"command": "npx",
"args": [
"-y",
"spa-reader-mcp@1.0.2"
]
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
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.
| 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_screenshot
Capture 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 |
Security
- SSRF protection: blocks private/loopback IPs
- Only
http:andhttps:schemes allowed - Selector injection prevention
- Content capped at 100KB
Dev
pnpm install && pnpm build
pnpm test
License
MIT
Frequently asked questions
What is io.github.XXO47OXX/spa-reader-mcp?
MCP Server that renders JavaScript SPA pages and extracts LLM-ready Markdown content
How do I install io.github.XXO47OXX/spa-reader-mcp?
It runs on your machine. In Claude Code: claude mcp add spa-reader-mcp -- npx -y spa-reader-mcp@1.0.2. For other clients, paste the JSON configuration from this page into their MCP settings.
Does io.github.XXO47OXX/spa-reader-mcp need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is io.github.XXO47OXX/spa-reader-mcp open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains io.github.XXO47OXX/spa-reader-mcp?
It is published by XXO47OXX. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.