SearXNG MCP Server
The SearXNG MCP Server enables privacy-focused meta searching across multiple engines with customizable options.
Meta Search: Combines results from multiple search engines into a single response
Privacy-Focused: No tracking or user profiling ensures user privacy
Multiple Categories: Supports searching in general, news, science, files, images, videos, music, social media, and IT
Customizable Filtering: Filter by language, time range (day, week, month, year), and safe search levels (None, Moderate, Strict)
Navigation: Supports pagination for search results
Reliability: Utilizes fallback SearXNG instances for consistent service
Included as one of the search engines that SearXNG queries for results, configured with the shortcut 'd'.
Included as one of the search engines that SearXNG queries for results, configured with the shortcut 'g'.
Integrates with SearXNG to provide privacy-focused meta search capabilities, combining results from multiple search engines with features like language support, time range filtering, and safe search.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SearXNG MCP Serversearch for recent AI developments in the past week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SearXNG MCP Server
An MCP server implementation that integrates with SearXNG, providing privacy-focused meta search capabilities.
Features
Meta Search: Combines results from multiple search engines
Privacy-Focused: No tracking, no user profiling
Multiple Categories: Support for general, news, science, files, images, videos, and more
Language Support: Search in specific languages or all languages
Time Range Filtering: Filter results by day, week, month, or year
Safe Search: Three levels of safe search filtering
Fallback Support: Multiple SearXNG instances for reliability
Related MCP server: SearXNG MCP Server
Installation
npm install -g @kevinwatt/mcp-server-searxngUsage
Direct Run
mcp-server-searxngWith Dive Desktop
Click "+ Add MCP Server" in Dive Desktop
Copy and paste this configuration:
{
"mcpServers": {
"searxng": {
"command": "npx",
"args": [
"-y",
"@kevinwatt/mcp-server-searxng"
]
}
}
}Click "Save" to install the MCP server
Tool Documentation
web_search
Execute meta searches across multiple engines
Inputs:
query(string): Search termspage(number, optional): Page number (default: 1)language(string, optional): Language code (e.g., 'en', 'all', default: 'all')categories(array, optional): Search categories (default: ['general'])Available: "general", "news", "science", "files", "images", "videos", "music", "social media", "it"
time_range(string, optional): Time filter (all_time/day/week/month/year, default: 'all_time')safesearch(number, optional): Safe search level (0: None, 1: Moderate, 2: Strict, default: 1)
Behavior:
Instances listed in
SEARXNG_INSTANCESare tried in order; the first one that answers with results wins.An instance that is reachable but has no matches returns
No results found for "<query>".— an empty search is a normal result, not an error.The error
All SearXNG instances failedis returned only when no instance was reachable at all: connection errors, non-2xx responses, or replies that aren't a valid SearXNG JSON search response.
Development
git clone https://github.com/kevinwatt/mcp-server-searxng.git
cd mcp-server-searxng
npm install
npm run build # compiles to dist/src/
npm test # unit tests; HTTP is mocked, no live instance needed
node dist/src/index.js # run the server on stdioRun a single test case with npm test -- -t "should resolve urls correctly".
License
This MCP server is licensed under the MIT License. See the LICENSE file for details.
Prerequisites
You need a local SearXNG instance running. To set it up:
Run SearXNG with Docker
Quick Start
# Create config directory
mkdir -p searxng
# Create config file
tee searxng/settings.yml << EOF
use_default_settings: true
server:
bind_address: "0.0.0.0"
secret_key: "CHANGE_THIS_TO_SOMETHING_SECURE" # Generate a random key
port: 8080
search:
safe_search: 0
formats:
- html
- json
engines:
- name: google
engine: google
shortcut: g
- name: duckduckgo
engine: duckduckgo
shortcut: d
- name: bing
engine: bing
shortcut: b
server.limiter: false
EOF
# Start container
docker run -d \
--name searxng \
-p 8080:8080 \
-v "$(pwd)/searxng:/etc/searxng" \
searxng/searxngTest Search Function
# Test JSON API with curl
curl -v 'http://localhost:8080/search?q=test&format=json'
# Or visit in browser
http://localhost:8080/search?q=testContainer Management
# Stop container
docker stop searxng
# Remove container
docker rm searxng
# View container logs
docker logs searxng
# Enable auto-start on boot
docker update --restart always searxngThe --restart always flag ensures that:
Container starts automatically when Docker daemon starts
Container restarts automatically if it crashes
Container restarts automatically if it is stopped unless explicitly stopped by user
Custom Configuration
Edit searxng/settings.yml to:
Modify search engine list
Adjust security settings
Configure UI language
Change API limits
For detailed configuration options, see SearXNG Documentation
Environment Variables
SEARXNG_INSTANCES: Comma-separated list of SearXNG instance URLs, tried in order as fallbacks. An entry may include a base path for path-based reverse proxy routing (e.g.https://example.com/searx), with or without a trailing slash. Default:http://localhost:8080SEARXNG_USER_AGENT: Custom User-Agent header for requests Default:MCP-SearXNG/1.0NODE_TLS_REJECT_UNAUTHORIZED: Set to '0' to bypass SSL certificate verification (for development with self-signed certificates) Default: undefined (SSL verification enabled)
Example configuration with all options:
{
"mcpServers": {
"searxng": {
"name": "searxng",
"command": "npx",
"args": [
"-y",
"@kevinwatt/mcp-server-searxng"
],
"env": {
"SEARXNG_INSTANCES": "http://localhost:8080,https://searx.example.com",
"SEARXNG_USER_AGENT": "CustomBot/1.0",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}⚠️ Warning: Disabling SSL certificate verification is not recommended in production environments.
Available Tools
1 toolweb_searchA
Performs a web search using SearXNG, ideal for general queries, news, articles and online content. Supports multiple search categories, languages, time ranges and safe search filtering. Returns relevant results from multiple search engines combined.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| page | No | Page number (default 1) | |
| language | No | Search language code (e.g. 'en', 'zh', 'jp', 'all') | all |
| categories | No | ||
| time_range | No | all_time | |
| safesearch | No | 0: None, 1: Moderate, 2: Strict |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that results come from multiple search engines combined and that filtering options are supported, but it does not mention limitations, rate limits, result count, or whether the operation is read-only. This is adequate but not deeply transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, supported controls, and output behavior. The most important information is front-loaded, with no filler or repeated schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no output schema and no annotations, the description covers purpose and high-level behavior but not result format, pagination behavior, or edge cases like empty results. It is sufficient for basic invocation but leaves some context to be inferred.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the schema already documents query, page, language, and safesearch values. The description adds a high-level statement that categories, languages, time ranges, and safe search are supported, but it does not add details beyond the schema. The generic references are not enough to meaningfully augment the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Performs a web search using SearXNG', and enumerates concrete use cases such as general queries, news, articles, and online content. It also distinguishes itself from a plain search by noting results come from multiple search engines combined. With no sibling tools to contrast against, this is maximum clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the tool is 'ideal for general queries, news, articles and online content', which provides clear usage context. It does not state explicit when-not-to-use conditions or alternatives, but that is reasonable since no sibling tools are listed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- First observed
web_search
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly defined as performing web searches using SearXNG, making it distinct by default.
A single tool inherently has perfect naming consistency, as there are no other tools to compare it against. The name 'web_search' follows a clear verb_noun pattern and is appropriate for its function.
One tool is too few for a server named 'SearXNG MCP Server', which suggests a broader scope for search functionality. While the tool covers general web searches, the lack of additional tools (e.g., for image search, news-specific searches, or configuration) makes the set feel thin and underdeveloped for the domain.
The tool surface is severely incomplete for a search server. It only provides general web search, missing obvious extensions like image search, video search, news search, or advanced filtering tools that would be expected in a comprehensive search interface, leading to significant gaps in functionality.
Maintenance
Related MCP Connectors
Search the web, images, videos, news, and local businesses with robust filters, freshness controls…
Google, Bing, DuckDuckGo and Google Maps search results, free without an API key.
Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
Federated commerce search across independent WooCommerce merchants. Keyless, read-only MCP server.
Related MCP Servers
- AlicenseAqualityDmaintenanceA privacy-focused search server built on SearXNG that provides unlimited, multi-source web searching across 100+ engines. It enables AI tools to perform advanced searches with specialized filters for time, language, and content categories without API costs or rate limits.212MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables web search capabilities by integrating with a SearXNG instance to aggregate results from over 130 engines. It allows users to perform filtered searches across categories like news, science, and social media while supporting advanced parameters for language and time range.9MIT
- AlicenseNot gradedqualityCmaintenanceA privacy-friendly web search MCP server using SearXNG, enabling searches across multiple engines and categories.1MIT
- AlicenseNot gradedqualityDmaintenancePrivacy-respecting, self-hosted metasearch MCP server that aggregates results from multiple search engines and fetches page content as Markdown.43 npm1MIT