Konnek SearXNG MCP Server
Provides MCP tools for metasearch via SearXNG, exposing a basic search method and a full-featured web_search tool. Searches can be customized by categories, search engines, language, time range, safe-search level, and result count, with options to run against a remote SearXNG instance over HTTP or against an embedded in-process SearXNG server.
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., "@Konnek SearXNG MCP Serversearch the web for the latest AI agent frameworks and summarize the top results"
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.
Konnek SearXNG MCP Server
This project implements an MCP (Model Context Protocol) server for SearXNG integration, providing web search functionality for AI agents.
Purpose
This server is developed to serve as a dedicated, open, and reliable metasearch solution for AI agents. Its goal is to provide a strong, high-quality search backend that can replace or supplement commercial search APIs like Tavily, Bing Search, and Brave Search.
Related MCP server: WET - Web Extended Toolkit
Features
MCP Compliance: Implements the MCP protocol for search operations.
SearXNG Integration: Uses the
searxngPython library to interact with SearXNG instances.Dual Search Methods:
search: Basic search via SearXNG client.web_search: Full-featured web search with categories, engines, language, time range, safe search, and result limits.
Tavily-Compatible Adapter: Provides a Tavily-compatible interface (
TavilyAdapter) that wraps SearXNG results in Tavily's response format.Embedded SearXNG: Optional embedded local SearXNG MCP server via
--embeddedflag — starts searxng's MCP server in-process (background thread) and connects viaHttpSearchAdapteron localhost. No separate Flask server required.Dual Transport Support:
stdio: MCP over Standard Input/Output (default).
streamable-http: MCP over Streamable HTTP (Starlette + uvicorn).
PEP 8 compliant: Code follows Python's style guide.
RealPython Project Layout: Source code is organised under the
srcdirectory.
Directory Structure
easy-searxng-mcp-server/
├── src/
│ ├── __init__.py
│ ├── main.py # Core server implementation
│ ├── common/
│ │ ├── __init__.py
│ │ └── config.py # Configuration and logging
│ ├── shared/
│ │ ├── __init__.py
│ │ └── types.py # Shared data types (TavilyResult, etc.)
│ ├── tavily/
│ │ ├── __init__.py
│ │ ├── adapter.py # Tavily-compatible adapter
│ │ └── settings/
│ │ ├── __init__.py
│ │ └── tavily_defaults.yml
│ ├── runner/
│ │ ├── __init__.py
│ │ ├── simplexng.py # Embedded SearXNG server
│ │ └── settings/
│ │ ├── __init__.py
│ │ └── settings_template.yml
│ └── mcp_server/
│ ├── __init__.py
│ └── server.py # MCP server with web_search tool
├── pyproject.toml # Project configuration and dependencies
├── server_entry.sh # Entry script
└── README.md # This fileUsage
Via uvx (recommended)
uvx --from easy-searxng-mcp-server easy-searxng-mcp-server [OPTIONS]Direct execution from source
cd /resources/Projects/easy-searxng-mcp-server
./server_entry.sh [OPTIONS]Supported Options
Flag | Description |
| MCP transport: |
| Start searxng MCP server in-process on localhost, then connect via HttpSearchAdapter. No separate Flask server required. |
| Connect to a remote SearXNG instance via HTTP (requires |
| URL of the remote SearXNG instance (e.g., |
| Host to bind for streamable-http transport (default: 127.0.0.1). |
| Port to bind for streamable-http transport (default: 8000). |
| Port for embedded SearXNG server (default: 11888). |
| Host for embedded SearXNG server (default: 127.0.0.1). |
| OpenAI-compatible embeddings endpoint URL for VectorRAG reranking. |
| Embedding model name (omit for llama-server to use loaded model). |
| Embedding dimension (omit for llama-server to use model's n_embd). |
Note:
--embeddedis the recommended way to run locally. It starts the SearXNG MCP server in-process and connects automatically. Using--searxng-url=http://127.0.0.1:11888achieves the same result but requires you to start the SearXNG server separately.
VectorRAG (Optional)
When the EMBEDDINGS_URL environment variable is set, the server uses VectorRAG to rerank search results by semantic similarity using LanceDB + OpenAI-compatible embeddings.
Env Var | Default | Description |
| — | OpenAI-compatible embeddings endpoint URL (required for VectorRAG) |
| — | Embedding model name (omit for llama-server to use loaded model) |
| — | Embedding dimension (omit for llama-server to use model's n_embd) |
|
| Number of top results after reranking |
Example:
export EMBEDDINGS_URL=http://localhost:8080/v1
uvx --from easy-searxng-mcp-server easy-searxng-mcp-server --embeddedExamples
Embedded SearXNG with stdio transport (recommended for local use):
./server_entry.sh --embedded --transport stdioThen enter MCP requests in JSON format:
{"method": "search", "query": "python programming"}Embedded SearXNG with streamable-http transport:
./server_entry.sh --embedded --transport streamable-http --host 127.0.0.1 --port 8000MCP endpoint: http://127.0.0.1:8000/mcp
Web Search with parameters:
{
"method": "web_search",
"query": "artificial intelligence",
"categories": ["general", "news"],
"engines": ["google", "bing", "duckduckgo"],
"language": "en",
"max_results": 10,
"time_range": "week",
"safe_search": 1
}Remote Mode with streamable-http:
export SEARXNG_URL="http://your-searxng-instance:8080"
./server_entry.sh --transport streamable-http --host 0.0.0.0 --port 8000Or with explicit URL:
./server_entry.sh --searxng-url "http://your-searxng-instance:8080" --transport streamable-httpEnvironment Variables
Variable | Description |
| URL of the remote SearXNG instance. |
| Tavily adapter HTTP timeout (default: 10). |
| User agent for Tavily adapter. |
| Max results for Tavily adapter (default: 10). |
| Content length for Tavily adapter (default: 2500). |
Supported File Formats
The server uses markitdown for converting various file formats to text. When enabled, the following formats are supported:
Format | Installation | Description |
|
| PowerPoint files |
|
| Word files |
|
| Excel files (newer) |
|
| Excel files (older) |
|
| PDF files |
|
| Outlook messages |
|
| Audio transcription (wav, mp3) using FasterWhisper |
|
| YouTube video transcription |
To install all optional dependencies:
pip install 'easy-searxng-mcp-server[all-formats]'Or via uvx:
uvx --from 'easy-searxng-mcp-server[all-formats]' easy-searxng-mcp-serverAudio transcription uses FasterWhisper for high-performance speech recognition. The model size can be configured via the WHISPER_MODEL environment variable (default: tiny).
Dependencies
Python 3.8+
searxng- Core SearXNG client and MCP serveruvicorn,starlette,sse-starlette,anyio- Streamable HTTP transportflask,waitress- Web server for embedded modeaiohttp,beautifulsoup4- Web scraping for Tavily adapterpydantic- Data validationpyyaml,platformdirs- Configurationmcp-utils,strif,queuelib- MCP and queue utilities
Install with:
pip install -r requirements.txtMCP Tools
web_search
Performs a web search using SearXNG with customizable parameters.
Parameters:
query(required): Search query stringcategories: Search categories (e.g.,["general", "news"])engines: Search engines (e.g.,["google", "bing", "duckduckgo"])language: Language code (default:"auto")max_results: Maximum results (default: 5, range: 1-50)time_range: Time filter (day,week,month,year,all)safe_search: Safe search level (0=normal, 1=moderate, 2=strict)
Development
The project follows PEP 8 guidelines and the RealPython project layout
with source code in the src directory.
This server cannot be deployed
Maintenance
Related MCP Connectors
Web search and page reading for AI agents, including JSON APIs, RSS feeds and YouTube.
Document conversion and OCR for AI agents: PDF, Office docs, images to text.
Web search for AI agents — one tool across 6 engines, routed to the cheapest + cached.
Web scraping, Google SERP, Markdown and ChatGPT/Gemini answers as typed tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to perform privacy-respecting web searches through SearXNG, with support for multiple search engines, categories, and advanced filtering options.127 npm27MIT
- AlicenseAqualityAmaintenanceWeb search (embedded SearXNG), content extraction, and library docs indexing with hybrid search. No API keys required.6838 PyPI19Apache 2.0
- AlicenseBqualityDmaintenanceEnables AI agents to perform comprehensive search across 27 search engines including web, academic, code, community, package managers, video, images, podcasts, and maps, with multi-modal support, caching, and security features.14MIT
- AlicenseAqualityCmaintenanceEnables privacy-preserving web search and content extraction through a self-hosted SearXNG instance, aggregating 70+ engines and converting pages to Markdown for LLM use.3MIT