One tool for AI agents to scrape, crawl, extract, map, and search the web. Self-hosted, no API keys.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
One command gives any AI agent the whole web. Scrape, extract, crawl, map, and search β self-hosted, no API keys, no rate limits, no subscription.
PyreCrawl speaks MCP (Model Context Protocol), the standard tool interface for Claude, Cursor, VS Code, Codex, OpenCode, Hermes, and any MCP-compatible agent.
A smart auto-fallback ladder always picks the cheapest method that succeeds:
| Tool | What it does |
|---|---|
scrape(url, prefer="auto") | Single URL β LLM-ready markdown |
extract(url, schema) | Scrape + structured extraction (JsonCss schema) |
map_site(root, include_pattern=None, limit=200) | Enumerate all internal URLs |
crawl(root, max_pages=5, prefer="auto") | Multi-page crawl with auto-fallback per page |
search(query, limit=10) | Web search via DuckDuckGo HTML (no API key) |
health() | Versions + import sanity check |
prefer options: "auto" (default ladder) Β· "fast" (HTTP only) Β· "stealth" (CF bypass) Β· "llm" (deep processing).
This installs Chromium + stealth browser engines (~2 min, one-time).
Supported agents: claude-desktop, claude-code, cursor, vscode, codex, opencode, hermes.
After installing + registering, restart your agent (or start a new session). Then ask:
"Scrape https://example.com and summarize it."
The tools appear as mcp_pyrecrawl_scrape, mcp_pyrecrawl_extract, mcp_pyrecrawl_map_site, mcp_pyrecrawl_crawl, mcp_pyrecrawl_search, mcp_pyrecrawl_health.
pyrecrawl install doesn't match your setup)Config file
~/.config/Claude/claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json%AppData%\Claude\claude_desktop_config.jsonConfig file: project-scoped .mcp.json
Config file: ~/.cursor/mcp.json
Config file: .vscode/mcp.json (project-scoped)
Config file: ~/.codex/config.toml
Config file: ~/.config/opencode/opencode.json
Config file
~/.hermes/config.yaml%LocalAppData%\hermes\config.yamlWindows note:
uvxmust be on PATH. If not, use the full path touvx.exe(e.g.C:\Users\<you>\AppData\Local\hermes\bin\uvx.exe).
PyreCrawl runs each request through three tiers, stopping at the first one that returns a complete, LLM-ready result:
| Concern | Fast tier | Stealth tier | Deep tier |
|---|---|---|---|
| Static HTML page | β ~200ms | β | β |
| Cloudflare-protected | β | β Turnstile solver | β |
| JS-heavy SPA | β | β real Chromium | β |
Live DOM data (input .value, JS state) | β | β
js param | β |
| LLM-ready markdown + citations | β | β | β BM25, fit-markdown |
| Structured extraction (CSS schema) | β | β | β |
| Deep crawl (BFS/DFS/BestFirst) | β | β | β adaptive |
The agent never has to pick. prefer="auto" does it every call.
js and wait_forSome sites keep the data you want in a DOM property (e.g. an <input>'s .value)
that JS writes after an XHR β it never appears in the serialized HTML. The
scrape tool accepts two stealth-tier params for exactly this:
wait_for β a JS predicate expression polled until truthy (bounded by timeout).
Use it instead of guessing a sleep for anything that arrives asynchronously.js β a JS expression evaluated once the page settles; the value comes back
in meta.js_result. Errors are captured in meta.js_error (the page result is
still returned, never a crash).| Firecrawl | PyreCrawl | |
|---|---|---|
| Cost | Free 1k/mo, then $16β333/mo | Free, self-hosted |
| Local LLM support | β | β Ollama / any LLM |
| Cloudflare bypass | β (Fire-Engine, paid) | β (free, built-in) |
| Markdown + BM25 | β | β |
| Self-host | β | β |
| Hosted search API | β /search | β οΈ DuckDuckGo HTML (no key) |
Maintainers only:
GitHub Actions builds + uploads to PyPI via trusted publishing.
MIT β see LICENSE.
Built on the shoulders of Scrapling and Crawl4AI β both MIT, both excellent.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/pyrecrawl)<a href="https://allmcps.com/mcp/pyrecrawl"><img src="https://allmcps.com/api/badge/pyrecrawl?style=directory" alt="PyreCrawl on AllMCPs" /></a>