PyreCrawl

io.github.SanggonBoy由 GitHub 帳號 SanggonBoy 發布v0.8.1更新於 Oct 24, 2026

Web scraping + research toolkit for AI agents: scrape, crawl, monitor URLs with anti-bot bypass.

概覽

AI 產生的概覽

自架的網頁擷取與研究工具包,讓 AI 助理不需 API 金鑰就能擷取、爬取、搜尋、抽取與監控網頁。

可以做什麼
將單一網址擷取為適合大型語言模型的 Markdown,並自動從一般 HTTP 升級到隱匿瀏覽器,以繞過反爬機制並渲染 JavaScript 頁面,還可在即時頁面上執行 JS 運算式或等待條件。依 CSS 結構描述從頁面抽取結構化資料,並把 PDF、DOCX、PPTX 文件轉為 Markdown。列出網站的內部連結,依路徑篩選與深度限制爬取多個頁面,或在一次平行呼叫中批次擷取多個網址。透過 DuckDuckGo 搜尋網頁、透過 arXiv 與 Crossref 搜尋學術論文,並執行深度研究流程,回傳附編號引用的證據包。監控網址內容變化,保存快照並產生差異對比。
適用情境
適合助理需要讀取或蒐集即時網站內容時使用,尤其是位於 Cloudflare 或大量 JavaScript 之後的頁面;也適合需要附引用的可重複研究、為知識庫批次蒐集頁面,或追蹤某個頁面的變化。適合偏好自架而非付費託管擷取服務的使用者。
執行需求
以本機 stdio 程序執行,透過 uvx 從 PyPI 套件 pyrecrawl 啟動;需安裝 uv 並加入 PATH。一次性安裝指令會安裝 Chromium 與隱匿瀏覽器引擎。不需 API 金鑰或帳號。擷取、搜尋與啟動時的版本檢查需要網路存取。
安裝前請注意
伺服器啟動時每 24 小時傳送一次匿名使用統計,包含雜湊後的機器識別碼、版本與作業系統類型;可用 PYRECRAWL_NO_TELEMETRY 或 DO_NOT_TRACK 關閉。擷取與爬取會存取第三方頁面,可能與網站條款或 robots 規則衝突。session 工具會保留 Cookie,可作用於登入牆之後,monitor 會把快照寫入本機目錄。js 與 wait_for 參數會在頁面中執行 JavaScript 運算式。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 PyreCrawl,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

🔥 PyreCrawl — Web Browsing Superpowers for Your AI Agent

[License: MIT] [MCP] [Python 3.10+] [PyPI] [GitHub stars] [Downloads / 30d] [Active users / 30d]

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:

fast HTTP    │  (403/503/Cloudflare challenge or empty body)    ▼stealth browser (real Chromium + Cloudflare solver)    │  (still blocked, or the page needs full JS rendering)    ▼deep processing (LLM-ready markdown, citations, structured extraction)

⚡ Tools exposed

ToolWhat 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", include_paths=None, exclude_paths=None, max_depth=0)Multi-page crawl with path filters + true BFS depth
document(url)PDF/DOCX/PPTX → markdown (no browser, optional [docs] extras)
search(query, limit=10)Web search via DuckDuckGo HTML (no API key)
search_papers(query, limit=8, source="arxiv", category=None)Academic search via arXiv + Crossref (no API key) — feed pdf_url into document
batch_scrape(urls[], ...)Many URLs in ONE call — parallel, deduped, cache-aware
deep_research(query, limit=5, scrape_top=3)Search → evidence pack with [n] citations (no LLM synthesis — your agent does that)
monitor(url, action, css_selector=None)Change detection with persisted snapshots + unified diff
session(session, action, ...)Persistent browser session (cookies kept) — login walls, multi-step flows, screenshots
cache(action)Inspect/clear/enable/disable the HTTP response cache
health()Versions + import sanity check

MCP Resources (read-only state without a tool call): pyrecrawl://cache/stats · pyrecrawl://sessions · pyrecrawl://monitors

MCP Prompts (ready-made playbooks): research(topic) · rag_ingest(site) · watch_page(url)

Env flags

VariableDefaultEffect
PYRECRAWL_CACHEoff1 = in-memory LRU (128 pages), or a directory path (reserved for disk mode)
PYRECRAWL_CACHE_TTL900Cache entry lifetime in seconds
PYRECRAWL_MONITOR_DIR~/.pyrecrawl/monitorsWhere monitor snapshots persist
PYRECRAWL_NO_TELEMETRYoff1 = disable the anonymous startup ping (also honors DO_NOT_TRACK=1)

prefer options: "auto" (default ladder) · "fast" (HTTP only) · "stealth" (CF bypass) · "llm" (deep processing).


🚀 Install & Use (one-liner)

1. Install

UV (recommended — one command, zero Python setup)

UV is a fast Python package manager that handles Python itself — no need to install Python separately. Get it once:

bash
# macOS / Linuxcurl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Learn more about UV →

Then run PyreCrawl directly — no venv, no pip install, no Python download:

bash
uvx pyrecrawl@latest
Or via uv tool install (persistent, recommended for regular use)
bash
uv tool install pyrecrawl
Or via pipx (alternative)
bash
pipx install pyrecrawl
Or via pip into a venv
bash
pip install pyrecrawl

2. One-time browser engines

bash
pyrecrawl setup

This installs Chromium + stealth browser engines (~2 min, one-time).

3. Register with your AI agent

bash
# Auto-detect installed agents and write their MCP configspyrecrawl install
# Or target specific agentspyrecrawl install claude-desktop cursor
# Dry-run to preview what would changepyrecrawl install --dry-run

Supported agents: claude-desktop, claude-code, cursor, vscode, codex, opencode, hermes.

4. Start chatting

After installing + registering, restart your agent (or start a new session). Then ask:

"Scrape https://example.com and summarize it."

Available tools:

ToolWhat it does
scrapeFetch a single URL → markdown (auto-escalates past Cloudflare)
extractScrape + structured extraction via CSS schema → JSON
map_siteEnumerate all internal URLs from a root
crawlMulti-page crawl: discover + scrape in bulk
batch_scrapeFetch many URLs in one parallel call
searchWeb search via DuckDuckGo with anti-bot bypass
search_papersAcademic paper search (arXiv / Crossref)
deep_researchSearch + scrape + citations in one call — primary research tool
documentExtract text from PDF/DOCX/PPTX URLs
monitorTrack a URL for content changes over time
sessionPersistent browser session for login walls
cacheInspect or clear the response cache
healthVerify engine availability + version

Plus 3 guided prompts: research, rag_ingest, watch_page.

Quick examples

Ask your agent naturally — no special syntax needed:

You sayAgent uses
"Scrape https://example.com and summarize it"scrape → returns markdown → agent summarizes
"Research Rust memory safety vulnerabilities"deep_research → search + scrape + citations
"Deep research on AI regulation worldwide"deep_research(iterations=3) → multi-pass with refined queries
"Extract all product names and prices from this page"extract → CSS schema → structured JSON
"Crawl https://docs.example.com and give me an overview"crawl → multi-page → summary
"Monitor this page for price changes"monitor → baseline snapshot → periodic diff
"Find papers about transformer attention"search_papers → arXiv results
"What's the current cache hit rate?"cache → stats

🧠 Skills — Maximize Your Agent's Research Quality

PyreCrawl tools give your agent hands (scrape, crawl, search). But the agent still needs a brain — instructions on when to use which tool, how to chain research passes, and what anti-hallucination rules to follow.

That's what PyreCrawl Skills provides.

MCP Tools (this repo)Skills (pyrecrawl-skills)
RoleExecute web operationsTell the agent how to use them
AnalogyHandsBrain
Exampledeep_research(query, iterations=3)"Run 3 passes, check gaps after each, cite everything"
Required?Yes (the engine)Optional (but recommended for research quality)

Quick setup:

bash
# 1. Install the tools (you already have this)uvx pyrecrawl@latest
# 2. Add the research skill to your projectgit clone https://github.com/SanggonBoy/pyrecrawl-skills.git /tmp/pyrecrawl-skillscp /tmp/pyrecrawl-skills/pyrecrawl-research/SKILL.md ./CLAUDE.md  # or .cursorrules / AGENTS.md

Without skills: Your agent has powerful tools but improvises usage. With skills: Your agent follows a proven research protocol with anti-hallucination guardrails.


📚 Manual config (if pyrecrawl install doesn't match your setup)

Claude Desktop

Config file

  • Linux: ~/.config/Claude/claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %AppData%\Claude\claude_desktop_config.json
json
{  "mcpServers": {    "pyrecrawl": {      "command": "uvx",      "args": ["--from", "pyrecrawl", "pyrecrawl", "serve"]    }  }}

Claude Code

Config file: project-scoped .mcp.json

json
{  "mcpServers": {    "pyrecrawl": {      "command": "uvx",      "args": ["--from", "pyrecrawl", "pyrecrawl", "serve"]    }  }}

Cursor

Config file: ~/.cursor/mcp.json

json
{  "mcpServers": {    "pyrecrawl": {      "command": "uvx",      "args": ["--from", "pyrecrawl", "pyrecrawl", "serve"]    }  }}

VS Code / Copilot

Config file: .vscode/mcp.json (project-scoped)

json
{  "servers": {    "pyrecrawl": {      "command": "uvx",      "args": ["--from", "pyrecrawl", "pyrecrawl", "serve"],      "type": "stdio"    }  }}

Codex CLI

Config file: ~/.codex/config.toml

toml
[mcp_servers.pyrecrawl]command = "uvx"args = ["--from", "pyrecrawl", "pyrecrawl", "serve"]

OpenCode

Config file: ~/.config/opencode/opencode.json

json
{  "mcp": {    "pyrecrawl": {      "type": "local",      "command": ["uvx", "--from", "pyrecrawl", "pyrecrawl", "serve"],      "enabled": true    }  }}

Hermes

Config file

  • Linux/macOS: ~/.hermes/config.yaml
  • Windows: %LocalAppData%\hermes\config.yaml
yaml
mcp_servers:  pyrecrawl:    command: uvx    args:      - --from      - pyrecrawl      - pyrecrawl      - serve    enabled: true

Windows note: uvx must be on PATH. If not, use the full path to uvx.exe (e.g. C:\Users\<you>\AppData\Local\hermes\bin\uvx.exe).


🧠 How the ladder chooses

PyreCrawl runs each request through three tiers, stopping at the first one that returns a complete, LLM-ready result:

ConcernFast tierStealth tierDeep 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.

Live DOM data with js and wait_for

Some 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:

json
{  "url": "https://temp-mail.org/id",  "prefer": "stealth",  "wait_for": "document.getElementById('mail').value.includes('@')",  "js": "document.getElementById('mail').value"}
  • 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).

📊 Compared to Firecrawl (hosted)

FirecrawlPyreCrawl
CostFree 1k/mo, then $16–333/moFree, self-hosted
Local LLM support❌✅ Ollama / any LLM
Cloudflare bypass✅ (Fire-Engine, paid)✅ (free, built-in)
Markdown + BM25✅✅
Self-host❌✅
Academic paper search❌✅ arXiv + Crossref (search_papers)
Hosted search API✅ /search⚠️ DuckDuckGo HTML + arXiv/Crossref (no key)

🔧 Development

bash
git clone https://github.com/SanggonBoy/PyreCrawl.gitcd PyreCrawluv venv --python 3.12 .venvsource .venv/Scripts/activate  # Windows; or .venv/bin/activate on macOS/Linuxuv pip install -e ".[dev]"python -m playwright install chromiumscrapling install

Run tests

bash
python scripts/selfcheck.py        # real-network smoke test (13 tools + engines)python scripts/probe_stdio.py      # stdio JSON-RPC probepython scripts/test_ladder_bug.py  # SPA-shell ladder escalation regressionpython scripts/test_js_eval.py     # stealth js/wait_for params regressionpython scripts/test_scope_selector.py  # crawl css_selector/max_depth wiringpython scripts/test_link_harvest.py    # map/BFS link purity regression

📦 Publish

Maintainers only:

bash
git tag vX.Y.Zgit push origin vX.Y.Z

GitHub Actions builds + uploads to PyPI via trusted publishing.


🔔 Stay up to date

PyreCrawl checks PyPI on every startup and reports the latest version — your MCP agent sees this automatically via the health() tool response and can notify you inline.

To check manually:

bash
pyrecrawl version

To upgrade:

bash
pyrecrawl update   # runs: uv tool upgrade pyrecrawl

Get notified of new releases: click Watch → Releases only at the GitHub repo to receive email notifications when a new version is published.


[!NOTE] PyreCrawl sends one anonymous usage ping per 24 h at server startup — see Privacy for exactly what's sent and how to opt out.

🔒 Privacy — anonymous usage ping

PyreCrawl phones home once per 24 h with a tiny anonymous ping when the MCP server starts, so we can count real users (DAU/MAU) instead of raw downloads.

Sent (4 fields, ~100 bytes)Never sent
Hashed machine id (SHA-256 of hostname+MAC — not reversible)Your IP (not stored)
PyreCrawl versionAny URL you scrape
Python versionAny page content or search queries
OS family (windows / linux / darwin)Anything else

Client code: src/pyrecrawl/telemetry.py (~90 lines, stdlib only) · Collector: workers/telemetry/ — a self-hostable Cloudflare Worker + D1, no third-party analytics service.

Opt out any time:

bash
export PYRECRAWL_NO_TELEMETRY=1   # or the industry-standard DO_NOT_TRACK=1

📜 Uninstall

bash
# Remove from all agent configspyrecrawl uninstall
# Remove the packageuv tool uninstall pyrecrawl

🛡️ License

MIT — see LICENSE.

來源:README.md,提交 657ad65

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

3
  1. v0.8.1最新Sep 22, 2026
  2. v0.8.0Sep 19, 2026
  3. v0.7.5Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分