MCP server for private web search via self-hosted SearXNG with local reranking, full-page content fetching via Firecrawl, and optional Ollama-powered query expansion and summaries.
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find.
Install from
M8ven verifies MCPs across every public registry — install directly from whichever one you prefer.
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
Undici: Malicious WebSocket 64-bit length overflows parser and crashes the client
Undici has Unhandled Exception in WebSocket Client Due to Invalid server_max_window_bits Validation
Undici has Unbounded Memory Consumption in WebSocket permessage-deflate Decompression
Undici has an HTTP Request/Response Smuggling issue
Undici has CRLF Injection in undici via `upgrade` option
process.env. You'll be asked to provide them before it can run.ADBLOCK_DISABLE— _unset_ Set to true to skip filter loading entirely.ADBLOCK_FILTERS_URL— EasyList + EasyPrivacy Comma-separated list of filter list URLs.ADBLOCK_PROXY_URL— │ ├→ Crawl4AI ($CRAWL4AI_URL) → page markdown (tier 2, optional; via $ if set)ADBLOCK_REFRESH_HOURS— 168 Cadence at which the blocker rebuilds from the configured URLs.CACHE_TTL_SECONDS— 3600 Search result cache TTL in secondsCACHE_URL— SEARXNG_URL=http://localhost:8081 =redis://localhost:6381 npx @tadmstr/searxng-mcpCRAWL4AI_API_TOKEN— If your instance requires API token authentication, set .CRAWL4AI_URL— │ ├→ Crawl4AI ($) → page markdown (tier 2, optional; via $ADBLOCK_PROXY_URL if set)CRAWL_BFS_ENABLED— │ └→ BFS crawl (opt-in) → page manifest (phase 3, $)CRAWL_BFS_MAX_DEPTH— 3 Maximum link-hop depth for BFS crawlCRAWL_MANIFEST_TTL_SECONDS— 21600 Crawl manifest and page content cache TTL in seconds (6 hours)CRAWL_MAX_PAGES_DEFAULT— 20 Default max pages returned by crawl_site when no max_pages is passedEXPAND_QUERIES— expand — when true, rewrites the query via Ollama (OLLAMA_EXPAND_MODEL) before searching to improve recall. Requires OLLAMA_URL. Defaults to the env var value.FETCH_CACHE_TTL_SECONDS— 86400 Fetched page cache TTL in secondsFIRECRAWL_API_KEY— placeholder-local Firecrawl API key (if required)FIRECRAWL_CRAWL_MAX_WAIT_MS— 1. Firecrawl crawl — sends a crawl job to Firecrawl (/crawl endpoint), polls until complete, and returns the full page list. Controlled by FIRECRAWL_CRAWL_POLL_INTERVAL_MS and .FIRECRAWL_CRAWL_POLL_INTERVAL_MS— 1. Firecrawl crawl — sends a crawl job to Firecrawl (/crawl endpoint), polls until complete, and returns the full page list. Controlled by and FIRECRAWL_CRAWL_MAX_WAIT_MS.FIRECRAWL_URL— │ ├→ Firecrawl ($) → page markdown (tier 1)GITHUB_TOKEN— (unset) GitHub personal access token — increases rate limit from 60 to 5,000 req/hourHISTER_TOKEN— Set HISTER_URL to your Hister instance base URL and if bearer token auth is required.HISTER_URL— │ ├→ Hister ($) → browsing-history index (login-walled/JS-heavy fast path)KIWIX_URL— │ ├→ Kiwix ($) → ZIM content (Wikipedia/SO/Arch Wiki, fast path)LOG_BLOCKEDNATS_CREDSNATS_SUBJECT_PREFIXNATS_URL— NATS events — set (e.g. nats://localhost:4222) and the server publishes a structured event on every search, fetch, cache hit/miss, robots skip, and error. Subjects:OLLAMA_API_KEY— (unset) Bearer token for authenticated Ollama proxies — adds Authorization: Bearer <key> header when setOLLAMA_EXPAND_MODEL— expand — when true, rewrites the query via Ollama () before searching to improve recall. Requires OLLAMA_URL. Defaults to the EXPAND_QUERIES env var value.OLLAMA_SUMMARIZE_MODEL— └── summarize (opt.) → Ollama ($OLLAMA_URL) → synthesized summary ($)OLLAMA_URL— expand — when true, rewrites the query via Ollama (OLLAMA_EXPAND_MODEL) before searching to improve recall. Requires . Defaults to the EXPAND_QUERIES env var value.OTEL_EXPORTER_OTLP_ENDPOINT— OpenTelemetry (traces + metrics) — set to your collector's HTTP endpoint and the server emits:OTEL_SERVICE_NAME— Standard OTEL env vars apply ( defaults to searxng-mcp).PORTREDIS_URLRERANKER_URL— ├── rerank ───────────→ Reranker ($) → ranked resultsRERANK_RECENCY_WEIGHT— Environment variables are validated at startup — warns on NaN, negative, or >1.0 values. Numeric tool parameters use z.coerce.number() with range constraints.SEARXNG_MCP_HOST— HTTP — set SEARXNG_MCP_TRANSPORT=http to run as a shared HTTP/SSE server suitable for multi-client deployments or Docker-based setups. Binds to :SEARXNG_MCP_PORT (default 127.0.0.1:3001):SEARXNG_MCP_PORT— HTTP — set SEARXNG_MCP_TRANSPORT=http to run as a shared HTTP/SSE server suitable for multi-client deployments or Docker-based setups. Binds to SEARXNG_MCP_HOST: (default 127.0.0.1:3001):SEARXNG_MCP_TRANSPORT— HTTP — set =http to run as a shared HTTP/SSE server suitable for multi-client deployments or Docker-based setups. Binds to SEARXNG_MCP_HOST:SEARXNG_MCP_PORT (default 127.0.0.1:3001):SEARXNG_URL— ├── search ───────────→ SearXNG ($) → raw resultsVALKEY_URLWAYBACK_ENABLED— │ └→ Wayback Machine (opt-in) → archived page markdown (tier 4, $)_ADBLOCK_LOADED[](https://m8ven.ai/mcp/tadmstr-searxng-mcp-1wt2y0)