![]() |
VOOZH | about |
MCP Server for SearXNG
100K+
Private web search for AI assistants โ connect any SearXNG instance to Claude, Cursor, and more.
๐ GitHub Stars
๐ npm version
๐ npm downloads
๐ Docker Pulls
๐ License: MIT
๐ OpenSSF Scorecard
๐ OpenSSF Best Practices
๐ mcp-searxng MCP server
๐ GitHub MCP Registry
An MCP serverโ that integrates the SearXNGโ API, giving AI assistants web search capabilities.
โจ Featured in the GitHub MCP Registryโ .
Add to your MCP client configuration (e.g. claude_desktop_config.json):
{
"mcpServers": {
"searxng": {
"command": "npx",
"args": ["-y", "mcp-searxng"],
"env": {
"SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL"
}
}
}
}
Replace YOUR_SEARXNG_INSTANCE_URL with the URL of your SearXNG instance (e.g. https://searxng.example.com).
response_format./autocompleter endpoint./config.min_score.| Brave MCP | Exa MCP | Firecrawl MCP | mcp-searxng | |
|---|---|---|---|---|
| Web Search | โ | โ | โ | โ |
| Read URL | โ | โ | โ | โ |
| Pagination | โ | โ | โ | โ |
| Self-hosted | โ | โ | Partial | โ |
| Privacy | โ | โ | โ | โ |
| Free / No API key | โ | โ | โ | โ |
mcp-searxng is a standalone MCP server โ a separate Node.js process that your AI assistant connects to for web search. It queries any SearXNG instance via its HTTP JSON API.
Not a SearXNG plugin: This project cannot be installed as a native SearXNG plugin. Point it at any existing SearXNG instance by setting
SEARXNG_URL.
AI Assistant (e.g. Claude)
โ MCP protocol
โผ
mcp-searxng (this project โ Node.js process)
โ HTTP JSON API (SEARXNG_URL)
โผ
SearXNG instance
searxng_web_search
query (string): The search query. This string is passed to external search services.pageno (number, optional): Search page number, starts at 1 (default 1)time_range (string, optional): Filter results by time range - one of: "day", "week", "month", "year" (default: none)language (string, optional): Language code for results (e.g., "en", "fr", "de") or "all" (default: "all")safesearch (number, optional): Safe search filter level (0: None, 1: Moderate, 2: Strict) (default: instance setting)min_score (number, optional): Minimum relevance score from 0.0 to 1.0. Results below this score are filtered out.num_results (number, optional): Maximum number of results to return, from 1 to 20. SEARXNG_MAX_RESULTS applies as an operator ceiling.categories (string, optional): Comma-separated SearXNG categories (e.g. "news", "it,science"). When live /config is available, values are trimmed and normalized case-insensitively to the instance's canonical category names; unknown values are rejected with available categories listed. If /config is unavailable, values are forwarded as-is with a warning. Default: SearXNG instance default.engines (string, optional): Comma-separated SearXNG engine names (e.g. "google,bing,ddg", "semantic scholar"). When live /config is available, values are trimmed and normalized case-insensitively to canonical engine names, including engines disabled by default; unknown values are rejected with available engines listed. If /config is unavailable, values are forwarded as-is with a warning.response_format (string, optional): Response format, either "text" for formatted agent-readable output or "json" for raw SearXNG JSON with filtered/sliced results. (default: "text")searxng_search_suggestions
query (string): Partial or complete query to autocomplete.language (string, optional): Language code for suggestions (e.g., "en", "fr", "de") or "all" (default: "all")searxng_instance_info
includeEngines (boolean, optional): Include enabled engine names in the response. (default: false)includeDisabled (boolean, optional): Include disabled engine names when includeEngines is true. (default: false)category (string, optional): Filter categories and engines to a single category name.refresh (boolean, optional): Bypass the process cache and fetch fresh /config data. (default: false)web_url_read
url (string): The URL to fetch and processstartChar (number, optional): Starting character position for content extraction (default: 0)maxLength (number, optional): Maximum number of characters to returnsection (string, optional): Extract content under a specific heading (searches for heading text)paragraphRange (string, optional): Return specific paragraph ranges (e.g., '1-5', '3', '10-')readHeadings (boolean, optional): Return only a list of headings instead of full contentSet SEARXNG_URL to your SearXNG instance URL. All other variables are optional.
Full environment variable reference: CONFIGURATION.mdโ
Your SearXNG instance likely has JSON format disabled. Edit settings.yml (usually /etc/searxng/settings.yml):
search:
formats:
- html
- json
Restart SearXNG (docker restart searxng) then verify:
curl 'http://localhost:8080/search?q=test&format=json'
You should receive a JSON response. If not, confirm the file is correctly mounted and YAML indentation is valid.
See also: SearXNG settings docsโ ยท discussionโ
If you must use a public instance you don't control and it rejects format=json (the 403 above), set the opt-in flag instead of editing the server:
"SEARXNG_HTML_FALLBACK": "true"
A search that gets a 403/404 or a non-JSON response is then retried automatically without format=json and parsed from the regular HTML results page.
sourceFormat: "html" in JSON mode, and text mode adds the line "Note: Results parsed from SearXNG HTML fallback; metadata is limited." Relevance scores and engine names are not available from HTML.429), auth (401), or 5xx โ the original error is surfaced unchanged. The fallback only triggers on 403/404/non-JSON, never on auth or network errors.Enabling JSON on an instance you control (above) remains the recommended setup โ the fallback is a compatibility aid, not a replacement.
MIT โ see LICENSEโ for details.
Content type
Image
Digest
sha256:dbe29a243โฆ
Size
68.3 MB
Last updated
about 19 hours ago
Requires Docker Desktop 4.37.1 or later.