SearXNG MCP Server
A Model Context Protocol (MCP) server that provides web search capabilities through SearXNG instances.
Features
- π Web Search β Query any SearXNG instance for general web results
- π Category-Specific Search β Search images, videos, news, music, science, etc.
- βοΈ Engine Selection β Use specific search engines (Google, Bing, DuckDuckGo, etc.)
- π Time Filtering β Filter results by day, week, month, or year
- π Engine Discovery β List all available SearXNG engines
Installation
From PyPI (when published)
pip install searxng-mcp-server
From Source
git clone https://github.com/<username>/searxng-mcp-server.git
cd searxng-mcp-server
pip install -e ".[dev]"
Configuration
Set the following environment variables:
| Variable | Description | Default |
|---|---|---|
SEARXNG_URL |
SearXNG instance URL | http://localhost:8888 (local Docker) |
SEARXNG_ENGINES |
Comma-separated engine list | (none β uses all) |
SEARXNG_LANG |
Search language code | en-US |
Example:
export SEARXNG_URL="http://localhost:8888"
export SEARXNG_ENGINES="google,bing,duckduckgo"
export SEARXNG_LANG="zh-TW"
Usage with Hermes Agent
Add to ~/.hermes/config.yaml:
mcp_servers:
searxng:
command: "uv"
args: ["run", "--directory", "/path/to/searxng-mcp-server", "searxng-mcp"]
env:
SEARXNG_URL: "https://search.sapti.me"
Usage with Claude Desktop / Cursor / VS Code
Add to your MCP configuration:
{
"mcpServers": {
"searxng": {
"command": "uv",
"args": ["run", "--directory", "/path/to/searxng-mcp-server", "searxng-mcp"],
"env": {
"SEARXNG_URL": "https://search.sapti.me"
}
}
}
}
Available Tools
search_web
Search the web using a SearXNG instance.
Parameters:
query(string, required): The search querymax_results(int, optional): Maximum results to return (default: 10)time_range(string, optional): Filter by time β 'day', 'week', 'month', 'year'
search_specific
Search using specific categories and/or engines.
Parameters:
query(string, required): The search querycategories(list of strings, optional): Categories to search (general, images, videos, news, music, files, it, science, social media)engines(list of strings, optional): Specific engines to usemax_results(int, optional): Maximum results (default: 10)time_range(string, optional): Time filter
search_by_category
Search a specific SearXNG category.
Parameters:
query(string, required): The search querycategory(string, optional): Category to search (default: 'general')max_results(int, optional): Maximum results (default: 10)
list_engines
List all available SearXNG search engines from searxng.org.
Parameters: None
Development
# Install dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/
# Lint with ruff
ruff check src/ tests/
Public SearXNG Instances
You can use any public or self-hosted SearXNG instance. Some public instances:
https://search.sapti.mehttps://searx.behttps://search.ononoki.org
β οΈ Note: Public instances may have rate limits or be unreliable. For production use, consider self-hosting your own SearXNG instance.
License
MIT