Fast, lightweight MCP server that fetches any web page, strips HTML bloat, converts it to clean Markdown, and extracts metadata and links for LLM analysis.
Three well-named, read-only tools with complete input schemas and solid descriptions. All tools follow verb_noun naming (fetch_*, extract_*) and include parameter type definitions. Descriptions are 150 - 250 chars, within the 10 - 1024 baseline. However, output schemas are not documented in the source code provided, only input schemas are visible. Error handling is mentioned in server.ts instructions but not detailed per-tool. Tool composition is clean (each does one thing), and all parameters have descriptions. No security issues detected (read-only, no secrets). Missing: explicit output schema documentation, per-tool error recovery guidance, and pagination details for extract_links results.
List the links on a web page as absolute URLs, each flagged as internal (same site) or external, with anchor text, title, rel and nofollow status. Supports scope filtering, de-duplication and a result limit — useful for crawling a documentation tree, auditing outbound links or finding next pages.
Extract metadata from a web page: title, description, Open Graph tags, Twitter Card tags, canonical URL, language, author, publication dates, favicon, JSON-LD structured data, alternate language links, RSS/Atom feeds, heading outline, and word count.
Fetch a web page and convert it to clean Markdown. Supports pagination via startIndex/maxLength, optional main-content-only mode, and configurable timeouts.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'metadata', 'links as absolute URLs') but do not specify the exact JSON structure, field names, or types. LLMs cannot plan downstream tool calls or extract specific fields without knowing the response schema.
Error recovery guidance is generic. server.ts mentions 'stable error codes' (TIMEOUT, HTTP_ERROR, BLOCKED_HOST) but does not document which tools return which codes or what the LLM should do for each. Per-tool error handling is missing.
Pagination not fully specified for extract_links. The tool accepts a 'limit' parameter but does not document whether results are truncated, whether a next_cursor or total_count is returned, or how to fetch the next page. Large link lists may be silently capped.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2025-06-18+ | v2 |
fetch_page_markdown pagination via startIndex/maxLength is underdocumented. The description mentions 'pagination via startIndex/maxLength' but does not explain the semantics: is startIndex a character offset? Does the tool return the actual slice length? What happens if startIndex exceeds content length?
No batch variants. If an agent needs to fetch metadata for 10 URLs, it must call extract_metadata 10 times sequentially. A batch variant (extract_metadata_batch accepting an array of URLs) would reduce token waste and latency.