Turns any web page into clean Markdown, page metadata and classified links for LLMs.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A fast, dependency-light Model Context Protocol server that turns any web page into something a language model can actually read: clean Markdown, structured metadata, and a classified list of links.
Web pages are 90% chrome. Scripts, cookie banners, navigation, sidebars and tracking pixels burn context and derail reasoning. This server strips all of that on the way in, so the model sees the article and nothing else.
startIndex / nextStartIndex instead of
being silently cut in half.lang, author, publish/modify dates,
Open Graph, Twitter cards, JSON-LD, hreflang alternates, RSS/Atom feeds, h1βh6 outline and raw
HTTP headers.rel, nofollow, internal vs external
classification, scope filters, de-duplication.code
(TIMEOUT, HTTP_ERROR, BLOCKED_HOST, RESPONSE_TOO_LARGE, β¦), a retryability flag and a
recovery hint, so the model can self-correct instead of guessing.outputSchema, so clients get
validated structuredContent, not prose they have to re-parse.robots.txt enforcement.Requires Node.js 20.18.1 or newer (inherited from cheerio, which needs undici 7).
The server speaks MCP over stdio, so on its own it just waits for a client. Point a client at it:
~/Library/Application Support/Claude/claude_desktop_config.json on macOS,
%APPDATA%\Claude\claude_desktop_config.json on Windows:
With configuration, using a global install:
Restart Claude Desktop, then ask it to summarise a URL.
Same shape, in .kiro/settings/mcp.json / the client's MCP config file:
The server is listed in the official MCP Registry
as io.github.vojtisprime11/web-fetcher, so clients that read the registry can discover it
directly:
The image runs as the unprivileged node user and carries production dependencies only. CI builds
it and drives it with a real MCP client, so it is verified to start and answer introspection.
All three tools are read-only, idempotent and open-world (annotated as such in the protocol), and
all take an absolute http(s) URL.
fetch_page_markdownDownloads a page and returns clean, LLM-friendly Markdown.
| Parameter | Type | Default | Description |
|---|---|---|---|
url | string | required | Absolute http(s) URL. |
maxLength | integer 500β1000000 | 25000 | Markdown characters to return per call. |
startIndex | integer β₯ 0 | 0 | Character offset; use nextStartIndex from the previous call. |
mainContentOnly | boolean | true | Drop nav/header/footer/sidebar, keep the densest block. |
includeLinks | boolean | true | Keep Markdown links (false inlines the text only). |
includeImages | boolean | false | Keep images as . |
includeMetadata | boolean | true | Attach a short metadata summary. |
timeoutMs | integer 1000β120000 | env / 15000 | Per-request timeout. |
Request:
structuredContent:
To read the rest, call again with "startIndex": 7984. Keep going while nextStartIndex is not
null.
extract_metadataEverything a model needs to classify a page, without spending context on its body.
| Parameter | Type | Default | Description |
|---|---|---|---|
url | string | required | Absolute http(s) URL. |
includeJsonLd | boolean | true | Include parsed JSON-LD blocks (malformed ones are skipped). |
includeHeadings | boolean | true | Include the h1βh6 outline. |
includeHttpHeaders | boolean | true | Include response headers, lower-cased. |
timeoutMs | integer 1000β120000 | env / 15000 | Per-request timeout. |
structuredContent (abridged):
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/web-fetcher)<a href="https://allmcps.com/mcp/web-fetcher"><img src="https://allmcps.com/api/badge/web-fetcher?style=directory" alt="Web Fetcher on AllMCPs" /></a>