MCP server for web search via a self-hosted SearXNG instance.
Provides a single search_web tool that queries your SearXNG instance and returns structured results (title, URL, snippet).
export SEARXNG_BASE_URL="http://searxng:8080"Optional:
export SEARXNG_LANGUAGE="en-US"
export SEARXNG_CATEGORIES="general"
export SEARXNG_ENGINES="google,bing"
export SEARXNG_TIME_RANGE="month"
export SEARXNG_SAFESEARCH="1"
export SEARXNG_USER_AGENT="my-app/1.0"
export SEARXNG_HEADERS_JSON='{"Authorization":"Bearer ..."}'
export SEARXNG_TIMEOUT_SECONDS="30"No install needed — run directly from GitHub with uvx:
uvx --from "git+https://github.com/fighter3005/search-mcp" searxng-mcpOr from a local clone:
uvx --from /path/to/search-mcp searxng-mcpclaude mcp add --transport stdio searxng-search \
-e SEARXNG_BASE_URL="http://searxng:8080" \
-- uvx --from "git+https://github.com/fighter3005/search-mcp" searxng-mcpcodex mcp add searxng-search \
--env SEARXNG_BASE_URL="http://searxng:8080" \
-- uvx --from "git+https://github.com/fighter3005/search-mcp" searxng-mcpCreate .cursor/mcp.json or .vscode/mcp.json:
With uvx from GitHub:
{
"mcpServers": {
"searxng-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/fighter3005/search-mcp", "searxng-mcp"],
"env": {
"SEARXNG_BASE_URL": "http://searxng:8080"
}
}
}
}After install:
{
"mcpServers": {
"searxng-search": {
"command": "searxng-mcp",
"env": {
"SEARXNG_BASE_URL": "http://searxng:8080"
}
}
}
}Edit claude_desktop_config.json:
With uvx from GitHub (no install needed):
{
"mcpServers": {
"searxng-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/fighter3005/search-mcp", "searxng-mcp"],
"env": {
"SEARXNG_BASE_URL": "http://searxng:8080"
}
}
}
}After install (pip install -e .):
{
"mcpServers": {
"searxng-search": {
"command": "searxng-mcp",
"env": {
"SEARXNG_BASE_URL": "http://searxng:8080"
}
}
}
}Add to your config.yaml:
mcp_servers:
searxng-search:
command: uvx
args:
- "--from"
- "git+https://github.com/fighter3005/search-mcp"
- "searxng-mcp"
env:
SEARXNG_BASE_URL: "http://searxng:8080"Or as a JSON litellm_config:
{
"mcp_servers": {
"searxng-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/fighter3005/search-mcp", "searxng-mcp"],
"env": {
"SEARXNG_BASE_URL": "http://searxng:8080"
}
}
}
}| Tool | Parameters | Description |
|---|---|---|
search_web |
query (str), num_results (int, default 5) |
Search the web via SearXNG |
Returns {"results": [{"title": str, "url": str, "snippet": str}, ...]}.
- Python 3.11+
- A running SearXNG instance with JSON format enabled