The six tools are really one decision made per call: how much of the page the model should see. fetch_readable on an article costs a fraction of fetch_html on the same URL, and fetch_json skips the parsing step altogether. Because headers and a proxy are parameters on every tool, the pages that need a session cookie or a particular egress route stay reachable.
A local server with six fetch tools that differ in what they hand back: HTML, Markdown, plain text, JSON, Readability-parsed article text, or captions from a YouTube page. Every one takes custom headers, a proxy, and start_index / max_length for paging.
- Fetch a page as unmodified HTML (fetch_html) or converted to Markdown (fetch_markdown).
- Strip the tags entirely for plain text (fetch_txt), or read a JSON endpoint directly (fetch_json).
- Get the article and nothing else — fetch_readable runs Mozilla Readability to drop navigation, ads and boilerplate before converting to Markdown.
- Pull captions from a YouTube video page in a chosen language (fetch_youtube_transcript).
- Send your own headers, route through a proxy, and page long responses with start_index and max_length on every tool.
Node.js on the machine, and nothing else — no account, no key. MIT licensed.
One command — npx mcp-fetch-server
