Skip to main content
Glama
Knuckles-Team

SearXNG MCP Server

Searxng Mcp

CLI or API | MCP | Agent

PyPI - Version MCP Server PyPI - Downloads GitHub Repo stars GitHub forks GitHub contributors PyPI - License GitHub GitHub last commit (by committer) GitHub pull requests GitHub closed pull requests GitHub issues GitHub top language GitHub language count GitHub repo size GitHub repo file count (file type) PyPI - Wheel PyPI - Implementation

Version: 2.1.0

Документация — Инструкции по установке, развертыванию, использованию в MCP-инструменте, Python API и консольных скриптах, а также рекомендации по подготовке экземпляра SearXNG поддерживаются в официальной документации.


Related MCP server: SearXNG MCP Server

Обзор

Searxng Mcp — это сервер Agent и Model Context Protocol (MCP) производственного уровня, предназначенный для прямого взаимодействия с SearXNG Search Engine MCP Server для Agentic AI!.


Ключевые возможности

  • Консолидированные MCP-инструменты с маршрутизацией действий: минимизируют накладные расходы на токены и устраняют раздувание инструментов в контекстах LLM, группируя методы в оптимизированные переключаемые модули инструментов.

  • Безопасность корпоративного уровня: всесторонняя поддержка политик Eunomia, делегирования OIDC-токенов и детального отслеживания контекста выполнения.

  • Встроенный графовый агент: встроенный агент Pydantic AI, поддерживающий Agent Control Protocol (ACP) и стандартные веб-интерфейсы (AG-UI).

  • Встроенная телеметрия и трассировка: готовый экспорт OpenTelemetry и нативная трассировка Langfuse.


CLI или API

Этот агент оборачивает API SearXNG Search Engine MCP Server для Agentic AI!. Вы можете взаимодействовать с ним программно или через встроенные точки входа выполнения.

Подробные инструкции по использованию базовых оберток API, расширенных привязок схем и справочников SDK для разработчиков поддерживаются в docs/index.md.


MCP

Этот сервер использует динамические инструменты с маршрутизацией действий для оптимизации накладных расходов на токены и максимальной совместимости с IDE.

Доступные MCP-инструменты

Таблица ниже автоматически генерируется из MCP-сервера — не редактируйте её вручную.

Сокращенные инструменты с маршрутизацией действий (MCP_TOOL_MODE=condensed)

MCP-инструмент

Переменная окружения для переключения

Описание

searxng_ingest_search

KGTOOL

Выполняет поиск SearXNG и нативно встраивает его результаты в epistemic-graph.

searxng_search_app

SEARCH_APPTOOL

Запускает интерактивное приложение поискового интерфейса SearXNG: поле запроса, фильтры категорий и кликабельный список результатов, работающее на основе существующего инструмента web_search через мост MCP Apps, управляемый хостом. Используйте это, когда человек должен видеть и взаимодействовать с результатами поиска визуально, а не читать сырой JSON. Не управляет браузером и не отображает произвольные веб-страницы — только этот поисковый процесс.

searxng_settings

CONFIGTOOL

Чтение/редактирование settings.yml встроенного экземпляра SearXNG

web_search

—

Выполняет веб-поиск с использованием уважающего конфиденциальность метапоискового экземпляра SearXNG.

4 инструмента с маршрутизацией действий · 0 подробных инструментов 1:1. Каждый включен, если только его переключатель <DOMAIN>TOOL не установлен в false; MCP_TOOL_MODE выбирает поверхность (по умолчанию intent — шесть глагольных инструментов, детальный набор загружается по требованию · condensed с маршрутизацией действий · verbose 1:1 · both). Автосгенерировано — не редактировать.

Подробные схемы инструментов, формы параметров и ограничения валидации сохранены в docs/usage.md.

Динамический выбор и видимость инструментов

Этот MCP-сервер поддерживает динамический выбор набора инструментов и фильтрацию видимости во время выполнения. Это позволяет ограничить набор доступных инструментов, чтобы не раздувать контекстное окно LLM.

Вы можете настроить фильтрацию инструментов через несколько каналов ввода:

  • Аргументы CLI: передайте --tools или --toolsets (или их отключенные аналоги --disabled-tools и --disabled-toolsets) при запуске.

  • Переменные окружения: задайте стандартные переменные окружения:

    • MCP_ENABLED_TOOLS / MCP_DISABLED_TOOLS

    • MCP_ENABLED_TAGS / MCP_DISABLED_TAGS

  • Заголовки HTTP SSE-запросов: передавайте пользовательские заголовки при инициализации транспорта:

    • x-mcp-enabled-tools / x-mcp-disabled-tools

    • x-mcp-enabled-tags / x-mcp-disabled-tags

  • Параметры запроса HTTP SSE: добавляйте параметры запроса непосредственно к URL вашего транспортного соединения:

    • ?tools=tool1,tool2

    • ?tags=tag1

Когда указаны строки запроса или параметры, не использующий LLM уровень разрешения графа знаний (с помощью DynamicToolOrchestrator) сопоставляет намерения запроса с известными тегами, именами или описаниями инструментов, с безопасным резервным вариантом и автоматическим фоновым обновлением кэша каждые 24 часа.


Примеры конфигурации MCP

Установите дополнительный пакет [mcp], ориентированный на коннекторы. В примерах используется searxng-mcp[mcp] для добавления FastMCP / FastAPI через agent-utilities[mcp]; необходимое ядро Agent Utilities по-прежнему включает epistemic-graph[full]. Дополнительный пакет [agent-runtime] дополнительно включает оркестрацию моделей.

Транспорт stdio (локальные IDE — Cursor, Claude Desktop, VS Code)

{
  "mcpServers": {
    "searxng-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "searxng-mcp[mcp]",
        "searxng-mcp"
      ],
      "env": {
        "MCP_TOOL_MODE": "intent",
        "SEARCH_APPTOOL": "true",
        "SEARXNG_EMBEDDED": "true",
        "SEARXNG_KG_INGEST": "true",
        "USE_RANDOM_INSTANCE": "false"
      }
    }
  }
}

Ссылки на среду выполнения требуют лаунчера с поддержкой алиасов, такого как GraphOS. Другие лаунчеры должны опускать эти записи и внедрять разрешенные значения через собственную границу секретов среды выполнения.

Транспорт Streamable-HTTP (сетевой / продакшен)

{
  "mcpServers": {
    "searxng-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "searxng-mcp[mcp]",
        "searxng-mcp",
        "--transport",
        "streamable-http",
        "--port",
        "8000"
      ],
      "env": {
        "TRANSPORT": "streamable-http",
        "HOST": "127.0.0.1",
        "PORT": "8000",
        "MCP_TOOL_MODE": "intent",
        "SEARCH_APPTOOL": "true",
        "SEARXNG_EMBEDDED": "true",
        "SEARXNG_KG_INGEST": "true",
        "USE_RANDOM_INSTANCE": "false"
      }
    }
  }
}

В качестве альтернативы подключитесь к предварительно развернутому экземпляру Streamable-HTTP по url:

{
  "mcpServers": {
    "searxng-mcp": {
      "url": "http://localhost:8000/searxng-mcp/mcp"
    }
  }
}

Запустите проверенный образ контейнера как дочерний процесс stdio с минимальными привилегиями (без слушателя или опубликованного порта):

docker run -i --rm \
  --read-only \
  --cap-drop=ALL \
  --security-opt=no-new-privileges \
  --pids-limit=256 \
  --tmpfs /tmp:rw,noexec,nosuid,nodev,size=64m \
  -e TRANSPORT=stdio \
  -e MCP_TOOL_MODE=intent \
  -e SEARCH_APPTOOL=true \
  -e SEARXNG_EMBEDDED=true \
  -e SEARXNG_KG_INGEST=true \
  -e USE_RANDOM_INSTANCE=false \
  registry.example.invalid/searxng-mcp@sha256:<digest> searxng-mcp

Для контейнерного сетевого HTTP укажите аутентифицированный TLS-вход (или прямой серверный TLS), точный MCP_ALLOWED_HOSTS и точную политику CIDR доверенного прокси через профиль развертывания, принадлежащий оператору. Генератор не создает неаутентифицированный слушатель вне loopback.

Автосгенерировано из env-поверхности, считанной из кода (MCP_TOOL_MODE + переменные пакета) — не редактировать.

Дополнительные параметры развертывания

searxng-mcp может работать как локальный процесс stdio или контейнер, либо за удаленной сетевой границей. Руководство по развертыванию содержит подробный транспортный контракт.

  • Локальный контейнер — запустите проверенный неизменяемый образ как дочерний процесс stdio с минимальными привилегиями, без слушателя или опубликованного порта.

  • Удаленный URL — подключитесь через предоставленный оператором аутентифицированный HTTPS-вход. Храните его URL, исходящие ссылки на идентификаторы, профиль доверия и точный MCP_ALLOWED_HOSTS в AgentConfig.

Агент

Этот репозиторий содержит полностью интегрированного графового агента Pydantic AI. Он общается через Agent Control Protocol (ACP) и бесшовно взаимодействует с Agent Web UI (AG-UI) и терминальным интерфейсом.

Запуск CLI агента

Чтобы запустить интерактивного агента командной строки:

# Set credentials
export SEARXNG_URL="your_value"

# Run the agent server
searxng-agent --provider openai --model-id gpt-4o

Оркестрация Docker Compose

Следующий docker/agent.compose.yml настраивает агента, веб-интерфейс и терминальный интерфейс вместе:

version: '3.8'

services:
  searxng-mcp-mcp:
    image: example/searxng-mcp@sha256:<digest>
    container_name: searxng-mcp-mcp
    hostname: searxng-mcp-mcp
    restart: always
    env_file:
      - ../.env
    environment:
      - PYTHONUNBUFFERED=1
      - HOST=0.0.0.0
      - PORT=8000
      - TRANSPORT=streamable-http
    ports:
      - "8000:8000"
    healthcheck:
      test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

  searxng-mcp-agent:
    image: example/searxng-mcp@sha256:<digest>
    container_name: searxng-mcp-agent
    hostname: searxng-mcp-agent
    restart: always
    depends_on:
      - searxng-mcp-mcp
    env_file:
      - ../.env
    command: [ "searxng-agent" ]
    environment:
      - PYTHONUNBUFFERED=1
      - HOST=0.0.0.0
      - PORT=9001
      - MCP_URL=http://searxng-mcp-mcp:8000/mcp
      - PROVIDER=${PROVIDER:-openai}
      - MODEL_ID=${MODEL_ID:-gpt-4o}
      - ENABLE_WEB_UI=True
      - ENABLE_OTEL=True
    ports:
      - "9001:9001"
    healthcheck:
      test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:9001/health')"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

Подробные объяснения архитектуры графовых узлов, настройки пользовательских навыков и руководства по агентной трассировке доступны в docs/deployment.md.


Безопасность и управление

Построенный непосредственно на готовом к корпоративному использованию ядре agent-utilities, полностью поддерживает стандартные параметры безопасности:

Контроль доступа и применение политик

  • Политики Eunomia: детальная авторизация инструментов на основе политик. Поддерживает режимы none, локальный embedded (mcp_policies.json) или централизованный remote.

  • Делегирование OIDC-токенов: соответствует обмену токенами RFC 8693 для передачи аутентифицирующих учетных данных пользователя от Web UI / ACP → Agent → MCP.

  • Ограниченные учетные данные: контекст выполнения ограничен конкретной идентичностью вызывающего.

Сетка безопасности времени выполнения

Возможность

Функциональность

Включение

Защита инструментов

Проверка чувствительности с валидацией с участием человека

Включено по умолчанию

Защита от инъекций в промпты

Сканирование ввода, мониторинг повторений и блокировка рекурсивных циклов

Включено по умолчанию

Защита безопасности контекста

Детекторы зависших циклов и упреждающие предупреждения о переполнении контекста

Включено по умолчанию


Переменные окружения

Переменные окружения пакета

Variable

Example

Description

HOST

0.0.0.0

PORT

8000

TRANSPORT

stdio

варианты: stdio, streamable-http, sse

SEARCH_APPTOOL

true

отключает MCP-приложение searxng_search_app (поисковый UI ui://)

ENABLE_OTEL

True

OTEL_EXPORTER_OTLP_ENDPOINT

http://localhost:8080/api/public/otel

OTEL_EXPORTER_OTLP_PUBLIC_KEY_REF

secret://telemetry/otlp-public-key

OTEL_EXPORTER_OTLP_SECRET_KEY_REF

secret://telemetry/otlp-secret-key

OTEL_EXPORTER_OTLP_PROTOCOL

http/protobuf

EUNOMIA_TYPE

none

варианты: none, embedded, remote

EUNOMIA_POLICY_FILE

mcp_policies.json

EUNOMIA_REMOTE_URL

http://eunomia-server:8000

SEARXNG_INSTANCE_URL

—

Оставьте обе пустыми, чтобы использовать встроенный/встраиваемый экземпляр SearXNG (по умолчанию — см. SEARXNG_EMBEDDED ниже). Задайте одну, чтобы указать на внешний экземпляр (например, собственный http://searxng.arpa флота) — явный URL всегда имеет приоритет над встроенным экземпляром.

SEARXNG_URL

—

SEARXNG_USERNAME

—

SEARXNG_PASSWORD

secret-injected

внедряется из секрета

USE_RANDOM_INSTANCE

false

SEARXNG_KG_INGEST

true

SEARXNG_EMBEDDED

true

Автономный поиск без настройки: когда SEARXNG_URL/SEARXNG_INSTANCE_URL не заданы, запускает и использует приватный экземпляр SearXNG, доступный только через loopback, которым владеет этот MCP-сервер (требуется дополнение searxng-mcp[embedded]; без него — молча ничего не делает).

XDG_CONFIG_HOME

—

Где находится переопределяемый пользователем settings.yml встроенного экземпляра: $XDG_CONFIG_HOME/searxng-mcp/settings.yml. По умолчанию — ~/.config.

Унаследованные переменные agent-utilities (применяются к каждому коннектору)

Variable

Example

Description

MCP_TOOL_MODE

intent

Поверхность инструментов: intent | condensed | verbose | both

MCP_ENABLED_TOOLS

—

Разрешённый список инструментов через запятую

MCP_DISABLED_TOOLS

—

Запрещённый список инструментов через запятую

MCP_ENABLED_TAGS

—

Разрешённый список тегов через запятую

MCP_DISABLED_TAGS

—

Запрещённый список тегов через запятую

MCP_CLIENT_AUTH

—

Исходящая аутентификация дочернего MCP: oidc-client-credentials | basic | none

OIDC_CLIENT_ID

—

OIDC-идентификатор клиента (аутентификация сервисной учётной записи)

OIDC_CLIENT_SECRET_REF

secret://identity/oidc-client-secret

Ссылка на секрет времени выполнения для OIDC-сервисной учётной записи

MCP_BASIC_AUTH_USERNAME

—

Имя пользователя HTTP Basic (MCP_CLIENT_AUTH=basic)

MCP_BASIC_AUTH_PASSWORD_REF

secret://identity/mcp-basic-password

Ссылка на секрет времени выполнения для HTTP Basic-аутентификации (MCP_CLIENT_AUTH=basic)

DEBUG

False

Подробное журналирование

PYTHONUNBUFFERED

1

Небуферизованный stdout (рекомендуется в контейнерах)

MCP_URL

http://localhost:8000/mcp

URL MCP-сервера, к которому подключается агент

PROVIDER

openai

LLM-провайдер для агента

MODEL_ID

gpt-4o

Идентификатор модели для агента

ENABLE_WEB_UI

True

Обслуживать веб-интерфейс AG-UI

20 переменных пакета + 16 унаследованных. Автоматически сгенерировано из .env.example + общего набора agent-utilities — не редактировать.

Каждая переменная, которую читает сервер. См. .env.example как отправную точку для копирования.

Подключение SearXNG

{"type": "text"}

Переменная

Описание

По умолчанию

SEARXNG_URL

Базовый URL экземпляра SearXNG для запросов

http://localhost:8080

SEARXNG_INSTANCE_URL

Явное переопределение URL экземпляра

—

SEARXNG_USERNAME

Имя пользователя для базовой аутентификации экземпляра SearXNG (если защищено)

—

SEARXNG_PASSWORD

Пароль для базовой аутентификации экземпляра SearXNG (если защищено)

—

USE_RANDOM_INSTANCE

Выбрать случайный публичный экземпляр SearXNG вместо SEARXNG_URL

false

SEARXNG_KG_INGEST

Нативно загружать каждый результат поиска в настроенный полноценный движок графа знаний; сбои явные

true

SEARXNG_EMBEDDED

Поиск без конфигурации: когда SEARXNG_URL/SEARXNG_INSTANCE_URL не заданы, запустить и использовать частный экземпляр SearXNG, доступный только через loopback, принадлежащий этому серверу (требуется pip install searxng-mcp[embedded]; без этого дополнительного пакета — тихая заглушка)

true

MCP-сервер / транспорт

Переменная

Описание

По умолчанию

TRANSPORT

stdio, streamable-http или sse

stdio

HOST

Хост для привязки (HTTP-транспорты)

0.0.0.0

PORT

Порт для привязки (HTTP-транспорты)

8000

MCP_TOOL_MODE

Поверхность инструментов: condensed, verbose или both

condensed

MCP_ENABLED_TOOLS / MCP_DISABLED_TOOLS

Список разрешённых/запрещённых инструментов через запятую

—

MCP_ENABLED_TAGS / MCP_DISABLED_TAGS

Список разрешённых/запрещённых тегов через запятую

—

Телеметрия и управление

Переменная

Описание

По умолчанию

ENABLE_OTEL

Включить экспорт OpenTelemetry

True

OTEL_EXPORTER_OTLP_ENDPOINT

Конечная точка коллектора OTLP

—

OTEL_EXPORTER_OTLP_PUBLIC_KEY / OTEL_EXPORTER_OTLP_SECRET_KEY

Ключи аутентификации OTLP

—

OTEL_EXPORTER_OTLP_PROTOCOL

Протокол OTLP (например, http/protobuf)

—

EUNOMIA_TYPE

Режим авторизации: none, embedded, remote

none

EUNOMIA_POLICY_FILE

Встроенный файл политик

mcp_policies.json

EUNOMIA_REMOTE_URL

URL удалённого сервера Eunomia

—


Установка

Выберите дополнительный пакет, соответствующий тому, что вы хотите запустить:

Дополнительный пакет

Устанавливает

Используйте, когда

searxng-mcp[mcp]

MCP-сервер, ориентированный на коннектор (agent-utilities[mcp] — FastMCP/FastAPI + epistemic-graph[full])

Вы запускаете только MCP-сервер (наименьшая установка / образ)

searxng-mcp[agent]

Среда выполнения агента (agent-utilities[agent-runtime,logfire] — оркестрация моделей + epistemic-graph[full])

Вы запускаете интегрированного агента

searxng-mcp[all]

Всё (mcp + agent + logfire)

Разработка / обе поверхности

# Connector-focused MCP server (includes the shared graph engine)
uv pip install "searxng-mcp[mcp]"

# Agent runtime (adds model orchestration to the shared graph engine)
uv pip install "searxng-mcp[agent]"

# Everything (development)
uv pip install "searxng-mcp[all]"      # or: python -m pip install "searxng-mcp[all]"

Образы контейнеров (:mcp и :agent)

Один многоступенчатый docker/Dockerfile собирает два образа подходящего размера, выбираемых с помощью --target:

Тег образа

Целевая сборка

Содержимое

Точка входа

example/searxng-mcp:mcp

--target mcp

searxng-mcp[mcp] — ориентированный на коннектор, включает epistemic-graph[full]; без стека оркестрации моделей

searxng-mcp

example/searxng-mcp@sha256:<digest>

--target agent (по умолчанию)

searxng-mcp[agent] — среда выполнения агента, оркестрация моделей + epistemic-graph[full]

searxng-agent

docker build --target mcp   -t example/searxng-mcp:mcp    docker/   # connector-focused MCP server
docker build --target agent -t example/searxng-mcp:agent-local docker/   # agent runtime

docker/mcp.compose.yml запускает ориентированный на коннектор сервер :mcp; docker/agent.compose.yml запускает агента (неизменяемый дайджест агента) с совместно размещённым сайдкаром :mcp.

База данных графа знаний (epistemic-graph)

Как [mcp], так и [agent] включают движок epistemic-graph через обязательную базовую зависимость Agent Utilities (epistemic-graph[full]). Дополнительный пакет [mcp] сохраняет сервер ориентированным на коннектор; [agent] дополнительно включает оркестрацию моделей. Локальные развёртывания могут использовать встроенный движок. Для продакшена или общего состояния запускайте epistemic-graph как выделенную службу базы данных и настройте среду выполнения для её использования. Рецепты развёртывания (одноузловой + Raft HA), конфигурация подключения и диаграммы архитектуры описаны в руководстве по развёртыванию epistemic-graph.


Документация

Полная документация опубликована на официальном сайте документации и является рекомендуемым справочником по установке, развёртыванию и повседневной эксплуатации.

Страница

Содержимое

Установка

pip, исходный код, дополнительные пакеты, готовый образ Docker

Развёртывание

запуск MCP и агентских серверов, Compose, Caddy + Technitium, конфигурация окружения

Использование

инструмент web_search, Python API, консольные скрипты

Базовая платформа

развёртывание SearXNG с помощью Docker

Обзор

роль в экосистеме и стандартизированный шаблон пакета

Концепции

реестр концепций (CONCEPT:SRX-*)

AGENTS.md — каноническое руководство для участников и агентов.


Владельцы репозитория

GitHub followers GitHub User's stars


Вклад

Вклад приветствуется! Пожалуйста, обеспечьте качество кода, выполнив локальные проверки перед отправкой запросов на включение:

  • Форматируйте код с помощью ruff format .

  • Проверяйте код с помощью ruff check .

  • Проверяйте безопасность типов с помощью mypy .

  • Выполняйте тестовые наборы с помощью pytest

Развёртывание с помощью agent-utilities-deployment

Разверните этот пакет с помощью консолидированного рабочего процесса agent-utilities-deployment. Он выбирает путь установленного пакета, редактируемого исходного кода или неизменяемого контейнера; записывает только ссылки на секреты времени выполнения и TLS-профили в AgentConfig; и выполняет проверки doctor, регистрации, политик, наблюдаемости и отката. Попросите вашего агента "развернуть searxng-mcp с помощью agent-utilities-deployment".

Режим установки

Команда

Установленный пакет

uv tool install "searxng-mcp[mcp]", затем запустите searxng-mcp

Редактируемый исходный код

uv pip install -e ".[agent]", затем запустите searxng-mcp

Неизменяемый контейнер

разверните registry.example.invalid/searxng-mcp@sha256:<digest> через выбранный оператором оркестратор

Репозиторий не содержит профиля развёртывания, значений учётных данных, путей к сертификатам или конечных точек, зависящих от окружения. Предоставьте их во время выполнения через AgentConfig и настроенного поставщика секретов.

Контракт управляемых возможностей

Этот пакет поставляется с компактной канонической поверхностью навыков, а специализированные процедуры хранятся в виде связанных рабочих процессов. Текущие инструменты MCP, метаданные навыков, connector_manifest.yml, онтология, сопоставления, формы, фикстуры, миграции, отпечатки схем инструментов и сертификационные метаданные образуют единый версионируемый контракт возможностей. Проверяйте их вместе; не полагайтесь на устаревшие имена инструментов или исторические обёртки навыков для конкретных задач.

Runtime-эндпоинты, учетные данные, доверие к сертификатам, идентичность тенанта, хранение и политика наблюдаемости являются входными параметрами развертывания и никогда не являются упакованными значениями. См. Конфигурация, доверие и конфиденциальность перед включением сетевого транспорта, приема коннекторов, делегирования GraphOS или экспорта трассировок.

Available Tools

6 tools
searxng_get_settingsSearxng Get SettingsA
Read-onlyIdempotent

Read the EMBEDDED SearXNG instance's active settings.yml (CONCEPT:SR-KG.compute.embedded-instance): the user override at $XDG_CONFIG_HOME/searxng-mcp/settings.yml if one exists, else the packaged default, plus its path. Informational only when an external SEARXNG_URL is configured.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds genuine context beyond them: the precedence rule for which file is read, that the path is returned alongside the content, and the external-SEARXNG_URL caveat. The return shape is left to the existing output schema.

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?

One front-loaded sentence that leads with the action and resource, with no wasted framing. Minor clutter from the inline 'CONCEPT:SR-KG.compute.embedded-instance' tag, which adds nothing for an agent deciding how to call the tool.

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?

No parameters, an output schema covering the return value, and the description supplies the resolution logic and the external-URL caveat. Complete enough to call correctly; the only residual gap is that it does not explicitly point to searxng_set_settings as the modification counterpart.

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?

Zero parameters, so the baseline of 4 applies; there are no parameters whose semantics need explaining.

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?

States a specific verb (read) and resource (the embedded SearXNG instance's active settings.yml), and spells out the resolution order (user override at $XDG_CONFIG_HOME/searxng-mcp/settings.yml, else packaged default) plus the returned path. This clearly distinguishes it from siblings searxng_set_settings and searxng_reset_settings.

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

Usage Guidelines4/5

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

The clause 'Informational only when an external SEARXNG_URL is configured' tells the agent when the result is not meaningful, which is real routing guidance. It does not explicitly name the alternative (searxng_set_settings) for modification, so it stops short of full when/when-not/alternative framing.

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

searxng_reset_settingsSearxng Reset SettingsA
DestructiveIdempotent

Delete the EMBEDDED SearXNG user override settings.yml, reverting to the packaged default on the next spawn.

NameRequiredDescriptionDefault
apply_nowNoStop the running embedded instance (if any) so the NEXT search respawns it with the packaged default settings.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already disclose that this is destructive, idempotent, and not read-only. The description adds useful behavioral context beyond that: it identifies exactly what is destroyed (the embedded user override settings.yml) and when the packaged default takes effect (on the next spawn).

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 a single, front-loaded sentence with no wasted words. It states the action, target file, and consequence immediately.

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?

The tool is simple, the input schema fully documents the only parameter, annotations cover safety traits, and an output schema exists. The description supplies the key behavioral effect, though it could explicitly mention the immediate-stop behavior governed by apply_now for a fully self-contained description.

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%, and the single apply_now parameter is fully documented in the schema itself. The description does not add further parameter semantics, so the baseline of 3 is appropriate when the schema carries this responsibility.

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

Purpose4/5

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

The description uses a specific verb ("Delete") and resource ("EMBEDDED SearXNG user override settings.yml") and states the resulting effect (reverting to the packaged default on the next spawn). This clearly distinguishes it from read/write siblings like get_settings and set_settings, though it does not explicitly route to them.

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

Usage Guidelines3/5

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

The phrase "reverting to the packaged default" implies this is used when the user wants to discard custom SearXNG overrides, but the description does not explicitly say when to use this versus searxng_set_settings or searxng_get_settings. No alternatives or exclusions are named.

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

searxng_search_appSearxng Search AppA

Launch an interactive SearXNG search-UI app: a query box, category filters, and a clickable results list, backed by the existing web_search tool through the host-mediated MCP Apps bridge. Use this when a human should see and interact with search results visually rather than read raw JSON. Does NOT drive a browser or render arbitrary web pages -- only this search workflow.

NameRequiredDescriptionDefault
queryNoOptional initial query to run on load.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the backing mechanism (web_search via the host-mediated MCP Apps bridge) and the capability boundaries of the launched app. It stops short of stating what launching twice does or how app/session lifetime behaves, which are the remaining behavioral unknowns for a UI-launching tool.

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?

Three sentences, front-loaded with what is launched, followed by the selection rule and then the scope exclusions. Every clause contributes and nothing is repeated from the schema.

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 one-optional-parameter tool with an output schema, the description covers purpose, mechanism, and boundaries adequately. It is slightly incomplete on app lifecycle semantics (what a second launch yields, whether state persists), which an agent may need to call it confidently in a multi-turn session.

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 coverage is 100% and the single optional 'query' parameter is already documented in the schema as an initial query run on load. The description adds no further parameter semantics (e.g., how an empty query behaves in the UI), so the baseline 3 applies.

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?

States a specific verb ('Launch') and a precisely scoped resource ('interactive SearXNG search-UI app'), then enumerates its components (query box, category filters, clickable results list). It explicitly distinguishes itself from web_search and from browser automation, so an agent can separate it from every sibling without opening a schema.

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?

Gives an explicit selection rule: use when a human should see and interact with results visually rather than read raw JSON, which maps directly onto choosing this over web_search. It also pre-empts the two most likely misuses by stating it does not drive a browser or render arbitrary web pages.

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

searxng_set_settingsSearxng Set SettingsA

Deep-merge overrides_json into the EMBEDDED SearXNG user override settings.yml (created on first use; the packaged default is never modified), then stop the running embedded instance so the next search respawns with the new settings (unless apply_now=false).

NameRequiredDescriptionDefault
mergeNoDeep-merge onto current settings (default) or replace the override file wholesale.
apply_nowNoStop the running embedded instance (if any) so the NEXT search respawns it with the new settings.
overrides_jsonNoJSON object of settings.yml overrides (e.g. '{"search": {"formats": ["html", "json", "csv"]}}'). Deep-merged onto the currently-active settings unless merge=false.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

With annotations only declaring readOnlyHint=false and destructiveHint=false, the description carries real added weight: it discloses that the packaged default is never modified, that the override file is created on first use, and that the running instance is stopped so the next search respawns. It does not say what happens to in-flight requests when the instance is stopped, or what happens on invalid JSON, which keeps it from a 5.

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?

A single dense sentence that front-loads the merge action and then the restart consequence. No wasted sentences. Mild clutter from reST double-backtick markup, but nothing that impedes parsing.

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?

Output schema exists, so return values need no explanation, and all three parameters are documented. The description covers the mutation's blast radius and the embedded-vs-packaged distinction. It is only missing error behavior and whether prior override content is recoverable after a wholesale replace.

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 three parameters in detail. The description adds only the default `apply_now=true` behavior and the deep-merge semantics for `overrides_json`. Baseline 3 is appropriate since the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource chain: deep-merge `overrides_json` into the embedded user override settings.yml and restart the embedded instance. That is far more than a restatement of the name. It does not explicitly contrast itself with siblings like `searxng_get_settings` or `searxng_reset_settings`, so sibling differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

Usage is implied well enough that an agent knows to call this to change settings, and it flags the `apply_now=false` path. However it never says when to prefer `searxng_reset_settings` over merging, or whether to read current settings with `searxng_get_settings` first. No explicit when-not guidance exists.

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.

  1. 5 tool updatesv2.3.2
    • Addedsearxng_get_settings
    • Addedsearxng_ingest_search
    • Addedsearxng_reset_settings
    • Addedsearxng_search_app
    • Addedsearxng_set_settings
  2. 1 tool updatev0.11.1
    • Changedweb_search13 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / categories / description
        Previous value: -"Categories to search in (e.g., 'general', 'images', 'news'). Default: null (all categories)."New value: +"Optional list of categories to search in (e.g. general, news, science, files, images, videos, music, it, social_media)"
      • changedInput schema / properties / engines / description
        Previous value: -"Specific search engines to use. Default: null (all available engines)."New value: +"Optional list of specific search engines to use"
      • changedInput schema / properties / language / default
        Previous value: -"en"New value: +"en-US"
      • changedInput schema / properties / language / description
        Previous value: -"Language code for search results (e.g., 'en', 'de', 'fr'). Default: 'en'"New value: +"Language code for search results (e.g. en-US)"
      • removedInput schema / properties / max_results
        Removed value: -{
        -  "default": 10,
        -  "description": "Maximum number of search results to return. Range: 1-50. Default: 10.",
        -  "maximum": 50,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • changedInput schema / properties / pageno / description
        Previous value: -"Page number for results. Must be minimum 1. Default: 1."New value: +"Page number of results to fetch"
      • removedInput schema / properties / pageno / minimum
        Removed value: -1
      • removedInput schema / properties / query / default
        Removed value: -null
      • changedInput schema / properties / query / description
        Previous value: -"Search query"New value: +"Search query to submit to SearXNG"
      • removedInput schema / properties / safesearch
        Removed value: -{
        -  "default": 1,
        -  "description": "Safe search level: 0 (off), 1 (moderate), 2 (strict). Default: 1 (moderate).",
        -  "type": "integer"
        -}
      • removedInput schema / properties / time_range
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Time range for search results. Options: 'day', 'week', 'month', 'year'. Default: null (no time restriction)."
        -}
      • addedInput schema / required
        Added value: +[
        +  "query"
        +]
  3. 1 tool updatev1.0.0
    • First observedweb_search

TDQS

A3.8/5.0

Scored across 6 tools

Disambiguation4/5

The tools are mostly distinct: settings get/set/reset are clearly separated, and the UI app is visibly different from raw search. However, web_search and searxng_ingest_search both perform SearXNG searches, so an agent must read descriptions carefully to choose between plain search and graph-ingesting search.

Naming Consistency4/5

Five tools consistently use the searxng_ prefix with clear verb/object naming (ingest_search, get_settings, set_settings, reset_settings, search_app). The lone web_search tool is an understandable but noticeable deviation from that pattern.

Tool Count5/5

Six tools is well-scoped for a SearXNG server: core search, graph ingestion, settings lifecycle, and an interactive UI. Each tool has a clear purpose, and none feels redundant or excessive.

Completeness4/5

The surface covers search, ingestion, full embedded-settings lifecycle, and an interactive UI, so there are no major dead ends. Minor gaps remain around richer search-result inspection or external-instance configuration, but core workflows are covered.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to perform privacy-respecting web searches through SearXNG, with support for multiple search engines, categories, and advanced filtering options.
    221 npm
    27
    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
    221 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables web search capabilities via a SearXNG instance, allowing for filtered searches across categories like news, images, and science. It supports multi-language queries, time-range filtering, and safe search options to provide formatted results with metadata.
    1
    221 npm
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables privacy-respecting web, image, video, and news searches through SearxNG metasearch engine, with options for URL fetching and time filtering.
    5
    67 PyPI
    -