SearXNG MCP server

Created By
nik-sharky3 months ago
A Model Context Protocol (MCP) server that provides web search capabilities by integrating with a SearXNG instance. ## Features - **Web Search**: Perform powerful aggregated searches across multiple engines. - **Discovery**: Programmatically retrieve available categories and engines. - **Stateless HTTP**: Compatible with any standard JSON-RPC client. - **Flexible Configuration**: Supports environment variables and command-line arguments
Overview

SearXNG MCP Server

A Model Context Protocol (MCP) server that provides web search capabilities by integrating with a SearXNG instance.

Features

  • Web Search: Perform powerful aggregated searches across multiple engines.
  • Discovery: Programmatically retrieve available categories and engines.
  • Stateless HTTP: Compatible with any standard JSON-RPC client.
  • Flexible Configuration: Supports environment variables and command-line arguments.

Prerequisites

  • Python 3.10+
  • A running SearXNG instance.

Installation

  1. Clone the repository and navigate to the directory.
  2. Install dependencies:
    pip install -r requirements.txt
    
  3. Set up your .env file (optional):
    SEARXNG_URL=http://your-searxng-instance:8080
    MCP_PORT=32123
    MCP_HOST=127.0.0.1
    

Usage

Run the server using uv or standard python:

python searxng_mcp.py --transport http --port 32123 --searxng http://searx.lan

Run with Docker

  1. Build the image:

    docker build -t searxng-mcp .
    
  2. Run the container:

    docker run -d \
      -p 32123:32123 \
      -e SEARXNG_URL=http://your-searxng-instance:8080 \
      --name searxng-mcp \
      searxng-mcp
    

Transport Options

  • stdio: Standard input/output (default for some MCP clients).
  • http: Stateless HTTP (streamable-http).
  • sse: Server-Sent Events.

Search Abilities Guide

SearXNG aggregates results from various sources. This guide outlines the capabilities available through the searxng_search tool.

Search Categories

Categories help refine your search by content type. Use these in the categories parameter (comma-separated).

CategoryDescription
generalDefault web search (Google, Brave, DuckDuckGo, etc.)
imagesImage search results
videosVideo content from YouTube, Vimeo, etc.
newsRecent news articles
mapGeographical and map information
itIT-related searches (StackOverflow, GitHub, etc.)
scienceScientific papers and articles (ArXiv, Google Scholar)
filesTorrent and file searches
social_mediaPosts and profiles from social platforms

Supported Engines

SearXNG can query over 130 engines. Configured engines typically include:

  • Web: Google, Brave, DuckDuckGo, Qwant, Startpage
  • Knowledge: Wikipedia, Wikidata
  • Development: GitHub, StackOverflow, PyPI
  • Social: Reddit, Twitter/X

Advanced Search Parameters

  • categories: Filter by specific types (e.g., news,it).
  • engines: Force specific engines (e.g., google,wikipedia).
  • language: Specify search language (e.g., en, es, fr).
  • pageno: Navigate through multiple pages of results.
  • time_range: Filter by date (day, month, year).
  • safesearch: Control content filtering (0=None, 1=Moderate, 2=Strict).

Programmatic Discovery

Use the searxng_get_info tool to dynamically retrieve the list of enabled categories and engines from your instance.

Project Info
Created At
3 months ago
Updated At
3 months ago
Author Name
nik-sharky
Star
-
Language
-
License
-
Category

Recommend Servers

View All
Bring your real authenticated browser session to AI coding agents. Local-first MCP server + Chrome MV3 extension. No cloud. No telemetry.
@Cubenest

peek records the user's actual logged-in browser (DOM via rrweb, console events, network metadata, optional response bodies via opt-in Deep capture) through a Chrome MV3 extension. The extension ships events through a native-messaging stdio bridge to a local MCP server (peek-mcp), which persists them to a SQLite database at ~/.peek/sessions.db. AI coding agents (Claude Code, Cursor, Cline, Windsurf) read sessions from the database via 10 MCP tools: Tool What it does list_recent_sessions List recently recorded sessions (id, origin, ts, event count). get_session_summary LLM-readable narrative summary of a session. get_session_console_errors Console errors recorded in a session. get_session_network_errors Failed/notable network requests in a session. get_user_action_before_error Last N user actions before a console error. generate_playwright_repro Generate a runnable Playwright test from a session. get_dom_snapshot Reconstruct the DOM at a given timestamp. query_dom_history Timeline of attribute/text changes for a selector. request_authorization Side-panel consent for write actions (Level 3). execute_action Dispatch a UI action (gated by permission level + destructive blocklist). Why local-first matters Every other "browser session for AI" tool ships to a vendor cloud. peek's SQLite + extension live on the user's machine — no remote endpoints, no telemetry. The privacy policy (docs/peek/PRIVACY_POLICY.md) is the source of truth. Install # 1. Add the MCP server to Claude Code claude mcp add peek -- npx -y @peekdev/mcp # 2. Install the Chrome extension from the Chrome Web Store # (link added once the CWS listing is approved)

a day ago