Query Public SearXNG Instances for Data
Search the web via public SearXNG instances - parses HTML into JSON with fallback servers, since most public instances lack JSON mode.
Why it matters
Leverage public SearXNG instances to gather and parse search results into structured JSON. This asset overcomes limitations of JSON-only APIs by processing HTML content, providing fallback server support for comprehensive data retrieval.
Outcomes
What it gets done
Query multiple public SearXNG instances for web data.
Parse HTML search results into structured JSON format.
Filter search results by time range and language.
Merge and deduplicate results from various sources.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-searxng-public | bash Capabilities
Tools your agent gets
Performs search queries to public SearXNG instances with optional time range, language filtering, and result deduplication.
Overview
SearXNG Public MCP Server
An MCP server that queries public SearXNG metasearch instances and parses their HTML output into structured JSON, since most public instances don't expose a native JSON API. Use it when an AI assistant needs privacy-respecting web search via public SearXNG instances instead of a commercial search API.
What it does
mcp-searxng-public queries public SearXNG metasearch instances and parses their HTML results into structured JSON, working around the fact that most public SearXNG instances don't expose the native JSON output format that other SearXNG MCP servers assume is available. It reads from up to three configured public instances - one as primary and the others as fallback - for resilience. The default configuration ships with a starter list of a dozen public instance URLs (covering hosts like metacat.online, ooglester.com, and several search.* community instances) already filled in, so it works out of the box before any manual instance curation.
When to use - and when NOT to
Use it when you want an AI assistant to search the web through privacy-respecting public SearXNG instances instead of a commercial search API. Set time_range (day/month/year, per the SearXNG search API spec) to narrow results by recency, language to target a specific locale, and detailed=true for a more thorough search that queries up to 3 servers across 3 pages each, merging and deduplicating results. If neither language nor the DEFAULT_LANGUAGE environment variable is set, no language parameter is sent to SearXNG at all - the search runs unfiltered by locale. Do not rely on a single hardcoded instance URL long-term - public SearXNG instances go up and down, so the project includes a report task to check which configured instances are currently accessible.
Capabilities
search: query public SearXNG instances and return parsed results as an array of{url, summary}objects.query(required): the search query.time_range(optional):day,month, oryear.language(optional): language code (e.g.en,es,fr); defaults toDEFAULT_LANGUAGEenv var if unset, or no language filter if neither is set.detailed(optional): iftrue, queries up to 3 servers across pages 1-3 each, then merges and deduplicates.
How to install
npm install mcp-searxng-public
Configure Cursor or a Cursor-compatible client:
{
"SearXNGScraper": {
"command": "npx",
"args": ["mcp-searxng-public"],
"capabilities": { "tool-calls": true },
"env": {
"SEARXNG_BASE_URL": "https://metacat.online;https://nyc1.sx.ggtyler.dev;https://ooglester.com;https://search.080609.xyz;https://search.canine.tools;https://search.catboy.house;https://search.citw.lgbt;https://search.einfachzocken.eu;https://search.federicociro.com;https://search.hbubli.cc;https://search.im-in.space;https://search.indst.eu",
"DEFAULT_LANGUAGE": "en"
}
}
}
SEARXNG_BASE_URL accepts multiple semicolon-separated instance URLs (first is primary, rest are fallbacks) - adjust these to your preferred instances, and run the project's report task to find currently accessible public instances. Also available as a one-click install for LM Studio.
Who it's for
Developers and privacy-conscious users who want an AI assistant to search the web via public, non-tracking SearXNG metasearch instances instead of a commercial search API.
Source README
mcp-searxng-public
An MCP server that queries public SearXNG instances, parsing HTML contents into a JSON result
Rationale
All the MCP servers for SearXNG that I've seen use "json" as the output format. While that is certainly a faster way to code a SearXNG MCP server, it will make it fail on virtually all public servers since they don't expose the JSON format.
This server will read from up to three public SearXNG servers (using one as main and the others as fallback) and will parse the results into JSON.
Installation
Install via npm install mcp-searxng-public.
If the server is installed, the run configuration is (for Cursor or Cursor-compatible clients) as follows:
{
"SearXNGScraper": {
"command": "npx",
"args": ["mcp-searxng-public"],
"capabilities": {
"tool-calls": true
},
"env": {
"SEARXNG_BASE_URL": "https://metacat.online;https://nyc1.sx.ggtyler.dev;https://ooglester.com;https://search.080609.xyz;https://search.canine.tools;https://search.catboy.house;https://search.citw.lgbt;https://search.einfachzocken.eu;https://search.federicociro.com;https://search.hbubli.cc;https://search.im-in.space;https://search.indst.eu",
"DEFAULT_LANGUAGE": "en"
}
}
}
Note: You may need to adjust the env variables, particularly SEARXNG_BASE_URL, to point to your preferred SearXNG instances. The DEFAULT_LANGUAGE can also be set as needed. You can run the report task to get a report on good (accessible) SearXNG instances which you can put in the URLs line.
Usage
The server exposes one endpoint: search. The endpoint takes four arguments:
query- the search querytime_range(optional) - which takes a time range parameter according to the https://docs.searxng.org/dev/search_api.html spec (day,monthoryear).language(optional) - the language code for the search (e.g.,en,es,fr). If not provided, it defaults to the value of theDEFAULT_LANGUAGEenvironment variable. If neither is set, no language parameter is sent to SearXNG.detailed(optional) - if set to "true", performs a more thorough search by querying up to 3 servers and fetching multiple pages of results (pages 1, 2, and 3) from each server, then merging and deduplicating the results.
Returned is an array of objects:
[
{
"url": "https://github.com/searxng/searxng",
"summary": "You can start SearXNG using make run in the terminal or by pressing Ctrl+Shift+B"
},
{
"url": "https://searx.bndkt.io/",
"summary": "Powered by searxng - 2025.3.22+5986629c6 - a privacy-respecting, open metasearch engine Source code | Issue tracker | Engine stats | Public instances | Contact instance maintainer"
},
{
"url": "https://docs.searxng.org/"
"summary": "SearXNG is a free internet metasearch engine which aggregates results from up to 243 search services. Users are neither tracked nor profiled. Additionally, SearXNG can be used over Tor …"
}
{
"url": "https://en.wikipedia.org/wiki/SearXNG",
"summary": "SearXNG is federated, and as such is hosted by several instances, public and private. Private instances are hosted on a local network, or run on the user's desktop computer itself, and are …"
}
]
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.