Repository navigation
Releases
Releases · DasDigitaleMomentum/searxNcrawl
v0.33.2
v0.33.1
- Fix Chromium zombie accumulation in the native and optional Arcade Docker images with a Tini entrypoint.
- Verify repeated MCP browser calls in both images in CI, including parallel crawl, site crawl and search with page content.
- Add the optional Arcade adapter and refresh native installation documentation.
- Upgrade: rebuild and recreate repository containers. Custom containers need
--init, Composeinit: trueor Podman QuadletRunInit=true; upgrading the Python package alone does not add init. - Keep the image entrypoint when overriding commands;
--entrypointbypasses Tini.
Related issue: #72.
v0.33.0
- Add validated SearXNG extra headers for CLI and MCP, including absolute/
~/secret-file references. Invalid configuration disables only SearXNG; credential values stay out of diagnostics. - Add search with page content in one call (
include_content/--include-content). Nest crawl Markdown headings under page/result headings; JSON Markdown is unchanged. - Refresh README and usage/module/registry documentation; expose basic auth, extra headers and result fields in MCPB configuration.
- Refresh locked dependencies and pinned publishing actions.
Validation:
- 42 live CLI/MCP STDIO/HTTP cases with real SearXNG and You.com, protected-header gateway and public-page browser crawls.
- 259 required-browser tests, Ruff, wheel/sdist metadata and registry/MCPB schema checks pass.
- Original contribution from KuehhornIT's #48 is retained in the attribution; replacement #67 is merged.
Known limitation:
- The Python 3.10 lock path still selects dnspython 2.8.0; Dependabot cannot apply 2.9.0 because it requires Python >=3.11. Python support is unchanged.
Distribution status:
- Published on PyPI and the official MCP Registry as 0.33.0. Native and Smithery MCPB bundles are attached below.
- Smithery publishing currently returns HTTP 403, "Updating servers has been removed". Smithery announced API, account and CLI shutdown for 31 October 2026. Use direct PyPI installation or the native MCPB bundle; the legacy Smithery variant remains attached for compatibility. The curated Smithery listing has not been updated.
v0.32.0
Upgrade note: existing SearXNG-only setups must set SEARXNG_URL explicitly; there is no http://localhost:8888 default any more. SEARXNG_URL must not embed credentials (https://user:pw@host is rejected); use SEARXNG_USERNAME/SEARXNG_PASSWORD instead.
Added
- Multi-provider search: CLI
searchand MCPsearchquery every configured provider (SearXNG, You.com) in parallel and return one merged list (conservative URL dedup, round-robin, results found by several providers first). A partial failure still returns the other providers' results. - You.com provider, enabled by
YDC_API_KEY(keyed API only; queries go to You.com, US). Requests usePOST /v1/searchwith a JSON body.safesearchmaps tooff/moderate/strict;languagemaps to You.com's supported codes (en-us→EN; unsupported codes such aszhsearch without a language filter instead of failing with HTTP 422); pages beyond 10 return no You.com results;contentfalls back to the first snippet when the description is empty. HTTP 403 is reported as a missing key scope, separate from 401. - Provider selection per call: MCP
providersparameter, CLI--providers searxng,youcom. providersfield on every result; the CLI markdown output shows it as a**Sources:**line.searxncrawl setupregisters the MCP server with the installed coding agents (Claude Code, Codex, Gemini CLI, Cursor, VS Code, Claude Desktop) in one step. It shows each change, asks before applying it (--yesskips the prompt), backs up every file it touches, updates instead of duplicating on re-runs, andsetup --removeunregisters again.searxncrawl setupcan also store a You.com API key (--ydc-api-key, or a hidden prompt suggesting$YDC_API_KEY). The key is masked as<hidden>in everythingsetupprints, andsetupwarns when no search provider is configured.server.jsonfor the official MCP Registry (io.github.DasDigitaleMomentum/searxncrawl). The release workflow now fails if its versions differ frompyproject.toml. Seedocs/registry.md.
Changed
- Breaking: no
SEARXNG_URLdefault any more (code,docker-compose.yml,.env.example); SearXNG is active only whenSEARXNG_URLis set. Setups that relied onhttp://localhost:8888must set it explicitly. - Breaking:
SEARXNG_URLmust be an http(s) URL without embedded credentials (https://user:pw@hostand scheme-less values are rejected with a warning); useSEARXNG_USERNAME/SEARXNG_PASSWORDinstead, both or neither. - Breaking: unset
SEARCH_RESULT_FIELDSnow returns the normalized fieldstitle,url,content,publishedDate,providers; the raw SearXNG payload passthrough ends, so fields such asengine,score,suggestions,answersare gone. Addprovidersto an existingSEARCH_RESULT_FIELDSto show attribution. - Breaking: the CLI "Related searches" line (from SearXNG
suggestions) is removed. - Search errors are short per-provider reasons without secrets, URLs or response bodies (a SearXNG non-401 status no longer includes the response body).
- The Docker image is based on
python:3.14-sliminstead ofpython:3.11-slim. - README rewritten around a demo, one-line agent setup and a comparison; installation, MCP server, CLI and Python API reference moved to
docs/usage/. - HTTP 429 from a search provider is retried once when
Retry-Afteris at most 5 s and attempts remain (MCPmax_retries; the CLI makes a single attempt and never retries). Otherwise the reason ends withretry after Nsortry again later.
Fixed
- Pages could be captured mid-reload: the default config ran
window.location.reload()injs_code, which Crawl4AI executes afterwait_forwithout waiting for the new document. On docs.python.org this returned only<head>and failed as "Blocked by anti-bot protection". The reload now runs as a Playwrightafter_gotohook (page.reload(wait_until="load")), sowait_forand capture see the reloaded page. Custom configs andjs_codeoverrides keep their previous behaviour (no reload). - Content rendered into shadow DOM (e.g. MDN code examples) was missing from the markdown;
flatten_shadow_domis now enabled. Raises the minimum Crawl4AI version to 0.8.5, the first release with this option. - Code samples lost
<and</in the markdown:PruningContentFilterdropped Prism/highlight.js/CodeMirror token spans holding only those characters, so<details>becamedetails.<pre>,<code>and CodeMirror's.cm-contentare now exempt from pruning. Raises the minimum Crawl4AI version to 0.9.1, the first release withpreserve_tags/preserve_classes. - Every crawl failed with
CrawlerRunConfig.__init__() got an unexpected keyword argument 'flatten_shadow_dom'when the code ran against Crawl4AI < 0.8.5 (e.g. a stale virtualenv).flatten_shadow_domis now passed only if the installed Crawl4AI supports it; otherwise a warning is logged and shadow DOM content is skipped. - Shadow DOM flattening corrupted pages whose text contains
<,>or&: Crawl4AI'sflatten_shadow_dom.jswrites text nodes back unescaped, so text such as<details>was re-parsed as markup. Closing tags vanished from HTML code samples, and the broken tree defeatedtarget_elements, pulling site navigation into the markdown (MDN: 38 kB with nav instead of 22 kB of article). The script is now patched at import to escape text nodes.
Security
- nltk is no longer installed from
uv.lockor in the Docker image. It has an unpatched advisory (GHSA-8mgp-746c-j5xp, all versions up to 3.10.3) and comes in only through crawl4ai, which imports it in chunking and legacy helpers that searxNcrawl does not use.pip/uvxinstalls from PyPI still pull it in through crawl4ai's metadata; the affected functions are not called there either.
Install: uvx searxncrawl (MCP server) · uvx searxncrawl setup (register with your coding agents) · pip install searxncrawl
v0.31.0
Added
- Zero-setup runs with
uvx:uvx --from git+https://github.com/DasDigitaleMomentum/searxNcrawl searxncrawlstarts the MCP server without a clone or virtualenv. (refs #14) - Playwright's Chromium is installed automatically once per process before the first browser launch if it is missing (
python -m playwright install chromium, idempotent; output goes to stderr so MCP stdio stays clean). Disable withPLAYWRIGHT_AUTO_INSTALL=false. (refs #14) searxncrawlconsole script as an alias forcrawl-mcp, so the package name doubles as the MCP server command.
Fixed
- Single-page crawls no longer time out on pages without a
<main>element (e.g. example.com). Thewait_forcondition now accepts anyMAIN_SELECTORSarea (article,[role='main'],.markdown-body, …) with more than 50 characters and falls back to the page body after a 3 s grace period once the document has loaded, instead of waiting for the 30 s page timeout.
Install: uvx searxncrawl (MCP server) · pip install searxncrawl
v0.30.0 — HTTP Host & Origin Configuration
What's new
- Added
--allowed-hostsfor trusted HTTP Host-header configuration in remote, Docker, and reverse-proxy deployments. - Documented FastMCP's existing
FASTMCP_HTTP_ALLOWED_HOSTSJSON-list environment setting. - Wired
--cors-originsinto both FastMCP's request-time Origin guard and Starlette CORS middleware. - Preserved FastMCP's secure Host/Origin defaults and kept wildcard access as an explicit opt-in.
- Raised the FastMCP minimum version to 3.4.3.
- Added real ASGI guard coverage plus CLI/runtime and STDIO-isolation tests.
Verification
- 99 tests passed
- Package metadata verified as
0.30.0
Issue closed
- #25 — HTTP transport unreachable from non-localhost clients
v0.25.0 — SEARCH_RESULT_FIELDS & LOG_LEVEL
What's new
- SEARCH_RESULT_FIELDS env var: control which fields appear per search result in MCP + CLI. Default recommended:
title,url,content,publishedDate. Unset = all SearXNG fields (backward-compatible). - LOG_LEVEL env var: control MCP server log verbosity (DEBUG, INFO, WARNING, ERROR, CRITICAL). Controls both root logger and uvicorn/FastMCP.
- Version logging at MCP server startup
- MCP crawl() timeout reduced from 30s to 15s for faster feedback
- README: corrected Docker Compose SearXNG docs, added env var examples
Issues closed
v0.24.2
What's Changed
Changed
- README restructured — slimmed from 731 to 291 lines with Quick Start, installation feature matrix, and compact sections.
- Reference docs extracted to
docs/usage/:mcp-tools.md— full tool parameter referenceoutput-formats.md— Markdown/JSON output + CrawledDocumentsession-capture.md— crawl-capture guide
- Docker Compose promoted to first-class installation path with SearXNG included.
v0.24.1
v0.24.0
What's Changed
Fixed
- MCP stdio protocol noise — Crawl4AI verbose defaults disabled in
build_markdown_run_config()andbuild_discovery_run_config()to prevent protocol corruption from noisy init output. - UTF-8 stdio encoding — Forced UTF-8 with replacement error handling on stdio transport for Windows and non-UTF-8 locale compatibility.