MCP server for scraping Single Page Applications (SPAs) and converting them to clean, LLM-ready markdown with JavaScript rendering support
This server has severe definition quality issues. Tool 1 (execute_skill_action) has a generic description and no visible input schema in the source code. Tool 2 (crawl_spa_to_markdown) has a basic description (89 chars, below the 194-char baseline) and a partial schema visible in the prompt but not in the actual source files provided. Neither tool's output schema is documented. The server appears to be a stub implementation, mcp_server.py only prints a JSON status message and does not actually register tools with the MCP protocol. No error handling, no parameter validation, no security considerations visible. The client.py file shows a mock implementation returning hardcoded responses, not a real MCP tool registration.
Crawl a Single Page Application to markdown with JavaScript DOM rendering, preserving tables and code blocks
Execute web scraping skill action to crawl SPA and convert to markdown
No input schemas visible in source code for either tool. execute_skill_action has no schema at all; crawl_spa_to_markdown schema is inferred from the prompt description, not from actual tool registration code.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. crawl_spa_to_markdown returns a dict with fields like 'crawl_job_id', 'javascript_dom_rendered', etc., but this is hardcoded mock data, not a formal schema.
Tool descriptions are too generic and lack actionable context. 'Execute web scraping skill action...' does not explain WHEN to use it or what it returns. 'Crawl a Single Page Application to markdown...' is 89 chars (below 194-char baseline) and omits prerequisites, error cases, and output structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 24 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If a URL is invalid, unreachable, or the JavaScript rendering fails, the tool provides no actionable error message or retry strategy.
Tool registration is not visible in the source code. mcp_server.py does not call any MCP protocol methods to register tools; it only prints a static JSON status. The actual tool definitions are not integrated with the MCP server.