Skip to main content
Glama
netixc

SearXNG MCP Server

🔍 SearXNG MCP Server

A privacy-focused Model Context Protocol (MCP) server that provides Claude with web search capabilities through SearXNG metasearch engine.

✨ Features

  • 🔒 Privacy-first - No tracking, no data collection via SearXNG

  • 🌐 Multi-engine - Aggregates results from Google, Bing, DuckDuckGo, Brave, and more

  • 🎯 Specialized search - Web, images, videos, and news search

  • Fast - Optimized with minimal tool set (4 tools)

  • 🐳 Docker included - SearXNG instance setup included

  • 🛠️ Easy setup - Python-based with UV package manager

Related MCP server: MCP Deep Search

📦 Installation

Prerequisites

  • Python 3.10 or higher

  • Docker and Docker Compose

  • Git

Quick Install

1. Clone repository:

git clone https://github.com/netixc/SearxngMCP.git
cd SearxngMCP

2. Configure SearXNG:

Edit the following files with your settings:

  • docker-compose.yml - Replace YOUR_IP with your server's IP address

  • docker-compose.yml - Replace CHANGE_THIS_SECRET_KEY with a secret key

  • searxng/settings.yml - Replace CHANGE_THIS_TO_YOUR_OWN_SECRET_KEY with the same secret key

  • searxng-config/config.json - Replace YOUR_IP with your server's IP address

Generate a secret key:

openssl rand -hex 32

3. Start SearXNG instance:

docker compose up -d

SearXNG will be available at http://YOUR_IP:8080

4. Install MCP server (using UV - recommended):

# Create venv and install
uv venv
source .venv/bin/activate  # Linux/macOS
uv pip install -e ".[dev]"

5. Verify installation:

# Check SearXNG is running
curl http://YOUR_IP:8080

⚙️ Configuration

MCP Client Setup

Add to your MCP settings (e.g., Claude Desktop config):

{
  "mcpServers": {
    "searxng": {
      "command": "/absolute/path/to/SearxngMCP/run-server.sh"
    }
  }
}

SearXNG Configuration

The SearXNG instance is configured via searxng/settings.yml:

  • Default engines: Google, Bing, DuckDuckGo, Brave, Wikipedia, YouTube

  • JSON API enabled for MCP access

  • Privacy features enabled (no tracking)

  • Accessible on your LAN at YOUR_IP:8080

IMPORTANT: Before starting Docker, replace the following in your config files:

  1. docker-compose.yml: Replace YOUR_IP and CHANGE_THIS_SECRET_KEY

  2. searxng/settings.yml: Replace CHANGE_THIS_TO_YOUR_OWN_SECRET_KEY

  3. searxng-config/config.json: Replace YOUR_IP

Generate secret key: openssl rand -hex 32

MCP Server Configuration

Edit searxng-config/config.json (replace YOUR_IP with your server's IP):

{
  "searxng": {
    "url": "http://YOUR_IP:8080",
    "timeout": 10
  },
  "logging": {
    "level": "INFO",
    "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
    "file": null
  }
}

🔧 Available Tools

The server provides 3 optimized tools designed for efficient research:

Quick single search for web or news content.

Use when:

  • Need quick information or simple lookup

  • User asks for a basic web search

  • Looking for news on a topic

Parameters:

  • query* - What to search for

  • category - "general" (default) or "news"

  • engines - Optional: Specific engines (e.g., "google,bing")

  • max_results - Number of results (default: 10, max: 50)

Example:

User: What's the latest Python release?
Claude: [Calls search("latest Python release", category="general")]

2. search_media - Images & Videos

Search for images or videos.

Use when:

  • User wants to find images or photos

  • Looking for video content

  • "show me pictures of..." or "find videos about..."

Parameters:

  • query* - What to find

  • media_type - "images" (default) or "videos"

  • engines - Optional: Specific engines

  • max_results - Number of results (default: 10, max: 50)

Example:

User: Show me pictures of Northern Lights
Claude: [Calls search_media("Northern Lights", media_type="images")]

3. research_topic - Deep Research ⭐

Multi-search research with automatic analysis and synthesis.

Use when:

  • User wants comprehensive research or briefing

  • Need to validate information across multiple sources

  • User asks to "research", "investigate", or "analyze"

  • Creating detailed reports with cross-referenced sources

What it does:

  • Runs 2-6 searches automatically using different strategies

  • Searches multiple engines (Google, Bing, DuckDuckGo, Brave, Wikipedia)

  • Combines general web + news sources

  • Deduplicates results across all searches

  • Returns 15-50 UNIQUE sources

  • Instructs Claude to analyze and synthesize (not just list sources)

Critical behavior: After gathering sources, Claude is instructed to:

  1. Read and analyze ALL sources

  2. Cross-reference claims across sources

  3. Identify high-confidence facts (confirmed by many sources)

  4. Note contradictions or single-source claims

  5. Create comprehensive briefing with executive summary

  6. Assess source quality and credibility

Parameters:

  • query* - Research topic or question

  • depth - Research thoroughness:

    • "quick" - 2 searches, ~15 unique sources

    • "standard" - 4 searches, ~30 unique sources (recommended)

    • "deep" - 6 searches, ~50 unique sources

Example:

User: Research the latest AI developments and give me a briefing
Claude: [Calls research_topic("latest AI developments 2025", depth="standard")]

Claude receives 32 unique sources, then synthesizes:

"# AI Developments Briefing (2025)

## Executive Summary
Based on analysis of 32 sources from Google, Bing, DuckDuckGo, and Wikipedia...

## Key Findings
✓ Major development 1 (HIGH CONFIDENCE - confirmed by 12 sources)
✓ Emerging trend 2 (MEDIUM - reported by 5 sources)
⚠ Claim 3 (LOW - single source, needs verification)

## Contradictions
Source A says X, but Sources B, C, D report Y...

## Source Quality
Most reliable: Google News (8 sources), Wikipedia (3 sources)
..."

💡 Usage Examples

General search:

User: What is the latest news about AI?
Claude: [Calls search("latest AI news")]

Image search:

User: Show me pictures of Northern Lights
Claude: [Calls search_images("Northern Lights")]

Video search:

User: Find Python tutorial videos
Claude: [Calls search_videos("Python tutorial")]

News search:

User: What's happening with climate change?
Claude: [Calls search_news("climate change")]

🐳 Docker Management

Start SearXNG:

docker-compose up -d

Stop SearXNG:

docker-compose down

View logs:

docker-compose logs -f searxng

Rebuild:

docker-compose down
docker-compose up -d --build

🛠️ Development

Run tests:

pytest

Format code:

black .

Type checking:

mypy .

Lint:

ruff .

🎯 Why Only 4 Tools?

This MCP server is optimized for efficiency:

  1. Focused functionality - Each tool has a clear, distinct purpose

  2. LLM-friendly - Tool descriptions include "Use this when..." guidance

  3. Low context - Minimal tool set reduces token usage

  4. Privacy-first - SearXNG aggregates without tracking

Unlike direct search engine APIs, SearXNG provides:

  • Privacy protection (no tracking)

  • Multi-engine aggregation

  • Self-hosted control

  • No API keys needed

📁 Project Structure

SearxngMCP/
├── docker-compose.yml          # SearXNG Docker setup
├── searxng/
│   └── settings.yml            # SearXNG configuration
├── src/searxng_mcp/
│   ├── server.py               # Main MCP server
│   ├── config/                 # Configuration handling
│   │   ├── models.py
│   │   └── loader.py
│   └── tools/                  # Search tool implementations
│       └── search.py
├── searxng-config/
│   └── config.json             # MCP configuration
├── run-server.sh               # Server startup script
├── pyproject.toml              # Dependencies
└── README.md

📄 License

MIT License

🙏 Credits

Available Tools

3 tools
research_topicA

Deep research with multiple searches and source validation.

Use this when:

  • User wants comprehensive research or briefing

  • Need to validate information across multiple sources

  • Looking for in-depth analysis

  • User asks to "research", "investigate", or "give me a briefing"

This tool runs 2-6 searches automatically using different strategies:

  • Searches multiple engines (Google, Bing, DuckDuckGo, Brave, Wikipedia)

  • Searches both general web and news sources

  • Deduplicates results across all searches

  • Returns 15-50 UNIQUE sources depending on depth

Perfect for creating comprehensive briefings with validated information.

Parameters: query* - Research topic depth - Research thoroughness: • "quick" - 2 searches, ~15 unique sources • "standard" - 4 searches, ~30 unique sources (recommended) • "deep" - 6 searches, ~50 unique sources

CRITICAL - After receiving sources, you MUST:

  1. Read and analyze ALL sources provided (titles, URLs, content snippets)

  2. Cross-reference claims across multiple sources

  3. Identify facts confirmed by many sources (high confidence)

  4. Note contradictions or single-source claims (lower confidence)

  5. Synthesize findings into a comprehensive briefing with: • Executive summary of key findings • Main facts/developments (note how many sources confirm each) • Contradictions or uncertainties • Source quality assessment (which engines found what)

  6. DO NOT just list the sources - you must analyze, validate, and synthesize them into actionable intelligence

Returns: Research briefing with analyzed, validated, cross-referenced information

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesResearch topic or question
depthNoResearch depthstandard

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and excels by detailing behavioral traits: it runs 2-6 searches automatically using multiple engines and sources, deduplicates results, returns 15-50 unique sources based on depth, and includes critical post-processing steps like cross-referencing and synthesis. This provides rich context beyond basic functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage guidelines, behavioral details, parameters, critical instructions, returns) and front-loaded key information. It is appropriately sized for a complex tool, though some sentences in the 'CRITICAL' section could be more concise without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multi-search research with validation), no annotations, and no output schema, the description is highly complete. It covers purpose, usage, detailed behavior, parameter semantics, and explicit post-processing requirements, providing all necessary context for an agent to invoke and use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the baseline is 3. The description adds significant value by explaining the 'depth' parameter's semantics: mapping 'quick,' 'standard,' and 'deep' to specific search counts and source ranges, with 'standard' recommended. This enhances understanding beyond the schema's enum and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs 'deep research with multiple searches and source validation,' specifying the verb ('research') and resource ('sources'). It distinguishes from sibling tools like 'search' and 'search_media' by emphasizing comprehensive, multi-source validation rather than simple queries or media-specific searches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: for 'comprehensive research or briefing,' 'validate information across multiple sources,' 'in-depth analysis,' or when users ask to 'research,' 'investigate,' or 'give me a briefing.' It implicitly distinguishes from siblings by focusing on multi-engine, validated research rather than single searches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_mediaA

Search for images or videos.

Use this when:

  • User wants to find images or photos

  • Looking for video content

  • "show me pictures of..." or "find videos about..."

Parameters: query* - What to find media_type - "images" or "videos" (default: images) engines - Optional: Specific engines max_results - Number of results (default: 10, max: 50)

Returns: Media URLs with thumbnails and sources

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesMedia search query
media_typeNoType of mediaimages
enginesNoComma-separated engine list
max_resultsNoMaximum results

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds some context about default values and limits (default: images, max_results default: 10, max: 50) and describes the return format ('Media URLs with thumbnails and sources'), but doesn't cover important behavioral aspects like rate limits, authentication requirements, pagination, or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized with clear sections (purpose, usage guidelines, parameters, returns). Every sentence earns its place by providing distinct information. The front-loaded purpose statement is followed by logically organized supporting details without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 4 parameters (100% schema coverage) and no annotations/output schema, the description is reasonably complete. It covers purpose, usage scenarios, parameters, and return values. However, it lacks some behavioral context that would be helpful for an AI agent, such as performance characteristics or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by repeating parameter names and basic constraints, but doesn't provide additional semantic context like query formatting examples, engine options, or result quality considerations. The baseline of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Search for images or videos') and resources ('images or videos'), distinguishing it from sibling tools like 'research_topic' and 'search' by focusing specifically on media content. The opening sentence directly communicates the core function without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines with a dedicated 'Use this when:' section listing three concrete scenarios (finding images/photos, looking for video content, and example queries). This clearly indicates when to use this tool versus alternatives, though it doesn't explicitly name sibling tools as alternatives.

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. Dates show when Glama detected each change.

  1. 3 tool updatesv1.0.0
    • Changedresearch_topic1 field changed
      • addedInput schema / title
        Added value: +"research_topicArguments"
    • Changedsearch1 field changed
      • addedInput schema / title
        Added value: +"searchArguments"
    • Changedsearch_media1 field changed
      • addedInput schema / title
        Added value: +"search_mediaArguments"
  2. 3 tool updates
    • First observedresearch_topic
    • First observedsearch
    • First observedsearch_media

TDQS

A4.5/5.0
Disambiguation5/5

The three tools have clearly distinct purposes with no ambiguity. 'research_topic' is for comprehensive multi-source analysis, 'search' is for simple web/news lookups, and 'search_media' is specifically for images/videos. The descriptions explicitly differentiate them and guide when to use each tool.

Naming Consistency4/5

The naming is mostly consistent with a verb_noun pattern, but there's a minor deviation. 'research_topic' and 'search_media' follow a clear pattern, while 'search' is a single verb without a noun, which slightly breaks consistency. However, all names are readable and intuitive for their functions.

Tool Count5/5

With only 3 tools, this is well-scoped for a search-focused server. Each tool earns its place by covering distinct search use cases: deep research, simple queries, and media searches. This minimal set avoids bloat while providing complete coverage for the domain's core functionalities.

Completeness5/5

The tool surface is complete for a search server, covering all essential operations without gaps. It includes comprehensive research, basic search, and media search, which are the primary actions users would expect. There are no dead ends, and the tools support the full lifecycle of search tasks from quick lookups to in-depth analysis.

Maintenance

ActivityInactive
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Provides web search capabilities using SearxNG, allowing AI assistants like Claude to search the web with a privacy-respecting metasearch engine.
    1
    11
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables deep web search across multiple providers including Google, Bing, Brave, DuckDuckGo, and Perplexity, with support for comprehensive AI-powered research using intelligent multi-engine queries.
    2
    38
    9
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables web search, image search, and news search through a self-hosted SearXNG instance. Provides privacy-focused meta-search capabilities aggregating results from multiple search engines.
    3
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A 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.
    2
    12
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/netixc/SearxngMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server