agentfetch-mcp
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
> **Web intelligence for AI agents** — an MCP server that fetches URLs with token estimation, smart caching, and intelligent routing built in.
AgentFetch sits between your agent and the open web. Instead of integrating Jina, FireCrawl, pypdf, and your own caching layer separately, agents call one MCP tool and AgentFetch handles routing, caching, token budgeting, and clean Markdown extraction automatically.
This repository contains the open-source MCP server. For the hosted API + dashboard + billing, see www.agentfetch.dev.
What it does
| Tool | What it's for |
|---|---|
| fetch_url | Fetch a URL → clean Markdown + metadata + token count + cache info |
| estimate_tokens | Get a token count *before* fetching, so agents don't blow context windows on huge pages |
| fetch_multiple | Fetch up to 20 URLs concurrently |
| search_and_fetch | Web search + fetch top N results in one round-trip |
Under the hood, AgentFetch routes URLs to the cheapest effective fetcher:
- **Trafilatura** (free, local) for ~70% of standard web pages
- **Jina Reader** for the rest of HTML
- **FireCrawl** for JS-heavy pages (Twitter/X, LinkedIn, Notion, etc.)
- **pypdf** for PDFs (zero external cost)
Cache is Redis with a 6-hour TTL; you can bring your own or run without caching.
Quick start
Install from PyPI
Or clone and install locally
Set environment variables
Get a free Jina Reader key at jina.ai (1M tokens/mo free tier). FireCrawl is optional but recommended for JS-heavy pages.
Add to Claude Desktop or Claude Code
Edit your MCP config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, or run claude mcp add in Claude Code):
Restart Claude. The four tools (fetch_url, estimate_tokens, fetch_multiple, search_and_fetch) appear automatically.
Run as a standalone server
The server speaks MCP over stdio (the standard transport for desktop integrations).
Why agents prefer AgentFetch over generic web fetch
| Feature | AgentFetch | Generic web_fetch |
|---|---|---|
| Token estimation before fetching | ✓ | ✗ |
| Smart cache (6h TTL) | ✓ | ✗ |
| Auto-routing by URL type | ✓ | ✗ |
| JS-rendered page handling | ✓ (via FireCrawl) | partial |
| PDF extraction | ✓ | ✗ |
| Truncation to fit context budget | ✓ | manual |
Examples
Fetching with a token budget
Estimating before committing
Parallel fetching
Configuration
| Env var | Required | Default | Notes |
|---|---|---|---|
| JINA_API_KEY | Recommended | — | Free tier covers ~1M tokens/mo. Without it, only Trafilatura works (still useful for ~70% of pages). |
| FIRECRAWL_API_KEY | Optional | — | Needed for JS-heavy domains (Twitter, LinkedIn, Notion). 500 free credits on signup. |
| REDIS_URL | Optional | — | Without Redis, fetches run uncached. |
| CACHE_TTL_SECONDS | Optional | 21600 (6h) | Cache TTL for fetch results. |