searxNcrawl
Integrates with SearXNG to provide privacy-respecting web search capabilities, allowing users to search the web with configurable language, time range, categories, engines, and safe search.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@searxNcrawlsearch for latest AI trends"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
searxNcrawl
MCP server and CLI toolkit for web search and crawling, built on Crawl4AI and SearXNG.
Published at github.com/DasDigitaleMomentum/searxNcrawl — maintained by DDM – Das Digitale Momentum GmbH & Co KG. Successor to searxng-mcp.
Quick Start
Pick your setup:
Docker Compose
MCP server with Playwright/Chromium, ready in one command. SearXNG required separately for search.
cp .env.example .env # set SEARXNG_URL to your SearXNG instance
docker compose up --build➜ MCP server at http://localhost:9555/mcp
pip (standalone)
CLI tools, Python API, and MCP server. SearXNG required for search.
python -m venv .venv && source .venv/bin/activate
pip install -e .
playwright install chromiumuv (standalone)
Same capabilities as pip.
uv sync
uv run playwright install chromiumWhat you get
Feature | Docker Compose | pip / uv |
MCP Server (STDIO) | — | ✅ |
MCP Server (HTTP) | ✅ | ✅ |
Web Crawl | ✅ | ✅ |
Web Search | ✅¹ | ✅¹ |
CLI Tools | via | ✅ |
Python API | — | ✅ |
CORS (HTTP) | ✅ | ✅ |
¹ Requires a SearXNG instance. ² docker compose exec searxncrawl crawl ...
Related MCP server: webmcp
Features
Crawling
Single page, multi-page, and site crawling (DFS with depth/page limits)
Production-tested extraction config optimized for documentation sites
Configurable timeouts with graceful error handling
Content Quality
Markdown deduplication —
exact(default) removes repeated blocks,offdisables itLink removal — strip all links for cleaner LLM context (
--remove-links)Dedup guardrails — non-destructive metadata signals when removal is unusually aggressive
Web Search
SearXNG metasearch integration (privacy-respecting)
Configurable language, time range, categories, engines, safe search
MCP Server
STDIO transport — for MCP harnesses (Zed, opencode, VS Code, Claude Code, etc.)
HTTP transport — for remote access and browser clients
CORS support — configurable origins for browser-based MCP clients
Noise-free startup with UTF-8 encoding (cross-platform, incl. Windows)
CLI Tools
crawl— crawl pages from the command linesearch— search the web via SearXNGcrawl-capture— session capture for authenticated crawling
Installation
Docker Compose
The Compose stack includes searxNcrawl + Playwright/Chromium. SearXNG must be provided separately.
cp .env.example .env
# Edit .env: set SEARXNG_URL to your SearXNG instance
docker compose up --buildVariable | Default | Description |
|
| MCP server HTTP port |
|
| MCP server log level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
| (FastMCP secure defaults) | JSON list of trusted HTTP Host headers, for example |
The MCP server is available at http://localhost:9555/mcp.
pip
cd searxNcrawl
python -m venv .venv
source .venv/bin/activate
pip install -e .
playwright install chromiumuv
cd searxNcrawl
uv sync
uv run playwright install chromiumSearXNG (search feature)
The search tool and CLI command require a SearXNG instance with JSON output enabled (search.formats in settings.yml). For all setups you need your own instance — self-hosting is recommended over public instances (rate limits).
Environment variables:
Variable | Example / Recommended | Description |
|
| SearXNG instance URL |
| (none) | Optional basic auth user |
| (none) | Optional basic auth pass |
|
| Comma-separated result fields. Unset = all SearXNG fields. Available: title, url, content, publishedDate, engine, score, category, img_src, thumbnail |
Example .env:
SEARXNG_URL=http://localhost:8888
SEARCH_RESULT_FIELDS=title,url,content,publishedDate
LOG_LEVEL=INFOConfig file search order (CLI tools only):
./.env— current directory~/.config/searxncrawl/.env— user config
If no .env exists, .env.example is auto-copied to the user config path.
Usage
MCP Server
Start the server
# STDIO transport (for MCP harnesses)
python -m crawler.mcp_server
# HTTP transport
python -m crawler.mcp_server --transport http --port 8000
# HTTP exposed through a specific public hostname
python -m crawler.mcp_server --transport http --host 0.0.0.0 --allowed-hosts "mcp.example.com"
# HTTP with CORS
python -m crawler.mcp_server --transport http --allowed-hosts "mcp.example.com" --cors-origins "https://app.example.com"
# Docker (HTTP only)
docker compose up --buildMCP client configuration
Python with venv:
{
"mcpServers": {
"crawler": {
"command": "python",
"args": ["-m", "crawler.mcp_server"],
"cwd": "/path/to/searxNcrawl",
"env": { "SEARXNG_URL": "http://your-searxng:8888" }
}
}
}With uv (no manual venv):
{
"mcpServers": {
"crawler": {
"command": "uv",
"args": ["run", "--directory", "/path/to/searxNcrawl", "python", "-m", "crawler.mcp_server"],
"env": { "SEARXNG_URL": "http://your-searxng:8888" }
}
}
}Docker (HTTP endpoint):
{
"mcpServers": {
"crawler": {
"url": "http://localhost:9555/mcp"
}
}
}CORS
FastMCP validates the HTTP Host header independently of the address on which
the server listens. For remote access, allow the exact externally visible Host
header with a comma-separated CLI value:
crawl-mcp --transport http --host 0.0.0.0 --allowed-hosts "mcp.example.com,mcp.internal.example"Alternatively, use FastMCP's environment setting. It uses JSON-list syntax:
FASTMCP_HTTP_ALLOWED_HOSTS='["mcp.example.com"]' crawl-mcp --transport http --host 0.0.0.0Browser Origin validation and CORS response headers are separate from Host
validation. --cors-origins configures both FastMCP's Origin guard and the CORS
middleware using the same normalized, comma-separated values:
crawl-mcp --transport http --cors-origins "http://localhost:3000,https://myapp.com"
crawl-mcp --transport http --cors-origins "*" # all origins — local dev onlyOmitting either allowlist preserves FastMCP's secure defaults (and permits the
upstream environment setting to apply). A value of * for Hosts or Origins is
an explicit opt-in to broad access and should only be used when that security
trade-off is intentional. Without --cors-origins, no CORS headers are sent.
CLI Tools
After pip install -e . (or uv sync), the following commands are available:
# Crawl a page
crawl https://docs.example.com
# Site crawl with depth limit
crawl https://docs.example.com --site --max-depth 2 --max-pages 10 -o docs/
# Clean output (no links)
crawl https://example.com --remove-links
# Search
search "python tutorials"
search "Rezepte" --language de --max-results 5
# Session capture for authenticated crawling
crawl-capture --start-url https://example.com/login \
--completion-url 'https://example.com/dashboard.*' \
--output ./state.jsonSee Session Capture for the full crawl-capture guide.
Python API
from crawler import crawl_page, crawl_page_async, crawl_site, crawl_site_async
# Single page
doc = await crawl_page_async("https://docs.example.com/intro", dedup_mode="exact")
print(doc.markdown)
# Site crawl
result = crawl_site("https://docs.example.com", max_depth=2, max_pages=10)
for doc in result.documents:
print(f"{doc.status}: {doc.final_url}")
# Authenticated crawl
doc = await crawl_page_async(
"https://example.com/private",
auth={"storage_state": "/path/to/state.json"},
)Reference
MCP Tools — full parameter reference for
crawl,crawl_site,searchOutput Formats — Markdown and JSON output structure, including
CrawledDocumentSession Capture — manual login flow and CDP session export
Configuration
Default config is optimized for documentation sites. Customize via overrides:
from crawler import build_markdown_run_config, RunConfigOverrides
config = build_markdown_run_config(
RunConfigOverrides(
delay_before_return_html=1.0,
mean_delay=1.0,
scan_full_page=True,
)
)
doc = await crawl_page_async("https://example.com", config=config)Dependencies
crawl4ai>=0.7.4— crawler engineplaywright>=1.40.0— browser automationfastmcp>=3.4.3— MCP server frameworkhttpx>=0.27.0— HTTP client for SearXNGtldextract>=5.1.2— domain parsing for site crawls
License
MIT — © 2026 DDM – Das Digitale Momentum GmbH & Co KG
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- Alicense-qualityCmaintenanceA privacy-friendly web search MCP server using SearXNG, enabling searches across multiple engines and categories.Last updated1MIT
- Alicense-qualityCmaintenanceMCP server for web search and content extraction using DuckDuckGo or SearXNG, with Playwright-based fetching and LLM-powered data extraction.Last updated140MIT
- Alicense-qualityDmaintenanceMCP server for internet search via direct Google and DuckDuckGo HTML scraping with AI-powered result normalization and optional summarization, requiring no API keys for search.Last updatedMIT
- AlicenseAqualityDmaintenanceA privacy-focused web search and content extraction MCP server. It integrates SearxNG with fallback to Google scraping, featuring relevance ranking, security-aware search, and rate limiting.Last updated3MIT
Related MCP Connectors
MCP server for Google search results via SERP API
Fast, intelligent web search and web crawling. New mcp tool: Exa-code is a context tool for coding
SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DasDigitaleMomentum/searxNcrawl'
If you have feedback or need assistance with the MCP directory API, please join our Discord server