Wafle-Scraper — Universal MCP Server for Safe Web Scraping
Wafle-Scraper is an MCP server that lets AI agents (OpenCode, Claude, Cursor) extract data from the web safely and responsibly.
Safety First
| Rule | Enforcement |
|---|---|
| No private data | Every browser session is incognito — no cookies, no localStorage, no saved passwords |
| Only what you ask | The scraper never mines extra data beyond your explicit request |
| No localhost | Internal/private IPs are blocked by default |
| Rate limited | Minimum 2 seconds between requests — never floods servers |
| CAPTCHA = human only | No automated CAPTCHA solving. If one appears, you solve it interactively |
| User-Agent rotation | Each request looks like a real browser |
Quick Start
pip install wafle-scraper
playwright install chromium
wafle-scraper
Configuration
OpenCode / Claude Desktop / Cursor
{
"mcpServers": {
"wafle-scraper": {
"command": "wafle-scraper",
"description": "Web scraping & browser automation — incognito, audited, safe"
}
}
}
CLI Options
wafle-scraper # MCP stdio mode (default for agents)
wafle-scraper --http --port 8000 # HTTP SSE mode
wafle-scraper --version # Show version
MCP Tools
| Tool | Description | Safety |
|---|---|---|
scrape_url |
Extract text from a static URL (requests + BeautifulSoup) | ✅ Read-only, no JS |
scrape_browser |
Navigate a page in isolated incognito browser and extract text | ✅ Incognito, no cookies |
scrape_reddit |
Fetch public posts from a subreddit via official API | ✅ API, no scraping |
extract_emails |
Find email addresses on a public page | ✅ Only what you ask |
browser_interact |
Click, type, scroll, extract, screenshot in live browser | ✅ You control the actions |
Browser Backend (Playwright)
- Incognito always:
storage_state=None, fresh context per session - No permissions: No camera, mic, location access
- Anti-detection: Rotating UA, viewport, locale, timezone
- Natural delays: Human-like timing between actions
- Gradual scroll: Loads lazy content naturally
CAPTCHA Handling
Wafle-Scraper does NOT solve CAPTCHAs automatically. When a CAPTCHA is detected:
- The scraper pauses
- Prompts you to open the URL in your browser
- You solve the CAPTCHA manually
- Type
doneand the scraper continues
This is the only ethical and reliable approach without paid services.
Security
- Blocked:
localhost,127.0.0.1, private IPs,file://,chrome:// - Rate limiting (configurable, default 2s min interval)
- Scope enforcement — only processes what you explicitly request
- User-Agent rotation
- Browser isolation — Playwright contexts are fully sandboxed
Requirements
- Python 3.10+
- Playwright with Chromium installed (
playwright install chromium) - Windows, macOS, Linux
Installation from Source
git clone https://github.com/creandoaldia/wafle-scraper.git
cd wafle-scraper
pip install -e .
playwright install chromium
License
MIT
Why "Wafle-Scraper"?
Part of the WAFLE ecosystem (Web AI Framework for Language Ecosystems). Wafle-Scraper gives WAFLE agents the ability to read the live web — safely, transparently, and under your control.
Metadata
Release files for wafle-scraper 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| wafle_scraper-0.1.0.tar.gz | 10.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wafle_scraper-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.4 kB
Release files / wafle_scraper-0.1.0.tar.gz
| Download URL | wafle_scraper-0.1.0.tar.gz |
|---|---|
| Size | 10.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
325bde5e1b5979da607b743d846e06f3f28d28903ce1e83eb98fa475590f6819
|
|
BLAKE2b-256 checksum How to use checksums |
a1068e0eb1414df1a3d0bb6e7d7c72f3852f6092b160ba392e4e029fe47371ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|
Release files / wafle_scraper-0.1.0-py3-none-any.whl
| Download URL | wafle_scraper-0.1.0-py3-none-any.whl |
|---|---|
| Size | 12.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a743f42874b1a0df39a6856e2145637ba02d12969b3b1df17f462fdcca64c3ca
|
|
BLAKE2b-256 checksum How to use checksums |
0965bb6f80b7eb6c35afd9562308d9d6b925af2aba1d451f36635e55ca772dab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|
Security for wafle-scraper 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.