
SearXNG
io.github.danchevPublished by GitHub account danchevv0.1.2Updated Nov 10, 2026
Privacy-friendly web search through a configurable SearXNG instance.
Overview
Lets an assistant run privacy-friendly web searches through a SearXNG metasearch instance, with filters for engines, categories, language, time range and…
- What you can do
- Exposes a single web_search tool that queries a SearXNG metasearch instance and returns results. The tool accepts a required query plus optional categories, engines, language, max_results (1-100) and time_range filters. Failures such as an unreachable instance, rate limiting or malformed responses are returned as error results rather than empty lists. Up to eight searches run concurrently per process.
- When to use it
- Useful when an assistant needs general web search without relying on a commercial search API, and when you want control over which engines, categories and languages are queried. A good fit if you already run or trust a SearXNG instance, or want search results kept out of a hosted search service.
- Requirements
- Runs locally over stdio, launched with uvx (Python) or Docker, or served over Streamable HTTP. Needs network access to a SearXNG instance; the default is and can be changed with --instance-url. No accounts, API keys or environment variables are declared. Optional flags include --timeout, --log-level, --transport, --host, --port and repeatable --header.
Installation
In SourceWeft
- Open SearXNG in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
[PyPI Version] [License] [PyPI Downloads]
SearXNG MCP Server
A Model Context Protocol (MCP) server that equips AI agents with privacy-friendly web search capabilities using the SearXNG metasearch engine.
Features
This server provides the following main features:
- Web search via multiple search engines
- Supports various search categories (general, images, news, etc.)
- Customizable search engine selection
- Language filtering
- Time range filtering
- Control over the number of search results
Available Tools
web_search- Perform web search using SearXNG- Required parameters:
query(string): The search query
- Optional parameters:
categories(array): Search categories, e.g. ['general', 'images', 'news']engines(array): Search engines, e.g. ['google', 'bing', 'duckduckgo']language(string): Language code for search, default is "en"max_results(integer): Maximum number of results, default is 10 (1-100)time_range(string): Time range filter ('day', 'week', 'month', 'year')
- Required parameters:
If a search cannot be completed (the instance is unreachable, rate-limits the request, or returns a malformed response), the tool returns an error result describing the failure rather than an empty result list.
Search Limits
Each server process admits up to eight concurrent searches. Further calls return
an error immediately and can be retried later. --timeout bounds the complete
network operation, including streaming the response; cancellation closes the
active request. Responses are limited to 2 MiB before JSON parsing.
The configured instance must serve /search directly: redirects are rejected.
The client requests Accept-Encoding: identity and rejects compressed responses
to prevent unbounded decompression. Result fields are also truncated to their
existing limits. Missing or non-list results and upstream error objects are
reported as failures, while a valid empty list remains a successful search.
Application logs omit search queries and upstream exception text. The CLI keeps
HTTP dependency logging at WARNING even when --log-level=DEBUG is selected.
Privacy Policy
This software does not operate a hosted search service and does not send search queries to its maintainer. It runs on the user's device or infrastructure and sends each query, selected engines, categories, language, time range, and safe search setting directly to the configured SearXNG instance. Search results are returned to the connected MCP client.
The software does not persist queries or results, use analytics or advertising trackers, create user profiles, or share data with the maintainer. Operational logs record result counts and errors but omit query text and upstream exception details. In-memory request and result data is discarded after the request.
The selected SearXNG instance and the search engines it contacts are independent
third parties. Their collection, use, sharing, and retention practices are
governed by their own privacy policies. Before sending sensitive queries, users
should review the selected instance's privacy notice or operate an instance they
trust. The default CLI instance is https://searx.party; its policy is at
https://searx.party/info/en/privacy.
Privacy questions and requests can be filed at https://github.com/danchev/searXNG/issues.
Command Line Options
Docker / Kubernetes
You can run the server easily using the official container image published to the GitHub Container Registry:
Transports
By default the server speaks stdio, which is what local MCP clients
(Claude Desktop, IDE integrations, uvx) launch it with.
For remote access, --transport http serves the Streamable HTTP
transport at /mcp:
The legacy SSE transport is intentionally not implemented. It was superseded by Streamable HTTP in the 2025-03-26 MCP protocol revision and should not be used for new deployments.
Security: the server performs no authentication, so it binds to
127.0.0.1 by default. Only pass --host 0.0.0.0 on a trusted network,
or put an authenticating reverse proxy in front of it.
Binding to a non-loopback host also disables the MCP SDK's DNS-rebinding
protection, which it can only enable automatically for 127.0.0.1,
localhost, and ::1. On a loopback bind a forged Host header is
rejected with 421 Misdirected Request; on a public bind any Host is
accepted. The server logs a warning at startup when this applies.
Usage Example
Configure as an MCP Service
To set up SearXNG as an MCP server, add one of the following to your MCP configuration file:
UVX setup:
Docker setup (Local stdio):
This launches the server over stdio, which is the right choice for a local client.
Remote setup (Streamable HTTP):
Start the server as a long-running process:
Then point the client at its /mcp endpoint:
Note the --host 0.0.0.0 needed to accept connections from other
machines, and the security caveat above: the server is unauthenticated,
so restrict it to a trusted network or front it with an authenticating
reverse proxy.
Example Invocation
Debugging
You can use the MCP inspector to debug the server:
License
AGPLv3+ License - see LICENSE for details.
Source: README.md at commit 136bce7
Tools
0Version history
1- v0.1.2LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts