$git clone https://github.com/ihor-sokoliuk/mcp-searxngPrivate web search for AI assistants — connect any SearXNG instance to Claude, Cursor, and more.
| 1 | <div align="center"> |
| 2 | |
| 3 | # 🔍 SearXNG MCP Server |
| 4 | |
| 5 | **Private web search for AI assistants — connect any SearXNG instance to Claude, Cursor, and more.** |
| 6 | |
| 7 | [](https://github.com/ihor-sokoliuk/mcp-searxng/stargazers) |
| 8 | [](https://www.npmjs.com/package/mcp-searxng) |
| 9 | [](https://www.npmjs.com/package/mcp-searxng) |
| 10 | [](https://hub.docker.com/r/isokoliuk/mcp-searxng) |
| 11 | [](LICENSE) |
| 12 | [](https://scorecard.dev/viewer/?uri=github.com/ihor-sokoliuk/mcp-searxng) |
| 13 | [](https://www.bestpractices.dev/projects/13143) |
| 14 | [](https://glama.ai/mcp/servers/ihor-sokoliuk/mcp-searxng) |
| 15 | [](https://github.com/mcp/ihor-sokoliuk/mcp-searxng) |
| 16 | |
| 17 | An [MCP server](https://modelcontextprotocol.io/introduction) that integrates the [SearXNG](https://docs.searxng.org) API, giving AI assistants web search capabilities. |
| 18 | |
| 19 | ✨ Featured in the [GitHub MCP Registry](https://github.com/mcp/ihor-sokoliuk/mcp-searxng). |
| 20 | |
| 21 | </div> |
| 22 | |
| 23 | ## Quick Start |
| 24 | |
| 25 | Add to your MCP client configuration (e.g. `claude_desktop_config.json`): |
| 26 | |
| 27 | ```json |
| 28 | { |
| 29 | "mcpServers": { |
| 30 | "searxng": { |
| 31 | "command": "npx", |
| 32 | "args": ["-y", "mcp-searxng"], |
| 33 | "env": { |
| 34 | "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL" |
| 35 | } |
| 36 | } |
| 37 | } |
| 38 | } |
| 39 | ``` |
| 40 | |
| 41 | Replace `YOUR_SEARXNG_INSTANCE_URL` with the URL of your SearXNG instance (e.g. `https://searxng.example.com`). You can also provide interchangeable replicas as a semicolon-separated list, e.g. `https://one.example.com;https://two.example.com`. |
| 42 | |
| 43 | ## Features |
| 44 | |
| 45 | - **Web Search**: General, news, and article queries with pagination, time-range/language/safe-search filters, relevance filtering (`min_score`), and formatted-text or raw-JSON output (`response_format`). |
| 46 | - **Instance Failover & Fan-out**: Configure interchangeable SearXNG replicas in `SEARXNG_URL`; searches fail over in order by default, or query all healthy replicas in parallel and merge results with `SEARXNG_FANOUT`. |
| 47 | - **Direct Answers & Metadata**: Text results surface SearXNG answers, corrections, suggestions, and infoboxes before the result list. |
| 48 | - **Search Suggestions**: Query autocomplete via SearXNG's `/autocompleter` endpoint. |
| 49 | - **Instance Capability Discovery**: Inspect configured categories, engines, defaults, locales, and plugins from `/config`. |
| 50 | - **URL Content Reading**: Content-type-aware Markdown conversion with pagination, section filtering, paragraph ranges, and heading extraction. |
| 51 | - **Intelligent Caching**: Both search results and URL content are cached in memory with configurable TTL and LRU eviction, reducing redundant requests. |
| 52 | - **SSRF Protection**: `web_url_read` blocks private/internal URLs and redirects by default in all transport modes. |
| 53 | - **HTTP Transport**: Optional Streamable HTTP mode with opt-in hardening — bearer-token auth, CORS allowlist, and rate limiting. |
| 54 | - **HTML Fallback**: Optionally parse results from the HTML page for public instances that reject `format=json`. |
| 55 | - **Lite Tools Mode**: Minimal tool schemas for local models with small context windows. |
| 56 | - **Proxy Support**: Global or per-tool HTTP/HTTPS proxies for search and URL-reader traffic. |
| 57 | |
| 58 | ## Why mcp-searxng? |
| 59 | |
| 60 | | | Brave MCP | Exa MCP | Firecrawl MCP | **mcp-sear |