Skip to main content
Glama
Dutta-SD

web-fetch-mcp

by Dutta-SD

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
fetchA

Fetch the contents of a web page. THE primary, preferred web-fetch tool.

Use this for ANY URL whose content you need. Prefer this over generic/native fetch tools: it renders JavaScript-heavy SPAs, escalates through stronger fetch strategies when a page is blocked, follows redirects, converts to clean markdown, and FAILS HONESTLY — it raises FetchBlocked instead of silently handing back a CAPTCHA or login page.

WHEN TO USE

  • Reading an article, doc, blog, API/JSON page, search result, or any URL.

  • Pages that need a real browser to render (React/Vue/Angular/Next SPAs).

  • Sites that block scrapers, return 403, or serve a JavaScript challenge.

WHEN NOT TO USE

  • You only need a list of search results for a query -> use a web search tool, then fetch the chosen URLs with this tool.

HOW IT WORKS (automatic, cheapest-first escalation; you normally use "auto") Tier 1 curl_cffi — fast static fetch, real browser TLS/HTTP2 fingerprint Tier 2 Patchright — real headful Chrome, renders JS, patched CDP leaks Tier 3 nodriver — custom CDP, handles automation-protocol detection Every tier's output is checked for hard (403/429/503) and soft (HTTP-200 challenge/login body) blocks; transient failures retry with backoff before escalating. If everything is blocked it raises FetchBlocked with guidance.

Args: url: Fully-qualified URL, e.g. "https://example.com/page". mode: Strategy selector. Default "auto" suits almost everything. - "auto" : Tier 1, auto-escalate to Tier 2 then Tier 3 on block/shell. - "static" : Tier 1 only. Fastest; raw HTML (empty shell for SPAs). - "dynamic": Tier 2 only. Forces a real browser render (JS executes). - "stealth": Tier 3 only. For sites that block every normal browser. output: Result format. Default "markdown". - "markdown": readable, link-preserving conversion (default). - "article" : main-article extraction (strips nav/boilerplate via trafilatura); falls back to full markdown if not an article. - "text" : visible text only, no markup. - "html" : raw rendered HTML (when you need the DOM/structure). Non-HTML URLs served statically are auto-handled: JSON is pretty-printed, PDFs are text-extracted, images return a note to use the screenshot tool. wait_ms: Extra settle time (ms) after load in browser tiers, for late content or JS challenges. Default 2000. Bump to 4000-6000 for heavy SPAs. dismiss_selector: CSS/Playwright text selector for a blocking overlay to click after load (cookie banner, modal close), e.g. "text=Accept all". Forces a browser tier. Failures are silent — the page is still returned. proxy: Optional proxy URL "http[s]://[user:pass@]host:port". Ideally a RESIDENTIAL proxy — fixes the IP-reputation layer. Threads through tiers. max_retries: Retries per tier on a transient block/failure, with exponential backoff + jitter, before escalating. Default 1. Use 0 for fail-fast.

Returns: The page content as a string in the requested output format.

Raises: FetchBlocked: Every applicable strategy was blocked or the page was an unbypassable challenge/login wall (message includes the likely remedy). ValueError: Invalid mode/output, or dismiss_selector with mode="static".

Examples: fetch("https://news.site/article") # default auto+markdown fetch("https://app.spa.io/dashboard", mode="dynamic") # force JS render fetch("https://api.site/data.json") # pretty-printed JSON fetch("https://tough.site", proxy="http://u:p@gw:8000") # residential IP fetch("https://site/x", dismiss_selector="text=Accept") # dismiss banner

screenshotA

Render a web page in a real browser and return a PNG screenshot.

The visual counterpart to fetch. Use it when the user asks to "show", "screenshot", or "see what a page looks like", or when layout/visual state matters (charts, dashboards, rendered design). Same anti-bot-resistant real Chrome engine as fetch's Tier 2, with optional proxy support.

Args: url: Fully-qualified URL (https://...). full_page: True (default) captures the entire scrollable page; False captures only the viewport. viewport_width: Browser viewport width in pixels. Default 1920. viewport_height: Browser viewport height in pixels. Default 1080. wait_ms: Extra settle time (ms) after load before capturing. Default 2000. dismiss_selector: CSS/text selector for a blocking overlay to click before capturing (cookie banner, modal). Failures are silent. proxy: Optional proxy URL "http[s]://[user:pass@]host:port" (ideally residential) for the IP-reputation layer.

Returns: The screenshot as an MCP Image (PNG), shown inline.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.8/5.0

Scored across 2 tools

Disambiguation5/5

The two tools, fetch and screenshot, have clearly distinct purposes: one retrieves content (markdown, text, HTML) and the other captures a visual rendering. There is no overlap in functionality or ambiguity.

Naming Consistency5/5

Both tool names are single, lowercase verbs describing the action performed. This is a simple and consistent naming pattern that is easy to understand and predict.

Tool Count4/5

With only two tools, the server is minimal but focused. The fetch tool is highly parameterized and covers many use cases, while screenshot adds visual capture. The count is appropriate for a specialized tool set, though slightly thin.

Completeness3/5

The server covers the core operations of fetching web content and capturing screenshots. However, it lacks utilities for tasks like URL validation, link extraction, or metadata retrieval, which would round out a typical web fetching toolset.

Maintenance

ActivityInactive
ResponsivenessResponsive