Summary
A documentation crawl that stops where you tell it to.
The bounds are the feature: depth, page count, concurrency, two kinds of timeout and a path prefix all cap what a fetch can pull in, and failures come back per page rather than sinking the whole run. Truncation is flagged explicitly, so a partial answer is visibly partial.
What it is
A Bun-based MCP server that fetches documentation pages, extracts readable Markdown, ranks the links, and can crawl within explicit depth, page, timeout and scope limits.
What you get
- One tool covering both jobs — fetch a single page, or crawl outward from it
- Real depth semantics: depth 1 is the root page only, depth 2 adds direct children, depth 3 adds grandchildren, up to a maximum of 5
- Markdown extraction that keeps headings, lists, code blocks, tables, blockquotes and links
- A fast static fetch path, with Puppeteer rendering available for client-rendered or thin pages
- URLs normalised before deduplication — fragments, tracking parameters, default ports and trailing-slash duplicates removed
- Crawl scope held to the same origin, and optionally to a path prefix
- Hard bounds on maxPages, maxConcurrency, global timeout, per-page timeout and per-page content length
- Structured JSON results with crawl metadata, ranked links, truncation flags and per-page errors, so a partial crawl still returns what it got
Requirements
Bun 1.3.0 or newer. Puppeteer's browser installation is needed if render is set to `auto` or `always`. No account and no key.
