Local-first MCP server and CLI in Rust: any page as LLM-ready Markdown, whole-site crawls, keyless search, and local captcha solving. No cloud, no API keys.
- ✓Open-source license (AGPL-3.0)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
- !Install pipes a remote script into a shell (curl | sh)
claude mcp add svipall -- npx -y --yes{
"mcpServers": {
"svipall": {
"command": "npx",
"args": ["-y", "--yes"]
}
}
}MCP Servers overview
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/brand/svipall-lockup-dark.svg">
<img src="assets/brand/svipall-lockup.svg" alt="Svipall — local-first web scraping and browsing MCP server for AI agents" width="400">
</picture>
</p>
<h3 align="center">A different face at every gate.</h3>
<p align="center">
<b>Web reading for your AI agent — running on your own machine.</b><br>
An MCP server and CLI, in Rust, that extracts web pages into Markdown,<br>
crawls sites within configured limits, searches without an API key, and attempts supported challenges —<br>
then tells you plainly about the ones it cannot.
</p>
<p align="center">
<a href="https://www.rust-lang.org"><img alt="Rust" src="https://img.shields.io/badge/Rust-stable-983E25?style=flat-square&labelColor=0B1A2B"></a>
<a href="#license"><img alt="License: AGPL-3.0" src="https://img.shields.io/badge/License-AGPL--3.0-DCE3EB?style=flat-square&labelColor=0B1A2B"></a>
<a href="#mcp-tools"><img alt="MCP" src="https://img.shields.io/badge/MCP-29%20tools-FFB03A?style=flat-square&labelColor=0B1A2B"></a>
<a href="docs/development.md"><img alt="Recorded test results" src="https://img.shields.io/badge/tests-results%20recorded-DCE3EB?style=flat-square&labelColor=0B1A2B"></a>
<a href="docs/proof.md"><img alt="Benchmarks" src="https://img.shields.io/badge/benchmarks-published%2C%20failures%20included-983E25?style=flat-square&labelColor=0B1A2B"></a>
<a href="docs/privacy.md"><img alt="No telemetry" src="https://img.shields.io/badge/telemetry-none-0C6244?style=flat-square&labelColor=0B1A2B"></a>
</p>
<p align="center">
<a href="#install"><b>Install</b></a> ·
<a href="#what-you-can-actually-do-with-it"><b>Use cases</b></a> ·
<a href="docs/proof.md"><b>Proof</b></a> ·
<a href="#mcp-tools"><b>Tools</b></a> ·
<a href="docs/captcha.md"><b>Captcha</b></a> ·
<a href="#the-rest-api"><b>REST API</b></a> ·
<a href="#how-svipall-compares"><b>Compare</b></a> ·
<a href="docs/faq.md"><b>FAQ</b></a>
</p>
<p align="center">
<a href="docs/demo/"><img src="docs/demo/svipall.gif" width="960" alt="Six commands and the output they printed: the tier ladder answering a Cloudflare wall with a browser, search without an API key, a schema induced from a listing, a crawl written to CSV, and 160 of 160 automation-tell probes clean."></a><br>
<sub>Replayed from real runs on one machine. <a href="docs/demo/">How it was recorded, and the raw captures</a>.</sub>
</p>
---
**Local processing. No third-party API keys. No paid captcha services. No telemetry.**
Web requests reach the sites you visit, and results reach the agent or client you connect.
Svipall fetches and renders pages locally, extracts their content, and reports detected challenges
and extraction-quality labels. Some sites still block it, and an apparently successful response
can contain incomplete records or a page shell. The published comparisons therefore audit useful
content separately from HTTP status and the tool's own verdict.
## Why Svipall
| What goes wrong | Svipall |
|---|---|
| Your agent reads a "checking your browser" screen and summarises it as the article. It was a `200`, so nothing flagged it | Twelve wall kinds, each naming the move it implies. **Detected blocks carry an explicit verdict**; classification is heuristic [→](docs/features.md#judging-what-came-back) |
| You crawl 5,000 pages and can't tell which are worth keeping | Assessed pages carry quality and duplicate observations; **quality labels do not discard pages** [→](docs/features.md#judging-what-came-back) |
| One page = 300,000 tokens of raw HTML. The fixes are four manual jobs you now own | Clean Markdown by default; opt into tables as rows, `out_file` to disk, or capture of the site's own JSON API [→](docs/features.md#reading) |
| You want to attempt a supported captcha without a paid solver | Fifteen widget families and eleven answer modalities, all local, optional vision models depending on the build, and a human dashboard for unresolved challenges [→](docs/captcha.md) |
It records successful visits, failures, incomplete extraction and rejected changes. Historical
benchmark logs and the current comparison use different scoring rules and configurations;
the [results section](docs/proof.md) distinguishes them.
Rust · MCP + CLI + REST · no Node, no Python, no API key · local storage and processing
→ **[Install it ↓](#install)**
The [comparison table](#how-svipall-compares) describes other projects' documented scope.
---
## Install
Every channel below installs the latest [release](https://github.com/ilien-dev/svipall/releases),
built from the tree this README describes. `svipall doctor` reports what an installed build can do
on the machine it is on.
The [README factual audit](bench/experiments/native-auto-candidate2-20260907/readme-factual-audit.md)
records the source checks, documentation corrections and limits of this review.
Choose agent-assisted setup, the Claude Code plugin, or a manual installation.
### Ask the agent you already have
Paste this into Claude Code, Cursor, Codex, opencode, or anything else that can run a command:
```
Install and configure Svipall by following the instructions here:
https://raw.githubusercontent.com/ilien-dev/svipall/main/docs/install.md
```
That page guides an agent through platform detection, installation, verification and MCP
registration. Completion depends on the agent, client configuration and available permissions.
### Claude Code: install the plugin
```
/plugin marketplace add ilien-dev/svipall
/plugin install svipall@svipall
/svipall:setup
```
`/svipall:setup` installs the binary if it is missing, checks the server answers, and offers to make
Svipall the way Claude reaches the web in every project. It asks before each of those.
`/svipall:doctor` reports the installation's capabilities. `/svipall:uninstall` offers removal
of setup's registration, memory and strict-mode changes; binary and data removal are separate choices.
### Install it yourself
One line, no toolchain, nothing to compile:
```bash
curl -fsSL https://raw.githubusercontent.com/ilien-dev/svipall/main/install.sh | sh # macOS, Linux
irm https://raw.githubusercontent.com/ilien-dev/svipall/main/install.ps1 | iex # Windows
```
Or a package manager, or the container image:
```bash
brew install ilien-dev/svipall/svipall # macOS, Linux
scoop bucket add svipall https://github.com/ilien-dev/scoop-svipall && scoop install svipall
docker pull ghcr.io/ilien-dev/svipall:latest # or :slim, the http tier only; see container notes
npx --yes svipall doctor # if node is already there
cargo install svipall # builds from source, so no captcha models
```
The installers verify checksums where they can, and a mismatch stops the install. A missing
checksum file, entry or hashing utility only warns, so a successful exit is not by itself proof
the archive was verified: read the output.
Platform builds, what ships where, building from source and wiring it into any MCP client are all
in [**docs/install.md**](docs/install.md). Never installed anything from a terminal before?
[**GET-STARTED.md**](GET-STARTED.md) is this section with nothing assumed.
### Then ask for something
No key to paste, no account to create, no service to sign up for.
> *"Read this page and summarise the pricing."*
> *"Crawl these docs and write me an `llms.txt`."*
> *"Watch this listing and tell me when the price moves."*
> *"Get me every row of that table as CSV."*
The assistant can choose among the exposed tools. A human dashboard for supported challenges needing a pair of
eyes lives at `http://localhost:8787/human`.
### Or drive it from a shell
```bash
svipall fetch https://example.com/article
svipall fetch https://shop.example/item --query "shipping costs"
svipall fetch https://docs.example/api --schema auto # rows from a listing you've never seen
svipall crawl https://docs.example/ --pages 50 --out pages.csv
svipall search "rust async runtime" --engine all
svipall snapshot https://news.ycombinator.com # the page as roles and refs, not markup
svipall serve --port 8788 # the same server as a local REST API
```
Completed data commands print **one JSON object** to stdout; diagnostics go to stderr, so their
output can be piped to `jq`. `serve` is a long-running server, and help is written to stderr.
### What comes back
A historical run of `svipall fetch https://example.com`, with the `content` string cut short.
Current automatic fetches also report identity and fallback fields described below:
```json
{
"attempts": ["http: 200 (170ms) OK"],
"chars": 167,
"content": "# Example Domain\n\nThis domain is for use in documentation examples…",
"exit": null,
"final_url": "https://example.com/",
"optimization": "ordinary",
"quality": "thin",
"quality_reasons": ["thin_text"],
"status": 200,
"tier_used": "http",
"title": "Example Domain",
"tokens_estimated": 42,
"url": "https://example.com"
}
```
`tier_used` says how hard it had to try. `quality` says what actually arrived — and when a page does
*not* arrive, the same object carries `blocked_reason`, `wall_kind`, `wall_vendor`, `wall_evidence`
and a `note` telling your agent what to do next. Straight from a committed benchmark record:
```json
{ "wall_kind": "vendor", "wall_vendor": "kpsdk.io", "wall_evidence": "header x-kpsdk-ct" }
```
**A detected block carries a verdict alongside the returned content.** A clear verdict still
needs a content check; the classifier is not proof that the requested records arrived intact.
## What you can actually do with it
| You want to… | It looks like this |
|---|---|
| **Read one page cleanly** | `web_fetch` → Markdown with heuristic boilerplate removal and sanitization; `query=` ranks teWhat people ask about svipall
What is ilien-dev/svipall?
+
ilien-dev/svipall is mcp servers for the Claude AI ecosystem. Local-first MCP server and CLI in Rust: any page as LLM-ready Markdown, whole-site crawls, keyless search, and local captcha solving. No cloud, no API keys. It has 0 GitHub stars and its last recorded update is dated 2026-09-10.
How do I install svipall?
+
You can install svipall by cloning the repository (https://github.com/ilien-dev/svipall) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is ilien-dev/svipall safe to use?
+
Our security agent has analyzed ilien-dev/svipall and assigned a Trust Score of 87/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.
Who maintains ilien-dev/svipall?
+
ilien-dev/svipall is maintained by ilien-dev. The last recorded GitHub activity is dated 2026-09-10, with 0 open issues.
Are there alternatives to svipall?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy svipall to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/ilien-dev-svipall)<a href="https://claudewave.com/repo/ilien-dev-svipall"><img src="https://claudewave.com/api/badge/ilien-dev-svipall" alt="Featured on ClaudeWave: ilien-dev/svipall" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!