About SearXNG MCP Server
SearXNG MCP Server is an MCP server that integrates with SearXNG to provide privacy-focused meta search. It combines results from multiple engines and can fall back across several SearXNG instances.
Key features
- 01Meta search combining multiple engines
- 02Multiple categories including news and science
- 03Language and time range filtering
- 04Three levels of safe search
- 05Fallback across multiple SearXNG instances
Use cases
- 01Providing web search results to an AI assistant
- 02Searching news or science categories for specific topics
- 03Running privacy-friendly searches against a self-hosted SearXNG instance
MCP support
This project is an MCP server that exposes a web_search tool to MCP clients for running meta searches. Backend SearXNG instances are set through the SEARXNG_INSTANCES environment variable.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMESearXNG 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
Installation
npm install -g @kevinwatt/mcp-server-searxng
Usage
Direct Run
mcp-server-searxng
With 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.
- Instances listed in
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 stdio
Run 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/searxng
Test 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=test
Container 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 searxng
The --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:8080 -
SEARXNG_USER_AGENT: Custom User-Agent header for requests Default:MCP-SearXNG/1.0 -
NODE_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.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.