MCP Fetch Server
Reference MCP server for fetching and converting web content. Pulls a URL, runs HTML through a readability extractor, returns markdown the model can chunk and reason over. The lightweight web-reader pair to Brave Search — search returns links, fetch reads them.
Overview
What it is and how it works
MCP Fetch Server is one of the reference implementations maintained in the official modelcontextprotocol/servers repository — the same monorepo that ships the canonical filesystem, git, memory, and Brave Search servers Anthropic publishes as worked examples of the Model Context Protocol. Its job is narrow and well-defined: given a URL, retrieve the page, strip it down to readable content, and hand the result back to the calling model as markdown. It is not a browser, not a crawler, and not a search engine — it is the "read" half of a read/search pair, designed to be composed with something like mcp-server-brave-search (search returns candidate URLs, fetch retrieves and cleans the content of the one the model picks).
Architecturally, the server is a thin Python (or TypeScript, depending on which reference build you pull) process that speaks MCP over stdio, exposing a single primary tool — conventionally fetch — that takes a URL and optional parameters like max length or start index for pagination through long documents. Internally it does an HTTP GET, then runs the raw HTML through a readability-style extraction pass (the same class of algorithm that powers Firefox's Reader View and most "clip this article" browser extensions) to discard navigation chrome, ads, and boilerplate, converting what remains into markdown. Because MCP tool responses are token-budgeted, this conversion step matters more than it sounds: raw HTML is enormously wasteful of context relative to the actual prose content, and a naive fetch-and-dump would blow through a model's context window on a single moderately complex webpage.
The server also respects robots.txt by default in the reference implementation, which is a deliberate design choice consistent with the "well-behaved default agent" philosophy Anthropic has pushed across its reference MCP servers — it can be configured to ignore robots rules, but the default is polite crawling behavior, not maximal scraping capability. There's no JavaScript execution engine involved anywhere in the pipeline; it is a static HTTP fetch plus HTML-to-text/markdown transformation, nothing more.
Deployment patterns
The overwhelmingly common deployment is local, single-user, and stdio-based: added to a claude_desktop_config.json (or equivalent config for other MCP hosts) as a subprocess the client spawns on demand, typically via uvx mcp-server-fetch for the Python build or an npx invocation for the Node build. There's no persistent server process, no port to manage, no auth layer to configure — it starts when the host needs it and exits when the session ends. This is the same pattern as the other reference servers (filesystem, git, memory): zero infrastructure, config-file-only setup, appropriate for a developer wiring MCP into Claude Desktop, Claude Code, or a custom MCP client on their own laptop.
Homelab or team deployment is less common for this specific server because there's little to gain from centralizing it — unlike a database or filesystem MCP server, fetch has no state and no credentials worth sharing across a team, so most operators just let each client spawn its own instance locally. Where it does show up in shared infrastructure is inside orchestration frameworks (agent runners, RAG pipelines) that wire it in as one tool among several MCP servers exposed to a coordinator LLM — in that context it's typically containerized alongside the search server and whatever code-execution or memory servers the agent stack uses, still communicating over stdio or occasionally over an MCP-over-SSE bridge if the orchestrator needs it network-accessible. There is no GPU involvement at any point — this is pure I/O and text processing, so hardware sizing is a non-issue; the only real constraint is outbound network access and, if robots.txt enforcement is on, exposure to whatever access restrictions target sites impose.
How it compares
Within the "give my agent the ability to read a webpage" niche, the closest comparisons are Playwright MCP and Puppeteer-based MCP servers, and various commercial scraping-as-a-service MCP wrappers (Firecrawl MCP, Browserbase, etc.). Fetch trades capability for simplicity: Playwright MCP drives a real browser engine, so it handles JavaScript-rendered SPAs, login flows, cookie-gated content, and interactive navigation — but it's heavier to run, pulls in a full browser binary, and is noticeably slower per call. Fetch has none of that overhead; it's a single HTTP request plus a readability pass, which makes it fast and dependency-light but means it simply cannot see content that only exists after client-side rendering. Firecrawl and similar hosted scraping MCP servers go further than fetch in the other direction — they handle JS rendering, anti-bot evasion, and structured extraction as a paid API, which is more capable but reintroduces a third-party dependency and cost that fetch, as a pure local OSS tool, avoids entirely. Compared to rolling your own requests + BeautifulSoup/trafilatura tool, fetch's main value is that it's already packaged as a standard MCP server with sane defaults — you gain nothing technically over hand-rolling it, but you skip the boilerplate of wrapping it in MCP's tool-call schema yourself.
Best use cases and honest limitations
Fetch is the right choice when the content you need is server-rendered static or mostly-static HTML — documentation sites, blog posts, news articles, Wikipedia, GitHub README pages, API references — and you want the model to read it without standing up browser infrastructure. Paired with a search MCP server, it forms a minimal but genuinely useful research loop for coding agents and general-purpose assistants. Its tiny dependency surface also makes it an easy, low-risk addition to an MCP toolchain: there's not much attack surface or maintenance burden.
It falls over immediately on anything gated behind JavaScript rendering, authentication, or interactive state — single-page apps that hydrate content client-side, logged-in dashboards, infinite-scroll feeds, or sites requiring form submission simply won't return usable content, since there's no JS evaluation and no session/auth handling. Anyone who needs those has to reach for Playwright MCP or a hosted scraping service instead, and should not expect fetch to be a drop-in substitute. It's also worth noting this is a reference implementation, not a hardened production scraper — it lacks the retry logic, proxy rotation, and rate-limit handling that dedicated scraping tools build in, so it's best suited to occasional, on-demand reads rather than bulk crawling workloads.
Stack & relationships
How MCP Fetch Server relates to other entries in the catalog — recommended pairings, alternatives, dependencies, and edges to avoid. Each edge carries a one-line operator note from our editorial team.
Recommended stack
- Pairs withMCP Brave Search Server
Search returns links; fetch reads them. The canonical web-research duo in the Anthropic reference set.
- Pairs withClaude Code
Fetch MCP is the default web-content reader for Claude Code workflows. Pairs with Brave Search MCP — search returns links, fetch reads them.
Alternatives
- Alternative toPlaywright MCP
Fetch is for static HTML; Playwright handles JS-rendered pages, auth flows, and forms. Pick Playwright when readability extraction isn't enough.
- Alternative toFirecrawl MCP
Firecrawl handles JS-rendered pages and crawl-volume scenarios; mcp-server-fetch is for single-page static reads. Different operating points; not redundant.
Pros
- Markdown conversion via readability built in
- Tiny dependency surface
- Composes naturally with mcp-server-brave-search
Cons
- Not a full browser — JS-rendered pages need Playwright MCP
- No JS evaluation or auth flows
Compatibility
| Operating systems | macOS Linux Windows |
| GPU backends | n/a |
| License | Open source · free (OSS, MIT) |
Runtime health
Operator-grade signals on how actively MCP Fetch Server is being maintained, how fresh its measurements are, and what failure classes operators have flagged. Every label below is anchored to a real date or count — we never infer maintainer activity we can't show.
Release cadence
Derived from the most recent editorial signal on this row.
32 days since last refresh · source: enrichedAt
Benchmark freshness
How recent the editorial measurements on this runtime are.
No editorial benchmarks for this runtime yet.
Community reproduction
Submissions that match an editorial measurement on similar hardware.
No community reproductions on file yet.
Get MCP Fetch Server
Frequently asked
Is MCP Fetch Server free?
What operating systems does MCP Fetch Server support?
Does MCP Fetch Server need a GPU?
Reviewed by RunLocalAI Editorial. See our editorial policy for how we evaluate tools.
Related — keep moving
Verify MCP Fetch Server runs on your specific hardware before committing money.