{
  "markdown": "# spa-reader-mcp\n\n[![CI](https://github.com/XXO47OXX/spa-reader-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/XXO47OXX/spa-reader-mcp/actions/workflows/ci.yml)\n[![npm version](https://img.shields.io/npm/v/spa-reader-mcp.svg)](https://www.npmjs.com/package/spa-reader-mcp)\n\nMCP server that renders JavaScript SPA pages and extracts Markdown via headless Chromium.\n\nTraditional 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.\n\n## Install\n\n```bash\nnpx playwright install chromium\n```\n\n### Claude Desktop\n\n```json\n{\n  \"mcpServers\": {\n    \"spa-reader\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"spa-reader-mcp\"]\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add spa-reader -- npx -y spa-reader-mcp\n```\n\n## Tools\n\n### `spa_read`\n\nRender a page and extract content as Markdown.\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `url` | string | — | URL to read (required) |\n| `waitForSelector` | string | — | CSS selector to wait for |\n| `waitTimeout` | number | 30000 | Timeout in ms |\n| `includeMetadata` | boolean | true | Add YAML frontmatter |\n| `cookies` | array | — | Cookies for auth |\n| `headers` | object | — | Custom HTTP headers |\n\n### `spa_screenshot`\n\nCapture a PNG screenshot after JS rendering.\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `url` | string | — | URL to capture (required) |\n| `waitForSelector` | string | — | CSS selector to wait for |\n| `waitTimeout` | number | 30000 | Timeout in ms |\n| `width` | number | 1280 | Viewport width |\n| `height` | number | 720 | Viewport height |\n| `fullPage` | boolean | false | Full page capture |\n| `cookies` | array | — | Cookies for auth |\n| `headers` | object | — | Custom HTTP headers |\n\n## Security\n\n- SSRF protection: blocks private/loopback IPs\n- Only `http:` and `https:` schemes allowed\n- Selector injection prevention\n- Content capped at 100KB\n\n## Dev\n\n```bash\npnpm install && pnpm build\npnpm test\n```\n\n## License\n\nMIT\n",
  "bytes": 2134,
  "sha": "28b81a600feb863871656bf6c7ecf6b2e4ba3da2120e63886ec4786d152a2fb5",
  "repo_slug": "xxo47oxx/spa-reader-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_xxo47oxx_spa_reader_mcp_6ab09fa7/readme"
}