webfetch MCP server
Self-hosted web search for LLM agents: search -> fetch -> rank pipeline with semantic caching
56 stars18 downloads/wk
Reviews
Write oneNobody has reviewed webfetch yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
webfetch tools (5)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
fetch_urlFetch one page's full extracted text under a budget.
save_findingCache a fact learned outside web_search, marked unverified.
savings_reportWhat webfetch has saved vs hosted web-search pricing: this session (since the server started) plus the lifetime total.
statusSetup status: which search engines have keys and will serve, which optional features are on or degraded, cache location, and the env-var configuration surface.
web_searchSearch the web and return ranked, source-labeled excerpts.
Public scan report
scanner v0.1.9 · 2026-09-25 · same rubric, same numbers if you re-run it
- Code scan59 source files scanned20/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 65 days ago12/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Findings (1)
- mediumeval / new Function used
exec.evalwebfetch_llm-0.1.3/evals/run_matcher_eval.py: …""" Layer 1: offline semantic-matcher eval (no network beyond model downloads). Ans…
What the publisher says
From the webfetch repository's README, as published. We do not edit it. Read it on GitHub
webfetch
<!-- mcp-name: io.github.firish/webfetch -->
Web search for LLM agents that you run yourself - up to 8x fewer input tokens and 3x lower cost than hosted web_search, at the same accuracy.
Hosted web-search tools charge $10 per thousand searches and then bill you again for every token of retrieved content they push into your context window. webfetch replaces them with a local pipeline - multi-engine search, page fetching and extraction, semantic reranking, sentence-level compression - exposed as a web_search tool your model calls like any other. And unlike every hosted tool and search API we surveyed, repeated and paraphrased queries are served from a semantic cache for free.
(Install with pip install webfetch-llm; the import name is webfetch.)
Jump to: The headline · What you get · Getting started · Check your setup · Full benchmark results · Claude Code · Agent loop · Savings report · How it works · Caveats
Same accuracy. A third of the cost. An eighth of the tokens.
One agent loop, one model, one judge, 50 SimpleQA questions. The only thing that changes between rows is the search tool:
Swap Opus for gpt-5.6-sol and the same webfetch tool hits 96% - hosted parity - at $0.040/query and 2,156 tokens: an eighth of what the hosted tool pushes into your context. Full results cover every arm we ran.
These numbers are the WORST case for webfetch - measured on an empty cache. In real use the gap widens on its own: repeats and rewords serve from cache for free, and the token advantage is paid again on every later turn that keeps search results in context. It adds up to receipts like this one, from an ordinary Claude Code session:
Every claim in this README is generated by an eval harness that ships in this repo - the question sets, per-question records, judging protocol, and the negative results are all in evals/, and every table can be regenerated with one command. Don't take our word for the grading: evals/results/README.md maps every table row to the raw result file that produced it, down to per-question judge verdicts.
What you get
A search pipeline you own (4-engine RRF fusion, local extraction, sentence-level compression). Results come from reciprocal-rank fusion across DuckDuckGo, Brave, Serper, and Tavily - whichever of them you have keys for. DDG needs no key, so the tool works at literally zero cost out of the box; every key you add joins the fusion automatically. Pages are fetched and extracted locally (trafilatura, readability, newspaper4k, Playwright rendering for JS pages and 403 walls), chunked, ranked by a hybrid BM25 + bi-encoder cascade with a cross-encoder on top, then compressed to the sentences that answer the query - measured 50% fewer tokens at zero recall loss.
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Install directly
claude mcp add webfetch -- uvx webfetch-llm
webfetch: common questions
- Is webfetch MCP server safe?
- Mostly: it is graded B (71/100). Read the webfetch safety report
- How do I install webfetch?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does webfetch need an API key?
- Yes. The registry entry asks for
BRAVE_API_KEY,SERPER_API_KEY,TAVILY_API_KEY. - Is webfetch maintained?
- The last commit was 65 days ago (2026-07-23). The latest release is v0.1.3.
- What can I use instead of webfetch?
- Servers from other publishers that do the same job: SEO Tools: A-Parser bridge MCP server, Notipo MCP server and three.ws Signals MCP server. Compare all webfetch alternatives.
Alternatives to webfetch
Same job from other publishers: the closest match first, then the best rated.
- SEO Tools: A-Parser bridgeBridge to a self-hosted A-Parser: SERP, suggests and 150+ parsers via its API (read-only).not reviewedGrowingB
- NotipoPublish to self-hosted WordPress from AI agents: markdown, images, SEO, and Notion sync.not reviewedGrowingA
- three.ws SignalsDiscover signal feeds ranked by proven edge, rank publishers, and subscribe + track results.not reviewedEstablishedB
- Scholar FeedRank CS/AI/ML papers by citations, forecast impact, or code adoption; trace 23.2M citation edges.not reviewedEstablishedB
Web Validator by DigestSEOAudit public webpages and supplied markup for HTML, CSS, SEO, JSON-LD, and link issues.not reviewedGrowingA