MCP-сервер для поиска через SearxNG
  • Python 90.9%
  • Makefile 6.8%
  • Dockerfile 2.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-06-16 13:52:14 +03:00
mcp_searxng fix: minor issues; add Makefile 2026-06-15 22:25:06 +03:00
tests fix: minor issues; add Makefile 2026-06-15 22:25:06 +03:00
.dockerignore feat: base logic 2026-06-15 19:45:56 +03:00
.env.example fix: minor issues; add Makefile 2026-06-15 22:25:06 +03:00
.gitignore feat: base logic 2026-06-15 19:45:56 +03:00
docker-compose.yml fix: minor issues; add Makefile 2026-06-15 22:25:06 +03:00
Dockerfile fix: uv in image 2026-06-15 22:42:21 +03:00
Makefile fix: minor issues; add Makefile 2026-06-15 22:25:06 +03:00
pyproject.toml feat: base logic 2026-06-15 19:45:56 +03:00
README.md feat: update README 2026-06-16 13:52:14 +03:00
uv.lock feat: base logic 2026-06-15 19:45:56 +03:00

MCP-сервер для поиска в интернете через SearxNG

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

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

Скопируйте .env.example в .env и заполните нужные значения.

Обязательные:

Переменная Описание
SEARXNG_URL URL JSON-эндпоинта SearxNG (например https://search.dimhost.ru/search)
MCP_AUTH_TOKEN Секретный токен для Bearer-авторизации, минимум 32 символа

Опциональные:

Переменная По умолчанию Описание
SEARXNG_TIMEOUT 10 Таймаут запроса к SearxNG (секунды)
MAX_RESULTS_CAP 20 Максимальное число результатов поиска
HOST 0.0.0.0 Адрес, на котором слушает сервер
PORT 8000 Порт сервера
LOG_LEVEL INFO Уровень логирования

Локальный запуск

uv sync
uv run python -m mcp_searxng

Запуск через Docker

cp .env.example .env
# Установите MCP_AUTH_TOKEN в .env (случайная строка >= 32 символов)
docker compose up -d --build

Сборка и публикация образа

Образ публикуется в Forgejo-реестр git.dev.lab/dmitry/mcp-searxng. Сборка управляется через Makefile:

make build              # локальная сборка linux/amd64 (для docker run / compose up)
docker login git.dev.lab
make push               # мультиарч (amd64+arm64) сборка и публикация в реестр
make push TAG=v1.2.3    # с конкретным тегом (по умолчанию latest)

make all эквивалентно make push. Переменные REGISTRY и TAG можно переопределять: make push REGISTRY=... TAG=....

Для мультиарч-публикации нужен docker buildx (входит в Docker Desktop) — цель push сама создаёт билдер mcp-searxng-builder с драйвером docker-container, если его ещё нет. image: в docker-compose.yml указывает на тот же образ реестра.

MCP-эндпоинт

Сервер использует транспорт Streamable HTTP. URL эндпоинта:

http://<host>:8000/mcp

Клиенты должны передавать заголовок авторизации:

Authorization: Bearer <MCP_AUTH_TOKEN>

Подключение MCP-клиентов

Сервер удалённый, транспорт Streamable HTTP, авторизация статичным Bearer-токеном. В примерах ниже подставь публичный URL сервера (за reverse-proxy с TLS — https://<домен>/mcp; для локальной проверки — http://localhost:8000/mcp) и значение MCP_AUTH_TOKEN.

BoltAI

BoltAI запускает MCP-серверы как локальные stdio-процессы, поэтому удалённый сервер подключается через мост mcp-remote (этот способ рекомендует и документация BoltAI). Settings → Plugins → MCP Servers → Edit Config, добавь в mcp.json:

{
  "mcpServers": {
    "searxng": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://<домен>/mcp", "--header", "Authorization:${AUTH_HEADER}"],
      "env": { "AUTH_HEADER": "Bearer <MCP_AUTH_TOKEN>" }
    }
  }
}

Заголовок вынесен в переменную AUTH_HEADER, потому что mcp-remote режет значение --header по пробелу — так пробел остаётся внутри значения переменной. Нужен установленный Node.js (npx).

Claude Desktop

В свежих версиях удалённые серверы добавляются нативно: Settings → Connectors → Add custom connector → транспорт Streamable HTTP, URL https://<домен>/mcp, а в разделе Authentication/Advanced впиши Bearer-токен (<MCP_AUTH_TOKEN>).

Если версия без нативной поддержки удалённых серверов — используй тот же мост mcp-remote, что и для BoltAI, в claude_desktop_config.json (Settings → Developer → Edit Config).

Cursor

Cursor поддерживает удалённые HTTP-серверы нативно. В ~/.cursor/mcp.json (глобально) или .cursor/mcp.json (в проекте):

{
  "mcpServers": {
    "searxng": {
      "url": "https://<домен>/mcp",
      "headers": { "Authorization": "Bearer ${env:MCP_AUTH_TOKEN}" }
    }
  }
}

Cursor подставляет переменные окружения через ${env:VAR} в полях url и headers, так что токен не хранится в файле в открытом виде.

Healthcheck

GET http://<host>:8000/health

Ответ (без авторизации):

{"status": "ok"}

Единственный MCP-инструмент — search. Принимает параметры:

Параметр Тип По умолчанию Описание
query string обязательный Поисковый запрос
max_results int 10 Количество результатов (не более MAX_RESULTS_CAP)

Каждый результат содержит поля: title, url, content, engine, score.


Пример curl-запроса к серверу

curl -s -G "https://search.dimhost.ru/search" \
  -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" \
  --data-urlencode "q=MCP protocol" \
  --data "format=json"

Пример ответа

{
  "query": "MCP protocol",
  "results": [
    {
      "url": "https://modelcontextprotocol.io/docs/getting-started/intro",
      "title": "What is the Model Context Protocol (MCP)? - Model Context Protocol",
      "content": "MCP (Model Context Protocol) is an open-source standard for connecting AI applications to external systems. Using MCP, AI applications like Claude or ChatGPT ...",
      "thumbnail": null,
      "engine": "google",
      "template": "default.html",
      "parsed_url": [
        "https",
        "modelcontextprotocol.io",
        "/docs/getting-started/intro",
        "",
        "",
        ""
      ],
      "img_src": "",
      "priority": "",
      "engines": [
        "startpage",
        "google"
      ],
      "positions": [
        1,
        1
      ],
      "score": 4.0,
      "category": "general",
      "publishedDate": null
    },
    {
      "url": "https://habr.com/ru/articles/879970/",
      "title": "Model Context Protocol (MCP): Стандартизация взаимодействия ...",
      "content": "6 февр. 2025 г. · Model Context Protocol  это протокол, который стандартизирует интерфейс между клиентом и MCP сервером. Архитектура MCP. На данный момент ...",
      "thumbnail": null,
      "engine": "google",
      "template": "default.html",
      "parsed_url": [
        "https",
        "habr.com",
        "/ru/articles/879970/",
        "",
        "",
        ""
      ],
      "img_src": "",
      "priority": "",
      "engines": [
        "startpage",
        "google"
      ],
      "positions": [
        2,
        7
      ],
      "score": 1.2857142857142856,
      "category": "general",
      "publishedDate": null
    },
    {
      "url": "https://en.wikipedia.org/wiki/Model_Context_Protocol",
      "title": "Model Context Protocol - Wikipedia",
      "content": "MCP provides a standardized interface for reading files, executing functions, and handling contextual prompts. Following its announcement, the protocol was ...",
      "thumbnail": null,
      "engine": "google",
      "template": "default.html",
      "parsed_url": [
        "https",
        "en.wikipedia.org",
        "/wiki/Model_Context_Protocol",
        "",
        "",
        ""
      ],
      "img_src": "",
      "priority": "",
      "engines": [
        "startpage",
        "google"
      ],
      "positions": [
        3,
        4
      ],
      "score": 1.1666666666666665,
      "category": "general",
      "publishedDate": null
    },
    {
      "url": "https://habr.com/ru/articles/893482/",
      "title": "MCP (Model Context Protocol) - Habr",
      "content": "Mar 23, 2025 ... Основная цель MCP — создание унифицированного протокола связи между большими языковыми моделями (LLM) и внешними источниками данных и ...",
      "publishedDate": null,
      "engine": "startpage",
      "template": "default.html",
      "parsed_url": [
        "https",
        "habr.com",
        "/ru/articles/893482/",
        "",
        "",
        ""
      ],
      "img_src": "",
      "thumbnail": "",
      "priority": "",
      "engines": [
        "startpage"
      ],
      "positions": [
        2
      ],
      "score": 0.5,
      "category": "general"
    },
    {
      "url": "https://github.com/modelcontextprotocol",
      "title": "Model Context Protocol - GitHub",
      "content": "The Model Context Protocol (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools.",
      "publishedDate": null,
      "engine": "startpage",
      "template": "default.html",
      "parsed_url": [
        "https",
        "github.com",
        "/modelcontextprotocol",
        "",
        "",
        ""
      ],
      "img_src": "",
      "thumbnail": "",
      "priority": "",
      "engines": [
        "startpage"
      ],
      "positions": [
        3
      ],
      "score": 0.3333333333333333,
      "category": "general"
    },
    {
      "url": "https://blog.albato.ru/obzor-na-model-context-protocol-mcp-ot-anthropic/",
      "title": "Обзор на Model Context Protocol (MCP) от Anthropic - Блог Albato.ru",
      "content": "19 мая 2025 г. · MCP — это протокол, который позволяет ИИ-агентам не только отвечать на запросы пользователей, но и выполнять реальные действия во внешних ...",
      "thumbnail": null,
      "engine": "google",
      "template": "default.html",
      "parsed_url": [
        "https",
        "blog.albato.ru",
        "/obzor-na-model-context-protocol-mcp-ot-anthropic/",
        "",
        "",
        ""
      ],
      "img_src": "",
      "priority": "",
      "engines": [
        "google"
      ],
      "positions": [
        4
      ],
      "score": 0.25,
      "category": "general",
      "publishedDate": null
    },
    {
      "url": "https://bigdataschool.ru/blog/news/machine-learning/what-is-mcp-for-llm/",
      "title": "Что MCP-протокол, как он устроен и почему важен для LLM",
      "content": "Оценка 4,9(96)7 апр. 2025 г. · Model Context Protocol (MCP) предоставляет стандартизированный способ подключения LLM к необходимому им контексту. Он позволяет разработчикам ...",
      "thumbnail": null,
      "engine": "google",
      "template": "default.html",
      "parsed_url": [
        "https",
        "bigdataschool.ru",
        "/blog/news/machine-learning/what-is-mcp-for-llm/",
        "",
        "",
        ""
      ],
      "img_src": "",
      "priority": "",
      "engines": [
        "google"
      ],
      "positions": [
        5
      ],
      "score": 0.2,
      "category": "general",
      "publishedDate": null
    },
    {
      "url": "https://www.anthropic.com/news/model-context-protocol",
      "title": "Introducing the Model Context Protocol - Anthropic",
      "content": "Nov 25, 2024 ... The Model Context Protocol (MCP) is an open standard for connecting AI assistants to the systems where data lives, including content ...",
      "publishedDate": null,
      "engine": "startpage",
      "template": "default.html",
      "parsed_url": [
        "https",
        "www.anthropic.com",
        "/news/model-context-protocol",
        "",
        "",
        ""
      ],
      "img_src": "",
      "thumbnail": "",
      "priority": "",
      "engines": [
        "startpage"
      ],
      "positions": [
        5
      ],
      "score": 0.2,
      "category": "general"
    },
    {
      "url": "https://habr.com/ru/companies/mws/articles/1042792/",
      "title": "Как создавать умных ИИ-агентов: работа с MCP - Habr",
      "content": "4 июн. 2026 г. · Для решения этих проблем был создан протокол Model Context Protocol (MCP), призванный стандартизировать взаимодействие между LLM и внешними ...",
      "thumbnail": null,
      "engine": "google",
      "template": "default.html",
      "parsed_url": [
        "https",
        "habr.com",
        "/ru/companies/mws/articles/1042792/",
        "",
        "",
        ""
      ],
      "img_src": "",
      "priority": "",
      "engines": [
        "google"
      ],
      "positions": [
        6
      ],
      "score": 0.16666666666666666,
      "category": "general",
      "publishedDate": null
    },
    {
      "url": "https://anthropic.skilljar.com/introduction-to-model-context-protocol",
      "title": "Introduction to Model Context Protocol - Anthropic Courses",
      "content": "This course covers MCP, a protocol for connecting Claude to external services and data sources without manually writing tool schemas.",
      "publishedDate": null,
      "engine": "startpage",
      "template": "default.html",
      "parsed_url": [
        "https",
        "anthropic.skilljar.com",
        "/introduction-to-model-context-protocol",
        "",
        "",
        ""
      ],
      "img_src": "",
      "thumbnail": "",
      "priority": "",
      "engines": [
        "startpage"
      ],
      "positions": [
        6
      ],
      "score": 0.16666666666666666,
      "category": "general"
    },
    {
      "url": "https://blog.logto.io/ru/what-is-mcp",
      "title": "Что такое MCP (Протокол Контекста Модели) и как он работает",
      "content": "3 мар. 2025 г. · MCP (Протокол Контекста Модели) — это открытый универсальный протокол, который стандартизирует, как приложения предоставляют информацию о ...",
      "thumbnail": null,
      "engine": "google",
      "template": "default.html",
      "parsed_url": [
        "https",
        "blog.logto.io",
        "/ru/what-is-mcp",
        "",
        "",
        ""
      ],
      "img_src": "",
      "priority": "",
      "engines": [
        "google"
      ],
      "positions": [
        7
      ],
      "score": 0.14285714285714285,
      "category": "general",
      "publishedDate": null
    },
    {
      "url": "https://www.youtube.com/watch?v=kOhLoixrJXo&vl=ru",
      "title": "MCP In 26 Minutes (Model Context Protocol) - YouTube",
      "content": "15 окт. 2025 г. · ... Protocol (MCP), how it works, how to use MCP servers, and how to build your own MCP servers with both code & no code. Want to get ahead ...",
      "thumbnail": null,
      "engine": "google",
      "template": "default.html",
      "parsed_url": [
        "https",
        "www.youtube.com",
        "/watch",
        "",
        "v=kOhLoixrJXo&vl=ru",
        ""
      ],
      "img_src": "",
      "priority": "",
      "engines": [
        "google"
      ],
      "positions": [
        8
      ],
      "score": 0.125,
      "category": "general",
      "publishedDate": null
    },
    {
      "url": "https://cloud.google.com/discover/what-is-model-context-protocol",
      "title": "What is Model Context Protocol (MCP)? A guide | Google Cloud",
      "content": "Learn how the Model Context Protocol (MCP) standard allows LLMs to safely access external data and use tools, making AI more powerful and reliable.",
      "publishedDate": null,
      "engine": "startpage",
      "template": "default.html",
      "parsed_url": [
        "https",
        "cloud.google.com",
        "/discover/what-is-model-context-protocol",
        "",
        "",
        ""
      ],
      "img_src": "",
      "thumbnail": "",
      "priority": "",
      "engines": [
        "startpage"
      ],
      "positions": [
        8
      ],
      "score": 0.125,
      "category": "general"
    },
    {
      "url": "https://ru.wikipedia.org/wiki/Model_Context_Protocol",
      "title": "Model Context Protocol - Википедия",
      "content": "Model Context Protocol (сокр. MCP, «Протокол контекста модели») — открытый протокол прикладного уровня для взаимодействия языковых моделей (LLM) с внешними ...",
      "thumbnail": null,
      "engine": "google",
      "template": "default.html",
      "parsed_url": [
        "https",
        "ru.wikipedia.org",
        "/wiki/Model_Context_Protocol",
        "",
        "",
        ""
      ],
      "img_src": "",
      "priority": "",
      "engines": [
        "google"
      ],
      "positions": [
        9
      ],
      "score": 0.1111111111111111,
      "category": "general",
      "publishedDate": null
    },
    {
      "url": "https://modelcontextprotocol.io/specification/2025-11-25",
      "title": "Specification - Model Context Protocol",
      "content": "Nov 25, 2025 ... Model Context Protocol (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools.",
      "publishedDate": null,
      "engine": "startpage",
      "template": "default.html",
      "parsed_url": [
        "https",
        "modelcontextprotocol.io",
        "/specification/2025-11-25",
        "",
        "",
        ""
      ],
      "img_src": "",
      "thumbnail": "",
      "priority": "",
      "engines": [
        "startpage"
      ],
      "positions": [
        9
      ],
      "score": 0.1111111111111111,
      "category": "general"
    },
    {
      "url": "https://www.databricks.com/blog/what-is-model-context-protocol",
      "title": "What is the Model Context Protocol (MCP)? - Databricks",
      "content": "The Model Context Protocol (MCP) is an open standard that enables AI applications to connect seamlessly with external data sources, tools, and systems. Think of ...",
      "publishedDate": null,
      "engine": "startpage",
      "template": "default.html",
      "parsed_url": [
        "https",
        "www.databricks.com",
        "/blog/what-is-model-context-protocol",
        "",
        "",
        ""
      ],
      "img_src": "",
      "thumbnail": "",
      "priority": "",
      "engines": [
        "startpage"
      ],
      "positions": [
        10
      ],
      "score": 0.1,
      "category": "general"
    }
  ],
  "answers": [],
  "corrections": [],
  "infoboxes": [],
  "suggestions": [],
  "unresponsive_engines": [
    [
      "brave",
      "Приостановлено: слишком много запросов"
    ],
    [
      "duckduckgo",
      "КАПЧА"
    ],
    [
      "wikidata",
      "истекло время ожидания"
    ]
  ]
}