# searxNcrawl, ein Webcrawler als MCP-Server mit Crawl4AI

Von Das Digitale Momentum, veröffentlicht am 2026-11-04

searxNcrawl ist ein quelloffener MCP-Server, der KI-Agenten einen Webcrawler gibt: `crawl` macht aus Seiten sauberes Markdown, `crawl_site` liest einen Bereich einer Dokumentation innerhalb von Limits, und beide laufen auf Ihrem Rechner mit Crawl4AI und Playwright. Diese Seite zeigt beide Tools in einem echten Lauf und vergleicht sie mit dem MCP-Endpunkt von Crawl4AI.

## Was die Crawler-Tools können

- `crawl`: eine oder viele URLs, in Chromium gerendert und als Markdown oder JSON zurückgegeben. Abschnitte, die sich innerhalb einer Seite wiederholen, fallen weg, Links bleiben, verschwinden oder kommen als eigene Liste, und eine gespeicherte Browsersitzung öffnet Seiten hinter einem Login.
- `crawl_site`: beginnt bei einer URL und folgt ihren Links in die Tiefe, innerhalb einer Tiefe, eines Seitenlimits und eines Timeouts, auf derselben Domain, solange `include_subdomains` nicht gesetzt ist. Jede Seite kommt als eigener Markdown-Abschnitt zurück.
- `search` mit `include_content=true`: findet Seiten über SearXNG und/oder You.com und crawlt jedes Ergebnis im selben Aufruf, wie die [Seite zum SearXNG-MCP-Server](https://www.searxncrawl.io/de/searxng-mcp-server/) beschreibt.

Alle drei laufen in einem Python-Prozess auf Ihrem Rechner. Darunter arbeitet [Crawl4AI](https://github.com/unclecode/crawl4ai), eine quelloffene Bibliothek, die Chromium über [Playwright](https://playwright.dev/) steuert. searxNcrawl macht daraus MCP-Tools mit Limits und Standardwerten für Dokumentationen und braucht weder Konto noch API-Key. Crawling funktioniert ohne jeden Suchanbieter: Ein Agent, der die Adresse einer Seite schon kennt, ruft `crawl` direkt auf.

## Warum ein Agent einen Crawler braucht

Viele MCP-Clients bringen ein Fetch-Tool mit, das eine Seite herunterlädt und ihr HTML umwandelt. Bei statischen Seiten klappt das, doch eine Seite, die ihren Inhalt per JavaScript aufbaut, kommt leer oder halb gefüllt an, und das HTML einer typischen Dokumentationsseite besteht großteils aus Navigation, Seitenleisten, Cookie-Bannern und Skripten. Jede dieser Zeilen kostet Kontext und Tokens, ohne eine Angabe zu liefern, die der Agent braucht.

Ein Crawler für Sprachmodelle rendert die Seite zuerst in einem echten Browser, wartet, bis der Inhalt da ist, und wandelt dann um, was ein Leser sieht: Überschriften bleiben Überschriften, Code bleibt Code, Tabellen und Links bleiben erhalten. searxNcrawl entfernt danach Abschnitte, die innerhalb derselben Seite doppelt vorkommen, etwa ein Menü oben und noch einmal unten. Seiten vergleicht es nicht miteinander; jede Seite eines Website-Crawls behält also ihren vollen Text.

Das Ergebnis ist Text, den ein Agent zitieren und auswerten kann. Agenten lesen damit die Dokumentation einer Bibliothek, bevor sie Code dafür schreiben, prüfen ein Changelog oder ein Issue oder tragen die Seiten einer Suche zu einer Antwort mit Quellen zusammen.

## Eine Seite in der Shell crawlen

Die CLI zeigt am schnellsten, was ein Agent bekommt. Dieser Befehl crawlt die Seite zur Such-API in der SearXNG-Dokumentation und schreibt sie in eine Datei:

```
uvx --from searxncrawl crawl https://docs.searxng.org/dev/search_api.html -o page.md
```

In unserem Lauf antwortete die Seite mit 200, der Crawl samt Browserstart dauerte 8,3 Sekunden, und die Datei enthielt 3.221 Zeichen Markdown: die Endpunkte, die Parameter, die curl-Beispiele und den Hinweis, dass ein Format, das in der `settings.yml` fehlt, mit 403 antwortet. Mit `--json` liefert derselbe Befehl das Markdown zusammen mit Statuscode, Titel, den fünf Links der Seite als Referenzen und den Zahlen der Deduplizierung.

Die exakte Deduplizierung entfernte auf dieser Seite 23 von 46 Abschnitten, und searxNcrawl protokollierte eine Warnung, weil dieser Anteil über seiner Schwelle von 45 Prozent liegt. Die Warnung stellt nichts wieder her; sie sagt Ihnen, eine solche Seite selbst anzusehen, wenn es auf jedes Detail ankommt, oder sie mit `--dedup-mode off` erneut zu crawlen.

## Einen Bereich einer Dokumentation crawlen

Für einen ganzen Bereich ergänzen Sie `--site` mit einer Tiefe und einem Seitenlimit. Dieser Lauf beginnt bei der Administratordokumentation von SearXNG und stoppt nach fünf Seiten:

```
uvx --from searxncrawl crawl https://docs.searxng.org/admin/ \
  --site --max-depth 1 --max-pages 5 -o docs/
```

Der Crawl war nach 14,7 Sekunden fertig, mit fünf gelesenen und keiner fehlgeschlagenen Seite, und das Ausgabeverzeichnis enthielt eine Markdown-Datei je Seite. `--max-depth` zählt die Linkschritte ab der Startseite, `--max-pages` begrenzt die Gesamtzahl, und `--include-subdomains` erweitert den Bereich von der Domain der Start-URL auf ihre Subdomains.

Wählen Sie die Limits nach der Frage, nicht nach der Größe der Website. Tiefe 1 mit einer Handvoll Seiten liest eine Übersicht und die Seiten, auf die sie verweist; Tiefe 2 mit dem Standard von 25 Seiten deckt ein typisches Kapitel einer Dokumentation ab. Der Crawl liefert seine Seiten, wenn er fertig ist, und läuft das Gesamt-Timeout von 120 Sekunden vorher ab, liefert er keine Seiten und einen Fehler `crawl_timeout`. Halten Sie Website-Crawls deshalb klein und starten Sie lieber mehrere als einen großen.

## Die Tools über MCP aufrufen

Ein Agent ruft denselben Crawler als MCP-Tools auf. Um genau zu sehen, was er bekommt, haben wir beide Tools mit dem Kommandozeilenmodus des MCP Inspectors aufgerufen, der searxNcrawl wie ein MCP-Client über STDIO startet:

```
npx @modelcontextprotocol/inspector --cli \
  -e SEARXNG_URL=http://localhost:8888 uvx searxncrawl \
  --method tools/call --tool-name crawl \
  --tool-arg 'urls=["https://docs.searxng.org/dev/search_api.html"]'
```

```
# https://docs.searxng.org/dev/search_api.html
_Crawled: 2026-11-04 09:11:13 UTC_

## Search API¶
SearXNG supports querying via a simple HTTP API. ...
```

`crawl` lieferte 3.304 Zeichen ohne Fehler: das Markdown der Seite unter einer Überschrift mit ihrer Adresse und der Uhrzeit des Crawls. Derselbe Aufruf für `crawl_site` las die fünf Seiten des Shell-Laufs und lieferte sie als ein Ergebnis mit 16.637 Zeichen, jede Seite unter ihrer eigenen Adresse und durch eine Linie getrennt:

```
npx @modelcontextprotocol/inspector --cli \
  -e SEARXNG_URL=http://localhost:8888 uvx searxncrawl \
  --method tools/call --tool-name crawl_site \
  --tool-arg url=https://docs.searxng.org/admin/ --tool-arg max_depth=1 --tool-arg max_pages=5
```

- urls: `crawl`: die Liste der zu lesenden Adressen
- url, max_depth, max_pages: `crawl_site`: die Startadresse und die Limits
- output_format: Standardmäßig Markdown, sonst JSON mit Metadaten und Referenzen
- remove_links: Entfernt die Links aus dem Markdown und spart Tokens
- dedup_mode: Standardmäßig exact; off behält jeden Abschnitt
- storage_state: Eine gespeicherte Browsersitzung für Seiten hinter einem Login
- timeout: Sekunden je URL bei `crawl` (Standard 15), für die ganze Website bei `crawl_site` (Standard 120)

## Den Crawler im MCP-Client eintragen

Führen Sie `uvx searxncrawl setup` aus. Der Befehl trägt searxNcrawl bei Claude Code, Codex, Gemini CLI, Cursor, VS Code und Claude Desktop ein, fragt nach Ihrer SearXNG-URL und einem optionalen You.com-API-Key und sichert jede Datei, bevor er sie ändert. Clients, die eine `mcpServers`-Datei lesen, nehmen diesen Block; ohne SearXNG-Adresse funktionieren die Crawler-Tools trotzdem:

```
{
  "mcpServers": {
    "crawler": {
      "command": "uvx",
      "args": ["searxncrawl"],
      "env": { "SEARXNG_URL": "http://your-searxng:8888" }
    }
  }
}
```

Die [Seite zum SearXNG-MCP-Server](https://www.searxncrawl.io/de/searxng-mcp-server/) zeigt die Einrichtung für jeden Client, auch für LM Studio, OpenCode, OpenClaw und Open WebUI, sowie den HTTP-Transport für Clients auf anderen Rechnern. Der erste Crawl lädt einmalig das Chromium von Playwright herunter, etwa 550 MB.

## searxNcrawl und der MCP-Endpunkt von Crawl4AI

Crawl4AI bringt in seinem Docker-Server einen eigenen MCP-Endpunkt mit. Beide nutzen dieselbe Crawling-Bibliothek; der Unterschied liegt darin, wie sie laufen und was sie darum herum ergänzen ([Docker-Anleitung von Crawl4AI](https://github.com/unclecode/crawl4ai/blob/main/deploy/docker/README.md)):

| Funktion | searxNcrawl | Docker-Server von Crawl4AI |
| --- | --- | --- |
| Betrieb | Ein Python-Paket: `uvx searxncrawl` | Ein Docker-Container auf Port 11235 |
| MCP-Transporte | STDIO und Streamable HTTP | SSE und WebSocket |
| Crawling-Tools | `crawl` und `crawl_site` | `md`, `html` und `crawl` |
| Browser-Tools | Nicht enthalten | `screenshot`, `pdf` und `execute_js` |
| Websuche | `search` über SearXNG und/oder You.com | Nicht enthalten |
| Website-Crawls | `crawl_site` mit Tiefen- und Seitenlimit | Nicht unter seinen MCP-Tools aufgeführt |
| Client-Einrichtung | `uvx searxncrawl setup` für sechs Clients | Ein Beispiel mit `claude mcp add` |
| Lizenz | MIT | Apache-2.0 |

Angaben zu Crawl4AI laut seiner Docker-Anleitung, geprüft am 2026-11-04; die Angaben zu searxNcrawl beschreiben Version 0.33.1 und seine [Dokumentation zum Crawling](https://github.com/DasDigitaleMomentum/searxNcrawl/blob/main/docs/features/crawling-workflows.md). Nehmen Sie den Server von Crawl4AI, wenn ein Agent Screenshots, PDFs oder JavaScript auf einer Seite braucht, und searxNcrawl, wenn er Suche und lesbare Seiten aus einem lokalen Server braucht. Beide lassen sich nebeneinander eintragen.

## Wann ein Crawler das falsche Werkzeug ist

- Websites, die automatisierten Zugriff in ihren Nutzungsbedingungen oder der robots.txt untersagen: Prüfen Sie das, bevor Sie sie in größerem Umfang crawlen.
- Websites hinter Bot-Schutz: searxNcrawl crawlt mit einem gewöhnlichen Chromium aus Ihrem Netz und versucht nicht, einen solchen Schutz zu umgehen.
- Strukturierte Daten wie Preise oder Tabellen in einem festen Schema: Ein Crawler liefert Markdown, die Extraktion bleibt ein Schritt für den Agenten oder ein anderes Werkzeug.
- Crawls von Tausenden Seiten: `crawl_site` ist für einen Bereich einer Dokumentation gebaut, nicht für die Indexierung einer Domain.

Crawlen aus dem eigenen Netz hat eine zweite Seite. Es erreicht Intranetseiten und Dokumentationen hinter einem VPN, die kein gehosteter Dienst sieht, doch Websites, die unbekannte Adressen sperren, sperren auch Ihren Rechner. Crawlen Sie zurückhaltend: kleine Limits, wenige Seiten auf einmal und nur die Seiten, die die Frage braucht.

## So haben wir diese Seite getestet

Wir haben jeden Befehl dieser Seite am 2026-11-04 ausgeführt, mit searxNcrawl 0.33.1 und Crawl4AI 0.9.5, die MCP-Aufrufe mit dem MCP Inspector 2.13.0. Die Zahlen oben stammen aus diesen Läufen; sie schwanken mit Netz und Seite. Das Verhalten von Deduplizierung und Website-Crawls folgt der [Dokumentation zum Website-Crawling](https://github.com/DasDigitaleMomentum/searxNcrawl/blob/main/docs/features/site-crawling-bfs.md) von searxNcrawl. Crawl4AI ist ein Projekt seiner Maintainer; searxNcrawl steht in keiner Verbindung dazu.

Wir haben diese Angaben am 2026-11-04 anhand der verlinkten Quellen geprüft. Unsere [Redaktions- und Korrekturrichtlinie](https://www.searxncrawl.io/de/ueber-uns/#editorial) beschreibt, wie wir sie aktuell halten und Fehler korrigieren.

## Häufige Fragen

### Was ist ein Webcrawler als MCP-Server?

Ein MCP-Server, über den ein KI-Agent Webseiten per Tool-Aufruf abruft und ihren Inhalt als Text zurückbekommt. searxNcrawl ist einer: Seine Tools `crawl` und `crawl_site` rendern Seiten in Chromium und liefern Markdown.

### Hat Crawl4AI einen eigenen MCP-Server?

Ja. Der Docker-Server von Crawl4AI stellt MCP über SSE und WebSocket auf Port 11235 bereit, mit Tools wie `md`, `screenshot` und `execute_js`. searxNcrawl nutzt die Bibliothek Crawl4AI stattdessen als Python-Paket und ergänzt Websuche, Website-Crawls mit Limits und einen Setup-Befehl für MCP-Clients.

### Wie viele Seiten liest crawl_site in einem Aufruf?

So viele, wie `max_pages` innerhalb von `max_depth` und dem Gesamt-Timeout zulässt; die Standardwerte sind Tiefe 2, 25 Seiten und 120 Sekunden. In unserem Test las es fünf Seiten der SearXNG-Dokumentation in 14,7 Sekunden.

### Kann ein MCP-Crawler Seiten hinter einem Login lesen?

searxNcrawl kann das: Zeichnen Sie eine Browsersitzung einmal mit `crawl-capture` auf und übergeben Sie die gespeicherte Datei als `storage_state` an `crawl` oder `crawl_site`.

Aktualisiert: 2026-11-04

---

Quelle: <https://www.searxncrawl.io/de/web-crawler-mcp-server/>
