SteadyFetch

Reliable web fetching for AI agents with retry, circuit breaker, caching, and anti-bot bypass

SteadyFetch

Reliable web fetching for AI agents. Stop losing hours to Cloudflare blocks, timeouts, and flaky scrapes.

SteadyFetch is an MCP server that gives your AI agents reliable web access with automatic retry, circuit breaker protection, caching, and anti-bot bypass — out of the box.

The Problem

Every AI agent that touches the web hits the same wall:

  • Cloudflare blocks your requests
  • Sites return CAPTCHAs
  • Pages timeout or load partially
  • Rate limits kill your batch jobs
  • You waste hours debugging flaky scrapes

The Solution

One MCP tool call. SteadyFetch handles the rest.

Agent calls fetch_url("https://example.com")
  → Checks cache (instant if hit)
  → Checks circuit breaker (fail-fast if domain is down)
  → Stealth browser fetch with anti-bot bypass
  → On failure: retry with exponential backoff
  → Fallback: plain HTTP fetch
  → Cache the result
  → Return clean markdown + raw HTML

Tools

ToolDescription
fetch_urlFull reliability fetch — returns markdown + HTML
fetch_markdownReturns only clean markdown, optimized for LLMs
check_domainCircuit breaker status for a domain
cache_statsCache utilization metrics
clear_cacheFlush the cache for fresh data

Quick Start

As MCP Server (remote)

Connect to the hosted server:

{
  "mcpServers": {
    "steadyfetch": {
      "url": "https://your-steadyfetch-instance.up.railway.app/mcp"
    }
  }
}

Self-hosted

pip install steadyfetch
steadyfetch

Or with Docker:

docker build -t steadyfetch .
docker run -p 8200:8200 steadyfetch

Configuration

All settings via environment variables:

VariableDefaultDescription
PORT8200Server port
STEADYFETCH_MAX_RETRIES3Retry attempts per URL
STEADYFETCH_CIRCUIT_THRESHOLD5Failures before circuit opens
STEADYFETCH_CIRCUIT_COOLDOWN120Seconds before retrying a broken domain
STEADYFETCH_CACHE_TTL3600Cache lifetime in seconds
STEADYFETCH_TIMEOUT30000Page load timeout in ms

How It Works

Retry with backoff — Exponential backoff + jitter prevents retry storms. 3 browser attempts before falling back to HTTP.

Circuit breaker — Per-domain failure tracking. After 5 consecutive failures, the domain is circuit-broken for 2 minutes. Prevents wasting time on sites that are blocking you.

Caching — Disk-backed cache with configurable TTL. Repeat fetches are instant. 500MB default limit.

Anti-bot bypass — Stealth browser with magic mode, navigator patching, and human-like behavior simulation via Crawl4AI.

Graceful degradation — If the browser can't get through, falls back to plain HTTP. If HTTP fails, returns a clear error with domain health status. Never hangs, never silently fails.

License

MIT

관련 서버